Imported Upstream version 5.25.3 44/136044/1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Wed, 28 Jun 2017 01:48:22 +0000 (10:48 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Wed, 28 Jun 2017 01:48:27 +0000 (10:48 +0900)
Change-Id: I9c8d6d15b5c0053b6bbda66517592e62b47f4ff2
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
501 files changed:
AUTHORS
Configure
Cross/config.sh-arm-linux
Cross/config.sh-arm-linux-n770
INSTALL
MANIFEST
META.json
META.yml
Makefile.SH
NetWare/Makefile
NetWare/config_H.wc
Porting/Maintainers.pl
Porting/config.sh
Porting/config_H
Porting/epigraphs.pod
Porting/manisort
Porting/perldelta_template.pod
Porting/pod_lib.pl
Porting/pod_rules.pl
Porting/release_announcement_template.txt
Porting/release_managers_guide.pod
Porting/release_schedule.pod
Porting/todo.pod
README.haiku
README.macosx
README.os2
README.vms
charclass_invlists.h
config_h.SH
cpan/Devel-PPPort/PPPort_pm.PL
cpan/Devel-PPPort/parts/apicheck.pl
cpan/Devel-PPPort/parts/apidoc.fnc
cpan/Devel-PPPort/parts/base/5004000
cpan/Devel-PPPort/parts/base/5004050
cpan/Devel-PPPort/parts/base/5006000
cpan/Devel-PPPort/parts/base/5007003
cpan/Devel-PPPort/parts/base/5008001
cpan/Devel-PPPort/parts/base/5009003
cpan/Devel-PPPort/parts/base/5009004
cpan/Devel-PPPort/parts/base/5013000
cpan/Devel-PPPort/parts/base/5013002
cpan/Devel-PPPort/parts/base/5015004
cpan/Devel-PPPort/parts/base/5020002 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5020003 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5021001
cpan/Devel-PPPort/parts/base/5021002
cpan/Devel-PPPort/parts/base/5021007
cpan/Devel-PPPort/parts/base/5021008
cpan/Devel-PPPort/parts/base/5021009 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5021010 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5021011 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5022000 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5022001 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5023000 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5023001 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5023002 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5023003 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5023004 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5023005 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5023006 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5023007 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5023008 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5023009 [new file with mode: 0644]
cpan/Devel-PPPort/parts/base/5024000 [new file with mode: 0644]
cpan/Devel-PPPort/parts/embed.fnc
cpan/Devel-PPPort/parts/inc/gv
cpan/Devel-PPPort/parts/inc/magic
cpan/Devel-PPPort/parts/inc/misc
cpan/Devel-PPPort/parts/inc/variables
cpan/Devel-PPPort/parts/ppptools.pl
cpan/Devel-PPPort/parts/todo/5004000
cpan/Devel-PPPort/parts/todo/5004050
cpan/Devel-PPPort/parts/todo/5006000
cpan/Devel-PPPort/parts/todo/5007003
cpan/Devel-PPPort/parts/todo/5009005
cpan/Devel-PPPort/parts/todo/5015004
cpan/Devel-PPPort/parts/todo/5020002 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5020003 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5021002
cpan/Devel-PPPort/parts/todo/5021007
cpan/Devel-PPPort/parts/todo/5021008
cpan/Devel-PPPort/parts/todo/5021009 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5021010 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5021011 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5022000 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5022001 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5023000 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5023001 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5023002 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5023003 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5023004 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5023005 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5023006 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5023007 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5023008 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5023009 [new file with mode: 0644]
cpan/Devel-PPPort/parts/todo/5024000 [new file with mode: 0644]
cpan/Devel-PPPort/soak
cpan/Devel-PPPort/t/gv.t
cpan/Devel-PPPort/t/misc.t
cpan/Encode/Encode.pm
cpan/Encode/encoding.pm
cpan/Encode/lib/Encode/MIME/Header.pm
cpan/Encode/lib/Encode/MIME/Header/ISO_2022_JP.pm
cpan/Encode/lib/Encode/Supported.pod
cpan/Encode/t/enc_data.t
cpan/Encode/t/enc_eucjp.t
cpan/Encode/t/enc_module.t
cpan/Encode/t/enc_utf8.t
cpan/Encode/t/encoding-locale.t
cpan/Encode/t/encoding.t
cpan/Encode/t/jperl.t
cpan/Encode/t/mime-header.t
cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm
cpan/Math-BigInt-FastCalc/lib/Math/BigInt/FastCalc.pm
cpan/Math-BigInt/lib/Math/BigFloat.pm
cpan/Math-BigInt/lib/Math/BigInt.pm
cpan/Math-BigInt/lib/Math/BigInt/Calc.pm
cpan/Math-BigInt/lib/Math/BigInt/CalcEmu.pm
cpan/Math-BigInt/t/Math/BigInt/Lib/TestUtil.pm [new file with mode: 0644]
cpan/Math-BigInt/t/bare_mbf.t
cpan/Math-BigInt/t/bare_mbi.t
cpan/Math-BigInt/t/bare_mif.t
cpan/Math-BigInt/t/bdstr-mbf.t [new file with mode: 0644]
cpan/Math-BigInt/t/bdstr-mbi.t [new file with mode: 0644]
cpan/Math-BigInt/t/bestr-mbf.t [new file with mode: 0644]
cpan/Math-BigInt/t/bestr-mbi.t [new file with mode: 0644]
cpan/Math-BigInt/t/big_pi_e.t
cpan/Math-BigInt/t/bigfltpm.inc
cpan/Math-BigInt/t/bigfltpm.t
cpan/Math-BigInt/t/bigintpm.inc
cpan/Math-BigInt/t/bigintpm.t
cpan/Math-BigInt/t/bnstr-mbf.t [new file with mode: 0644]
cpan/Math-BigInt/t/bnstr-mbi.t [new file with mode: 0644]
cpan/Math-BigInt/t/bsstr-mbf.t [new file with mode: 0644]
cpan/Math-BigInt/t/bsstr-mbi.t [new file with mode: 0644]
cpan/Math-BigInt/t/calling-class-methods.t [new file with mode: 0644]
cpan/Math-BigInt/t/calling-instance-methods.t [new file with mode: 0644]
cpan/Math-BigInt/t/calling.t
cpan/Math-BigInt/t/dparts-mbf.t [new file with mode: 0644]
cpan/Math-BigInt/t/dparts-mbi.t [new file with mode: 0644]
cpan/Math-BigInt/t/eparts-mbf.t [new file with mode: 0644]
cpan/Math-BigInt/t/eparts-mbi.t [new file with mode: 0644]
cpan/Math-BigInt/t/from_bin-mbf.t [new file with mode: 0644]
cpan/Math-BigInt/t/from_hex-mbf.t
cpan/Math-BigInt/t/from_oct-mbf.t [new file with mode: 0644]
cpan/Math-BigInt/t/mbimbf.inc
cpan/Math-BigInt/t/mbimbf.t
cpan/Math-BigInt/t/new-mbf.t [new file with mode: 0644]
cpan/Math-BigInt/t/nparts-mbf.t [new file with mode: 0644]
cpan/Math-BigInt/t/nparts-mbi.t [new file with mode: 0644]
cpan/Math-BigInt/t/sparts-mbf.t [new file with mode: 0644]
cpan/Math-BigInt/t/sparts-mbi.t [new file with mode: 0644]
cpan/Math-BigInt/t/sub_mbf.t
cpan/Math-BigInt/t/sub_mbi.t
cpan/Math-BigInt/t/sub_mif.t
cpan/Math-BigInt/t/trap.t
cpan/Math-BigInt/t/with_sub.t
cpan/Math-BigRat/lib/Math/BigRat.pm
cpan/Math-BigRat/t/big_ap.t
cpan/Math-BigRat/t/bigfltrt.t
cpan/Math-BigRat/t/biglog.t
cpan/Math-BigRat/t/bigrat.t
cpan/Math-BigRat/t/bigratpm.t
cpan/Math-BigRat/t/bigratup.t
cpan/Math-BigRat/t/bigroot.t
cpan/Math-BigRat/t/bitwise.t
cpan/Math-BigRat/t/hang.t
cpan/Math-BigRat/t/requirer.t
cpan/Math-BigRat/t/trap.t
cpan/Module-Metadata/t/metadata.t
cpan/Parse-CPAN-Meta/corpus/CL018_yaml.meta [new file with mode: 0644]
cpan/Parse-CPAN-Meta/corpus/META-VR.json
cpan/Parse-CPAN-Meta/corpus/META-VR.yml
cpan/Parse-CPAN-Meta/corpus/bareyaml.meta
cpan/Parse-CPAN-Meta/corpus/json.meta
cpan/Parse-CPAN-Meta/corpus/yaml.meta
cpan/Parse-CPAN-Meta/lib/Parse/CPAN/Meta.pm
cpan/Parse-CPAN-Meta/t/02_api.t
cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm
cpan/Perl-OSType/lib/Perl/OSType.pm
cpan/Test-Simple/lib/Test/Builder.pm
cpan/Test-Simple/lib/Test/Builder/Formatter.pm
cpan/Test-Simple/lib/Test/Builder/Module.pm
cpan/Test-Simple/lib/Test/Builder/Tester.pm
cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm
cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm
cpan/Test-Simple/lib/Test/FAQ.pod [deleted file]
cpan/Test-Simple/lib/Test/More.pm
cpan/Test-Simple/lib/Test/Simple.pm
cpan/Test-Simple/lib/Test/Tester.pm
cpan/Test-Simple/lib/Test/Tester/Capture.pm
cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm
cpan/Test-Simple/lib/Test/Tester/Delegate.pm
cpan/Test-Simple/lib/Test/use/ok.pm
cpan/Test-Simple/lib/Test2.pm
cpan/Test-Simple/lib/Test2/API.pm
cpan/Test-Simple/lib/Test2/API/Breakage.pm
cpan/Test-Simple/lib/Test2/API/Context.pm
cpan/Test-Simple/lib/Test2/API/Instance.pm
cpan/Test-Simple/lib/Test2/API/Stack.pm
cpan/Test-Simple/lib/Test2/Event.pm
cpan/Test-Simple/lib/Test2/Event/Bail.pm
cpan/Test-Simple/lib/Test2/Event/Diag.pm
cpan/Test-Simple/lib/Test2/Event/Exception.pm
cpan/Test-Simple/lib/Test2/Event/Generic.pm
cpan/Test-Simple/lib/Test2/Event/Info.pm [new file with mode: 0644]
cpan/Test-Simple/lib/Test2/Event/Note.pm
cpan/Test-Simple/lib/Test2/Event/Ok.pm
cpan/Test-Simple/lib/Test2/Event/Plan.pm
cpan/Test-Simple/lib/Test2/Event/Skip.pm
cpan/Test-Simple/lib/Test2/Event/Subtest.pm
cpan/Test-Simple/lib/Test2/Event/Waiting.pm
cpan/Test-Simple/lib/Test2/Formatter.pm
cpan/Test-Simple/lib/Test2/Formatter/TAP.pm
cpan/Test-Simple/lib/Test2/Hub.pm
cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm
cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm
cpan/Test-Simple/lib/Test2/Hub/Subtest.pm
cpan/Test-Simple/lib/Test2/IPC.pm
cpan/Test-Simple/lib/Test2/IPC/Driver.pm
cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm
cpan/Test-Simple/lib/Test2/Transition.pod
cpan/Test-Simple/lib/Test2/Util.pm
cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm
cpan/Test-Simple/lib/Test2/Util/HashBase.pm
cpan/Test-Simple/lib/Test2/Util/Trace.pm
cpan/Test-Simple/lib/ok.pm
cpan/Test-Simple/t/Legacy/Regression/683_thread_todo.t [new file with mode: 0644]
cpan/Test-Simple/t/Test2/behavior/run_subtest_inherit.t [new file with mode: 0644]
cpan/Test-Simple/t/Test2/modules/API/Context.t
cpan/Test-Simple/t/Test2/modules/Event/Info.t [new file with mode: 0644]
cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t
cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t [new file with mode: 0644]
cpan/Test-Simple/t/regression/684-nested_todo_diag.t [new file with mode: 0644]
cpan/bignum/lib/Math/BigFloat/Trace.pm
cpan/bignum/lib/Math/BigInt/Trace.pm
cpan/bignum/lib/bigint.pm
cpan/bignum/lib/bignum.pm
cpan/bignum/lib/bigrat.pm
cpan/bignum/t/bigexp.t
cpan/libnet/Makefile.PL
cpan/libnet/lib/Net/Cmd.pm
cpan/libnet/lib/Net/Config.pm
cpan/libnet/lib/Net/Domain.pm
cpan/libnet/lib/Net/FTP.pm
cpan/libnet/lib/Net/FTP/A.pm
cpan/libnet/lib/Net/FTP/E.pm
cpan/libnet/lib/Net/FTP/I.pm
cpan/libnet/lib/Net/FTP/L.pm
cpan/libnet/lib/Net/FTP/dataconn.pm
cpan/libnet/lib/Net/NNTP.pm
cpan/libnet/lib/Net/Netrc.pm
cpan/libnet/lib/Net/POP3.pm
cpan/libnet/lib/Net/SMTP.pm
cpan/libnet/lib/Net/Time.pm
cpan/libnet/lib/Net/libnetFAQ.pod
cpan/libnet/t/datasend.t
cpan/libnet/t/nntp_ipv6.t
cpan/libnet/t/pop3_ipv6.t
cpan/libnet/t/smtp_ipv6.t
cpan/version/lib/version.pm
cpan/version/lib/version/regex.pm
cpan/version/t/01base.t
cpan/version/t/02derived.t
cpan/version/t/03require.t
cpan/version/t/04strict_lax.t
cpan/version/t/05sigdie.t
cpan/version/t/06noop.t
cpan/version/t/07locale.t
cpan/version/t/08_corelist.t
cpan/version/t/09_list_util.t
dist/Data-Dumper/Changes
dist/Data-Dumper/Dumper.pm
dist/Data-Dumper/Dumper.xs
dist/Data-Dumper/t/bugs.t
dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm
dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm
dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm
dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Eval.pm
dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm
dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm
dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm
dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm
dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm
dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm
dist/Locale-Maketext/ChangeLog
dist/Module-CoreList/Changes
dist/Module-CoreList/lib/Module/CoreList.pm
dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
dist/Module-CoreList/lib/Module/CoreList/Utils.pm
dist/Time-HiRes/Changes
dist/Time-HiRes/HiRes.pm
dist/Time-HiRes/HiRes.xs
dist/Time-HiRes/Makefile.PL
dist/Time-HiRes/fallback/const-c.inc
dist/Time-HiRes/t/Watchdog.pm
dist/Time-HiRes/t/alarm.t
dist/Time-HiRes/t/clock.t
dist/Time-HiRes/t/gettimeofday.t
dist/Time-HiRes/t/itimer.t
dist/Time-HiRes/t/nanosleep.t
dist/Time-HiRes/t/sleep.t
dist/Time-HiRes/t/stat.t
dist/Time-HiRes/t/time.t
dist/Time-HiRes/t/tv_interval.t
dist/Time-HiRes/t/ualarm.t
dist/Time-HiRes/t/usleep.t
dist/Time-HiRes/t/utime.t [new file with mode: 0644]
dist/XSLoader/XSLoader_pm.PL
dist/XSLoader/t/XSLoader.t
dist/encoding-warnings/lib/encoding/warnings.pm
dist/encoding-warnings/t/1-warning.t
dist/encoding-warnings/t/2-fatal.t
dist/encoding-warnings/t/3-normal.t
dist/encoding-warnings/t/4-lexical.t
dump.c
embed.fnc
embed.h
embedvar.h
ext/Devel-Peek/t/Peek.t
ext/Hash-Util-FieldHash/t/05_perlhook.t
ext/Hash-Util/Changes
ext/Hash-Util/Util.xs
ext/Hash-Util/lib/Hash/Util.pm
ext/Hash-Util/t/builtin.t [new file with mode: 0644]
ext/PerlIO-encoding/t/fallback.t
ext/XS-APItest/t/svpeek.t
feature.h
gv.c
hints/catamount.sh
hv.c
hv.h
inline.h
intrpvar.h
lib/B/Deparse.t
lib/B/Op_private.pm
lib/Unicode/UCD.pm
lib/Unicode/UCD.t
lib/charnames.t
lib/feature.pm
lib/locale.t
lib/unicore/ArabicShaping.txt
lib/unicore/BidiBrackets.txt
lib/unicore/BidiMirroring.txt
lib/unicore/Blocks.txt
lib/unicore/CJKRadicals.txt
lib/unicore/CaseFolding.txt
lib/unicore/CompositionExclusions.txt
lib/unicore/DAge.txt
lib/unicore/DCoreProperties.txt
lib/unicore/DNormalizationProps.txt
lib/unicore/EastAsianWidth.txt
lib/unicore/EmojiSources.txt
lib/unicore/HangulSyllableType.txt
lib/unicore/Index.txt
lib/unicore/IndicPositionalCategory.txt
lib/unicore/IndicSyllabicCategory.txt
lib/unicore/Jamo.txt
lib/unicore/LineBreak.txt
lib/unicore/NameAliases.txt
lib/unicore/NamedSequences.txt
lib/unicore/NamedSqProv.txt
lib/unicore/NamesList.txt
lib/unicore/NormalizationCorrections.txt
lib/unicore/PropList.txt
lib/unicore/PropValueAliases.txt
lib/unicore/PropertyAliases.txt
lib/unicore/ReadMe.txt
lib/unicore/ScriptExtensions.txt
lib/unicore/Scripts.txt
lib/unicore/SpecialCasing.txt
lib/unicore/StandardizedVariants.txt
lib/unicore/UnicodeData.txt
lib/unicore/auxiliary/GCBTest.txt
lib/unicore/auxiliary/GraphemeBreakProperty.txt
lib/unicore/auxiliary/LBTest.txt
lib/unicore/auxiliary/SBTest.txt
lib/unicore/auxiliary/SentenceBreakProperty.txt
lib/unicore/auxiliary/WBTest.txt
lib/unicore/auxiliary/WordBreakProperty.txt
lib/unicore/extracted/DBidiClass.txt
lib/unicore/extracted/DBinaryProperties.txt
lib/unicore/extracted/DCombiningClass.txt
lib/unicore/extracted/DDecompositionType.txt
lib/unicore/extracted/DEastAsianWidth.txt
lib/unicore/extracted/DGeneralCategory.txt
lib/unicore/extracted/DJoinGroup.txt
lib/unicore/extracted/DJoinType.txt
lib/unicore/extracted/DLineBreak.txt
lib/unicore/extracted/DNumType.txt
lib/unicore/extracted/DNumValues.txt
lib/unicore/mktables
lib/unicore/version
lib/warnings.pm
locale.c
mg.c
numeric.c
op.c
patchlevel.h
perl.h
perly.act
perly.h
perly.tab
perly.y
plan9/config.plan9
plan9/config_sh.sample
pod/.gitignore
pod/perl.pod
pod/perl5252delta.pod [new file with mode: 0644]
pod/perldata.pod
pod/perldelta.pod
pod/perldiag.pod
pod/perlexperiment.pod
pod/perlfunc.pod
pod/perlhist.pod
pod/perlnewmod.pod
pod/perlop.pod
pod/perlrebackslash.pod
pod/perlref.pod
pod/perlretut.pod
pod/perltie.pod
pod/perlunicode.pod
pod/perlunicook.pod
pod/perlvar.pod
pp.c
pp_ctl.c
pp_hot.c
pp_pack.c
proto.h
regcharclass.h
regcomp.c
regcomp.h
regen/feature.pl
regen/mk_invlists.pl
regen/regcomp.pl
regen/warnings.pl
regexec.c
sv.c
t/base/lex.t
t/base/num.t
t/io/socket.t
t/lib/warnings/9uninit
t/lib/warnings/gv
t/lib/warnings/mg
t/lib/warnings/pp
t/lib/warnings/sv
t/op/concat2.t
t/op/coreamp.t
t/op/decl-refs.t [new file with mode: 0644]
t/op/each.t
t/op/gv.t
t/op/hash.t
t/op/hashwarn.t
t/op/inc.t
t/op/infnan.t
t/op/lvref.t
t/op/magic.t
t/op/numconvert.t
t/op/pack.t
t/op/ref.t
t/op/sprintf.t
t/op/sprintf2.t
t/op/stash.t
t/op/sub_lval.t
t/op/time.t
t/op/tr.t
t/op/write.t
t/opbasic/arith.t
t/porting/customized.dat
t/porting/known_pod_issues.dat
t/porting/manifest.t
t/re/anyof.t [new file with mode: 0644]
t/re/pat.t
t/re/reg_eval_scope.t
t/re/reg_mesg.t
t/re/regexp.t
t/run/switchx.aux
t/run/switchx.t
t/test.pl
t/uni/cache.t
t/uni/chomp.t
t/uni/chr.t [deleted file]
t/uni/greek.t
t/uni/latin2.t
t/uni/tr_7jis.t [deleted file]
t/uni/tr_eucjp.t [deleted file]
t/uni/tr_sjis.t [deleted file]
t/uni/tr_utf8.t
time64.h
toke.c
uconfig.h
unicode_constants.h
universal.c
util.c
vms/descrip_mms.template
warnings.h
win32/GNUmakefile
win32/Makefile
win32/makefile.mk
win32/pod.mak

diff --git a/AUTHORS b/AUTHORS
index dfda0e1..7d31842 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -230,6 +230,7 @@ Chris Bongaarts                     <cab@tc.umn.edu>
 Chris Dolan                    <chris@chrisdolan.net>
 Chris Faylor                   <cgf@bbc.com>
 Chris Heath                    <chris@heathens.co.nz>
+Chris Lamb                     <lamby@debian.org>
 Chris Lightfoot                        <chris@ex-parrot.com>
 Chris Nandor                   <pudge@pobox.com>
 Chris Pepper
index 2b2cd07..3a96351 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -5241,6 +5241,20 @@ case "$usequadmath" in
 *)                    usequadmath="$undef"  ;;
 esac
 
+: Fail if both uselongdouble and usequadmath are requested
+case "$usequadmath:$uselongdouble" in
+define:define)
+       $cat <<EOM >&4
+
+*** You requested the use of the quadmath library and use
+*** of long doubles.
+***
+*** Please select one or the other.
+EOM
+       exit 1
+        ;;
+esac
+
 : Looking for optional libraries
 echo " "
 echo "Checking for optional libraries..." >&4
@@ -7187,7 +7201,7 @@ case "$usequadmath" in
 $define)
        echo "quadmath selected." >&4
        case "$archname" in
-       *-ld*) echo "...and architecture name already has -quadmath." >&4
+       *-quadmath*) echo "...and architecture name already has -quadmath." >&4
                ;;
        *)      archname="$archname-quadmath"
                echo "...setting architecture name to $archname." >&4
@@ -9381,17 +9395,20 @@ rp='Perl administrator e-mail address'
 . ./myread
 perladmin="$ans"
 
-: determine whether to only install version-specific parts.
+: determine whether to use a version number suffix for installed binaries
 echo " "
 $cat <<EOM
-Do you want to install only the version-specific parts of the perl
-distribution?  Usually you do *not* want to do this.
+Do you want to use a version number suffix for installed binaries? This
+will install 'perl$version' instead of 'perl', and likewise for other
+binaries like 'perldoc' and 'cpan'. This allows many versions of perl
+to be installed side-by-side. Unless you are a developer, you probably
+do *not* want to do this.
 EOM
 case "$versiononly" in
 "$define"|[Yy]*|true) dflt='y' ;;
 *) dflt='n';
 esac
-rp="Do you want to install only the version-specific parts of perl?"
+rp="Do you want to use a version number suffix for installed binaries?"
 . ./myread
 case "$ans" in
 [yY]*) val="$define";;
@@ -10127,6 +10144,11 @@ int main() {
     printf("2\n");
     exit(0);
   }
+  if (b[0] == 0xCC && b[3] == 0xCC) {
+    /* VAX format F, 32-bit PDP-style mixed endian. */
+    printf("9\n");
+    exit(0);
+  }
 #endif
 #if DOUBLESIZE == 8
   if (b[0] == 0x9A && b[7] == 0xBF) {
@@ -10153,6 +10175,16 @@ int main() {
     printf("8\n");
     exit(0);
   }
+  if (b[0] == 0xCC && b[7] == 0xCC) {
+   /* VAX format D, 64-bit PDP-style mixed endian. */
+    printf("10\n");
+    exit(0);
+  }
+  if (b[0] == 0xD9 && b[7] == 0x99) {
+   /* VAX format G, 64-bit PDP-style mixed endian. */
+    printf("11\n");
+    exit(0);
+  }
 #endif
 #if DOUBLESIZE == 16
   if (b[0] == 0x9A && b[15] == 0xBF) {
@@ -10166,7 +10198,7 @@ int main() {
     exit(0);
   }
 #endif
-  /* Then there are old mainframe/miniframe formats like VAX, IBM, and CRAY.
+  /* Then there are old mainframe/miniframe formats like IBM and CRAY.
    * Whether those environments can still build Perl is debatable. */
   printf("-1\n"); /* unknown */
   exit(0);
@@ -10187,7 +10219,10 @@ case "$doublekind" in
 6) echo "You have IEEE 754 128-bit big endian doubles." >&4 ;;
 7) echo "You have IEEE 754 64-bit mixed endian doubles (32-bit LEs in BE)." >&4 ;;
 8) echo "You have IEEE 754 64-bit mixed endian doubles (32-bit BEs in LE)." >&4 ;;
-*) echo "Cannot figure out your double.  You VAX, or something?" >&4 ;;
+9) echo "You have VAX format F 32-bit PDP-style mixed endian doubles." >&4 ;;
+10) echo "You have VAX format D 64-bit PDP-style mixed endian doubles." >&4 ;;
+11) echo "You have VAX format G 64-bit PDP-style mixed endian doubles." >&4 ;;
+*) echo "Cannot figure out your double.  You CRAY, or something?" >&4 ;;
 esac
 $rm_try
 
index ba0eabf..6fd3eac 100644 (file)
@@ -32,12 +32,12 @@ alignbytes='4'
 ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
-api_subversion='2'
+api_subversion='3'
 api_version='25'
-api_versionstring='5.25.2'
+api_versionstring='5.25.3'
 ar='ar'
-archlib='/usr/lib/perl5/5.25.2/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.25.2/armv4l-linux'
+archlib='/usr/lib/perl5/5.25.3/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.25.3/armv4l-linux'
 archname64=''
 archname='armv4l-linux'
 archobjs=''
@@ -56,7 +56,7 @@ castflags='0'
 cat='cat'
 cc='cc'
 cccdlflags='-fpic'
-ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.25.2/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.25.3/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'
@@ -810,7 +810,7 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.25.2/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.25.3/armv4l-linux'
 installbin='./install_me_here/usr/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -818,13 +818,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.25.2'
+installprivlib='./install_me_here/usr/lib/perl5/5.25.3'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.25.2/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.25.3/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.25.2'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.25.3'
 installsiteman1dir='./install_me_here/usr/share/man/man1'
 installsiteman3dir='./install_me_here/usr/share/man/man3'
 installsitescript='./install_me_here/usr/bin'
@@ -958,8 +958,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/usr/lib/perl5/5.25.2'
-privlibexp='/usr/lib/perl5/5.25.2'
+privlib='/usr/lib/perl5/5.25.3'
+privlibexp='/usr/lib/perl5/5.25.3'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -1024,17 +1024,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.25.2/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.25.2/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.25.3/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.25.3/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.25.2'
+sitelib='/usr/lib/perl5/site_perl/5.25.3'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.25.2'
+sitelibexp='/usr/lib/perl5/site_perl/5.25.3'
 siteman1dir='/usr/share/man/man1'
 siteman1direxp='/usr/share/man/man1'
 siteman3dir='/usr/share/man/man3'
@@ -1073,7 +1073,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='2'
+subversion='3'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1165,8 +1165,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.25.2'
-version_patchlevel_string='version 25 subversion 2'
+version='5.25.3'
+version_patchlevel_string='version 25 subversion 3'
 versiononly='undef'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1180,9 +1180,9 @@ config_args=''
 config_argc=0
 PERL_REVISION=5
 PERL_VERSION=25
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
 PERL_API_REVISION=5
 PERL_API_VERSION=25
-PERL_API_SUBVERSION=2
+PERL_API_SUBVERSION=3
 PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
index 81dc543..4621b80 100644 (file)
@@ -32,12 +32,12 @@ alignbytes='4'
 ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
-api_subversion='2'
+api_subversion='3'
 api_version='25'
-api_versionstring='5.25.2'
+api_versionstring='5.25.3'
 ar='ar'
-archlib='/usr/lib/perl5/5.25.2/armv4l-linux'
-archlibexp='/usr/lib/perl5/5.25.2/armv4l-linux'
+archlib='/usr/lib/perl5/5.25.3/armv4l-linux'
+archlibexp='/usr/lib/perl5/5.25.3/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.25.2/armv4l-linux/CORE'
+ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.25.3/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'
@@ -699,7 +699,7 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='./install_me_here/usr/lib/perl5/5.25.2/armv4l-linux'
+installarchlib='./install_me_here/usr/lib/perl5/5.25.3/armv4l-linux'
 installbin='./install_me_here/usr/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -707,13 +707,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.25.2'
+installprivlib='./install_me_here/usr/lib/perl5/5.25.3'
 installscript='./install_me_here/usr/bin'
-installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.25.2/armv4l-linux'
+installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.25.3/armv4l-linux'
 installsitebin='./install_me_here/usr/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.25.2'
+installsitelib='./install_me_here/usr/lib/perl5/site_perl/5.25.3'
 installsiteman1dir='./install_me_here/usr/share/man/man1'
 installsiteman3dir='./install_me_here/usr/share/man/man3'
 installsitescript='./install_me_here/usr/bin'
@@ -841,8 +841,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/usr/lib/perl5/5.25.2'
-privlibexp='/usr/lib/perl5/5.25.2'
+privlib='/usr/lib/perl5/5.25.3'
+privlibexp='/usr/lib/perl5/5.25.3'
 procselfexe='"/proc/self/exe"'
 prototype='define'
 ptrsize='4'
@@ -903,17 +903,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.25.2/armv4l-linux'
-sitearchexp='/usr/lib/perl5/site_perl/5.25.2/armv4l-linux'
+sitearch='/usr/lib/perl5/site_perl/5.25.3/armv4l-linux'
+sitearchexp='/usr/lib/perl5/site_perl/5.25.3/armv4l-linux'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/usr/lib/perl5/site_perl/5.25.2'
+sitelib='/usr/lib/perl5/site_perl/5.25.3'
 sitelib_stem='/usr/lib/perl5/site_perl'
-sitelibexp='/usr/lib/perl5/site_perl/5.25.2'
+sitelibexp='/usr/lib/perl5/site_perl/5.25.3'
 siteman1dir='/usr/share/man/man1'
 siteman1direxp='/usr/share/man/man1'
 siteman3dir='/usr/share/man/man3'
@@ -950,7 +950,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='2'
+subversion='3'
 sysman='/usr/share/man/man1'
 tail=''
 tar=''
@@ -1035,8 +1035,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.25.2'
-version_patchlevel_string='version 25 subversion 2'
+version='5.25.3'
+version_patchlevel_string='version 25 subversion 3'
 versiononly='undef'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1050,9 +1050,9 @@ config_args=''
 config_argc=0
 PERL_REVISION=5
 PERL_VERSION=25
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
 PERL_API_REVISION=5
 PERL_API_VERSION=25
-PERL_API_SUBVERSION=2
+PERL_API_SUBVERSION=3
 PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
diff --git a/INSTALL b/INSTALL
index 6d594f3..c80017b 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -581,7 +581,7 @@ The directories set up by Configure fall into three broad categories.
 
 =item Directories for the perl distribution
 
-By default, Configure will use the following directories for 5.25.2.
+By default, Configure will use the following directories for 5.25.3.
 $version is the full perl version number, including subversion, e.g.
 5.12.3, and $archname is a string like sun4-sunos,
 determined by Configure.  The full definitions of all Configure
@@ -2285,12 +2285,11 @@ under $archlib so that any user may later build new modules, run the
 optional Perl compiler, or embed the perl interpreter into another
 program even if the Perl source is no longer available.
 
-=head2 Installing only version-specific parts
+=head2 Installing with a version-specific suffix
 
-Sometimes you only want to install the version-specific parts of the perl
-installation.  For example, you may wish to install a newer version of
-perl alongside an already installed production version without
-disabling installation of new modules for the production version.
+Sometimes you only want to install the perl distribution with a
+version-specific suffix.  For example, you may wish to install a newer
+version of perl alongside an already installed production version.
 To only install the version-specific parts of the perl installation, run
 
        Configure -Dversiononly
@@ -2436,7 +2435,7 @@ http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
 
 =head1 Coexistence with earlier versions of perl 5
 
-Perl 5.25.2 is not binary compatible with earlier versions of Perl.
+Perl 5.25.3 is not binary compatible with earlier versions of Perl.
 In other words, you will have to recompile your XS modules.
 
 In general, you can usually safely upgrade from one version of Perl
@@ -2511,9 +2510,9 @@ won't interfere with another version.  (The defaults guarantee this for
 libraries after 5.6.0, but not for executables. TODO?)  One convenient
 way to do this is by using a separate prefix for each version, such as
 
-       sh Configure -Dprefix=/opt/perl5.25.2
+       sh Configure -Dprefix=/opt/perl5.25.3
 
-and adding /opt/perl5.25.2/bin to the shell PATH variable.  Such users
+and adding /opt/perl5.25.3/bin to the shell PATH variable.  Such users
 may also wish to add a symbolic link /usr/local/bin/perl so that
 scripts can still start with #!/usr/local/bin/perl.
 
@@ -2526,13 +2525,13 @@ seriously consider using a separate directory, since development
 subversions may not have all the compatibility wrinkles ironed out
 yet.
 
-=head2 Upgrading from 5.25.1 or earlier
+=head2 Upgrading from 5.25.2 or earlier
 
-B<Perl 5.25.2 may not be binary compatible with Perl 5.25.1 or
+B<Perl 5.25.3 may not be binary compatible with Perl 5.25.2 or
 earlier Perl releases.>  Perl modules having binary parts
 (meaning that a C compiler is used) will have to be recompiled to be
-used with 5.25.2.  If you find you do need to rebuild an extension with
-5.25.2, you may safely do so without disturbing the older
+used with 5.25.3.  If you find you do need to rebuild an extension with
+5.25.3, you may safely do so without disturbing the older
 installations.  (See L<"Coexistence with earlier versions of perl 5">
 above.)
 
@@ -2565,15 +2564,15 @@ Firstly, the bare minimum to run this script
      print("$f\n");
   }
 
-in Linux with perl-5.25.2 is as follows (under $Config{prefix}):
+in Linux with perl-5.25.3 is as follows (under $Config{prefix}):
 
   ./bin/perl
-  ./lib/perl5/5.25.2/strict.pm
-  ./lib/perl5/5.25.2/warnings.pm
-  ./lib/perl5/5.25.2/i686-linux/File/Glob.pm
-  ./lib/perl5/5.25.2/feature.pm
-  ./lib/perl5/5.25.2/XSLoader.pm
-  ./lib/perl5/5.25.2/i686-linux/auto/File/Glob/Glob.so
+  ./lib/perl5/5.25.3/strict.pm
+  ./lib/perl5/5.25.3/warnings.pm
+  ./lib/perl5/5.25.3/i686-linux/File/Glob.pm
+  ./lib/perl5/5.25.3/feature.pm
+  ./lib/perl5/5.25.3/XSLoader.pm
+  ./lib/perl5/5.25.3/i686-linux/auto/File/Glob/Glob.so
 
 Secondly, for perl-5.10.1, the Debian perl-base package contains 591
 files, (of which 510 are for lib/unicore) totaling about 3.5MB in its
index c1638fc..8f1b65e 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,3 +1,4 @@
+.dir-locals.el                 Emacs control file
 amigaos4/amigaio.c     AmigaOS4 port
 amigaos4/amigaio.h     AmigaOS4 port
 amigaos4/amigaos.c     AmigaOS4 port
@@ -20,12 +21,13 @@ configure.com               Configure-equivalent for VMS
 configure.gnu          Crude emulation of GNU configure
 cop.h                  Control operator header
 Copying                        The GNU General Public License
+cpan/.dir-locals.el                    Emacs control file
 cpan/Archive-Tar/bin/ptar                              the ptar utility
 cpan/Archive-Tar/bin/ptardiff                          the ptardiff utility
 cpan/Archive-Tar/bin/ptargrep                          the ptardiff utility
+cpan/Archive-Tar/lib/Archive/Tar.pm                    Archive::Tar
 cpan/Archive-Tar/lib/Archive/Tar/Constant.pm           Archive::Tar
 cpan/Archive-Tar/lib/Archive/Tar/File.pm               Archive::Tar
-cpan/Archive-Tar/lib/Archive/Tar.pm                    Archive::Tar
 cpan/Archive-Tar/t/01_use.t                            Archive::Tar tests
 cpan/Archive-Tar/t/02_methods.t                                Archive::Tar tests
 cpan/Archive-Tar/t/03_file.t                           Archive::Tar tests
@@ -47,10 +49,10 @@ cpan/Archive-Tar/t/src/short/b                              Archive::Tar tests
 cpan/Archive-Tar/t/src/short/bar.tar                   Archive::Tar tests
 cpan/Archive-Tar/t/src/short/foo.tbz                   Archive::Tar tests
 cpan/Archive-Tar/t/src/short/foo.tgz                   Archive::Tar tests
+cpan/autodie/lib/autodie.pm            Functions succeed or die with lexical scope
 cpan/autodie/lib/autodie/exception.pm          Exception class for autodie
 cpan/autodie/lib/autodie/exception/system.pm   Exception class for autodying system()
 cpan/autodie/lib/autodie/hints.pm      Hinting interface for autodie
-cpan/autodie/lib/autodie.pm            Functions succeed or die with lexical scope
 cpan/autodie/lib/autodie/Scope/Guard.pm
 cpan/autodie/lib/autodie/Scope/GuardStack.pm
 cpan/autodie/lib/autodie/skip.pm
@@ -58,8 +60,8 @@ cpan/autodie/lib/autodie/Util.pm
 cpan/autodie/lib/Fatal.pm              Make errors in functions/builtins fatal
 cpan/autodie/t/00-load.t               autodie - basic load
 cpan/autodie/t/args.t
-cpan/autodie/t/autodie_skippy.pm
 cpan/autodie/t/autodie.t               autodie - Basic functionality
+cpan/autodie/t/autodie_skippy.pm
 cpan/autodie/t/autodie_test_module.pm  autodie - test helper
 cpan/autodie/t/backcompat.t            autodie - More Fatal backcompat
 cpan/autodie/t/basic_exceptions.t      autodie - Basic exception tests
@@ -68,8 +70,8 @@ cpan/autodie/t/blog_hints.t           autodie - Tests fro PJF's blog
 cpan/autodie/t/caller.t                        autodie - Caller diagnostics
 cpan/autodie/t/chmod.t
 cpan/autodie/t/chown.t
-cpan/autodie/t/context_lexical.t       autodie - Context clobbering lexically
 cpan/autodie/t/context.t               autodie - Context clobbering tests
+cpan/autodie/t/context_lexical.t       autodie - Context clobbering lexically
 cpan/autodie/t/core-trampoline-slurp.t
 cpan/autodie/t/crickey.t               autodie - Like an Australian
 cpan/autodie/t/dbmopen.t               autodie - dbm tests
@@ -82,19 +84,19 @@ cpan/autodie/t/filehandles.t                autodie - filehandle tests
 cpan/autodie/t/fileno.t                        autodie - fileno tests
 cpan/autodie/t/flock.t                 autodie - File locking tests
 cpan/autodie/t/format-clobber.t                autodie - Don't clobber scalars
+cpan/autodie/t/hints.t                 autodie - Test hints interface
 cpan/autodie/t/hints_insist.t          autodie - Test hints insistance
 cpan/autodie/t/hints_pod_examples.t    autodie - Test hints POD examples
 cpan/autodie/t/hints_provider_does.t   autodie - Test hints/does roles
 cpan/autodie/t/hints_provider_easy_does_it.t   autodie - Test easy hints/does
 cpan/autodie/t/hints_provider_isa.t    autodie - Test hints/inheritance
-cpan/autodie/t/hints.t                 autodie - Test hints interface
 cpan/autodie/t/import-into.t
-cpan/autodie/t/internal-backcompat.t   autodie - Back-compatibility tests
 cpan/autodie/t/internal.t              autodie - internal interface tests
+cpan/autodie/t/internal-backcompat.t   autodie - Back-compatibility tests
 cpan/autodie/t/kill.t
 cpan/autodie/t/lethal.t                        autodie - lethal is the one true name
-cpan/autodie/t/lib/autodie/test/au/exception.pm        autodie - Australian helper
 cpan/autodie/t/lib/autodie/test/au.pm          autodie - Australian helper
+cpan/autodie/t/lib/autodie/test/au/exception.pm        autodie - Australian helper
 cpan/autodie/t/lib/autodie/test/badname.pm     autodie - Bad exception class
 cpan/autodie/t/lib/autodie/test/missing.pm     autodie - Missing exception class
 cpan/autodie/t/lib/Caller_helper.pm            autodie - Caller helper
@@ -107,8 +109,8 @@ cpan/autodie/t/lib/lethal.pm                autodie - with a better name
 cpan/autodie/t/lib/my/autodie.pm       autodie - blog_hints.t helper
 cpan/autodie/t/lib/my/pragma.pm
 cpan/autodie/t/lib/OtherTypes.pm       autodie - Format clobberer helper.
-cpan/autodie/t/lib/pujHa/ghach/Dotlh.pm        autodie - With Klingon honour
 cpan/autodie/t/lib/pujHa/ghach.pm      autodie - Like a Klingon
+cpan/autodie/t/lib/pujHa/ghach/Dotlh.pm        autodie - With Klingon honour
 cpan/autodie/t/lib/Some/Module.pm      autodie - blog_hints.t helper
 cpan/autodie/t/mkdir.t                 autodie - filesystem tests
 cpan/autodie/t/no_carp.t
@@ -150,10 +152,10 @@ cpan/bignum/t/bigrat.t                    See if bigrat works
 cpan/bignum/t/bii_e_pi.t               See if bigint exports e() and PI()
 cpan/bignum/t/biinfnan.t               See if bignum works
 cpan/bignum/t/bir_e_pi.t               See if bigrat exports e() and PI()
-cpan/bignum/t/bninfnan.t               See if bignum works
 cpan/bignum/t/bn_lite.t                        See if bignum with Math::BigInt::Lite works
-cpan/bignum/t/brinfnan.t               See if bignum works
+cpan/bignum/t/bninfnan.t               See if bignum works
 cpan/bignum/t/br_lite.t                        See if bigrat with Math::BigInt::Lite works
+cpan/bignum/t/brinfnan.t               See if bignum works
 cpan/bignum/t/in_effect.t              See if in_effect() works
 cpan/bignum/t/infnan.inc               See if bignum with inf/NaN works
 cpan/bignum/t/option_a.t               See if bignum a => X works
@@ -164,6 +166,7 @@ cpan/bignum/t/ratopt_a.t            See if bigrat a => X works
 cpan/bignum/t/scope_f.t                        See if no bignum works
 cpan/bignum/t/scope_i.t                        See if no bigint works
 cpan/bignum/t/scope_r.t                        See if no bigrat works
+cpan/Compress-Raw-Bzip2/Bzip2.xs
 cpan/Compress-Raw-Bzip2/bzip2-src/blocksort.c
 cpan/Compress-Raw-Bzip2/bzip2-src/bzlib.c
 cpan/Compress-Raw-Bzip2/bzip2-src/bzlib.h
@@ -174,7 +177,6 @@ cpan/Compress-Raw-Bzip2/bzip2-src/decompress.c
 cpan/Compress-Raw-Bzip2/bzip2-src/huffman.c
 cpan/Compress-Raw-Bzip2/bzip2-src/LICENSE
 cpan/Compress-Raw-Bzip2/bzip2-src/randtable.c
-cpan/Compress-Raw-Bzip2/Bzip2.xs
 cpan/Compress-Raw-Bzip2/fallback/constants.h
 cpan/Compress-Raw-Bzip2/fallback/constants.xs
 cpan/Compress-Raw-Bzip2/lib/Compress/Raw/Bzip2.pm
@@ -201,6 +203,7 @@ cpan/Compress-Raw-Zlib/t/18lvalue.t         Compress::Raw::Zlib
 cpan/Compress-Raw-Zlib/t/19nonpv.t
 cpan/Compress-Raw-Zlib/t/compress/CompTestUtils.pm
 cpan/Compress-Raw-Zlib/typemap                 Compress::Raw::Zlib
+cpan/Compress-Raw-Zlib/Zlib.xs                 Compress::Raw::Zlib
 cpan/Compress-Raw-Zlib/zlib-src/adler32.c      Compress::Raw::Zlib
 cpan/Compress-Raw-Zlib/zlib-src/compress.c     Compress::Raw::Zlib
 cpan/Compress-Raw-Zlib/zlib-src/crc32.c                Compress::Raw::Zlib
@@ -222,25 +225,25 @@ cpan/Compress-Raw-Zlib/zlib-src/zconf.h           Compress::Raw::Zlib
 cpan/Compress-Raw-Zlib/zlib-src/zlib.h         Compress::Raw::Zlib
 cpan/Compress-Raw-Zlib/zlib-src/zutil.c                Compress::Raw::Zlib
 cpan/Compress-Raw-Zlib/zlib-src/zutil.h                Compress::Raw::Zlib
-cpan/Compress-Raw-Zlib/Zlib.xs                 Compress::Raw::Zlib
 cpan/Config-Perl-V/t/10_base.t                 Config::Perl::V
 cpan/Config-Perl-V/t/20_plv56.t                        Config::Perl::V
 cpan/Config-Perl-V/t/21_plv58.t                        Config::Perl::V
 cpan/Config-Perl-V/t/22_plv510.t               Config::Perl::V
 cpan/Config-Perl-V/t/23_plv512.t               Config::Perl::V
 cpan/Config-Perl-V/t/24_plv514.t               Config::Perl::V
-cpan/Config-Perl-V/t/25_plv5162.t              Config::Perl::V
 cpan/Config-Perl-V/t/25_plv516.t               Config::Perl::V
-cpan/Config-Perl-V/t/26_plv5182.t              Config::Perl::V
+cpan/Config-Perl-V/t/25_plv5162.t              Config::Perl::V
 cpan/Config-Perl-V/t/26_plv518.t               Config::Perl::V
+cpan/Config-Perl-V/t/26_plv5182.t              Config::Perl::V
 cpan/Config-Perl-V/t/27_plv5200.t              Config::Perl::V
 cpan/Config-Perl-V/t/27_plv5202.t              Config::Perl::V
-cpan/Config-Perl-V/t/28_plv52201w.t            Config::Perl::V
 cpan/Config-Perl-V/t/28_plv5220.t              Config::Perl::V
+cpan/Config-Perl-V/t/28_plv52201w.t            Config::Perl::V
 cpan/Config-Perl-V/t/29_plv5235w.t             Config::Perl::V
 cpan/Config-Perl-V/t/30_plv5240.t              Config::Perl::V
 cpan/Config-Perl-V/V.pm                                Config::Perl::V
 cpan/CPAN/lib/App/Cpan.pm              helper package for CPAN.pm
+cpan/CPAN/lib/CPAN.pm                  Interface to Comprehensive Perl Archive Network
 cpan/CPAN/lib/CPAN/API/HOWTO.pod       recipe book for programming with CPAN.pm
 cpan/CPAN/lib/CPAN/Author.pm           helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/Bundle.pm           helper package for CPAN.pm
@@ -256,54 +259,56 @@ cpan/CPAN/lib/CPAN/Exception/RecursiveDependency.pm       helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/Exception/yaml_not_installed.pm     helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/Exception/yaml_process_error.pm     helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/FirstTime.pm                Utility for creating CPAN config files
-cpan/CPAN/lib/CPAN/FTP/netrc.pm                helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/FTP.pm                      helper package for CPAN.pm
+cpan/CPAN/lib/CPAN/FTP/netrc.pm                helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/HandleConfig.pm     helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/HTTP/Client.pm      helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/HTTP/Credentials.pm helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/Index.pm            helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/InfoObj.pm          helper package for CPAN.pm
+cpan/CPAN/lib/CPAN/Kwalify.pm          helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/Kwalify/distroprefs.dd              helper file for validating config files
 cpan/CPAN/lib/CPAN/Kwalify/distroprefs.yml     helper file for validating config files
-cpan/CPAN/lib/CPAN/Kwalify.pm          helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/LWP/UserAgent.pm    helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/Mirrors.pm          helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/Module.pm           helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/Nox.pm                      Runs CPAN while avoiding compiled extensions
 cpan/CPAN/lib/CPAN/Plugin.pm
 cpan/CPAN/lib/CPAN/Plugin/Specfile.pm
-cpan/CPAN/lib/CPAN.pm                  Interface to Comprehensive Perl Archive Network
 cpan/CPAN/lib/CPAN/Prompt.pm
 cpan/CPAN/lib/CPAN/Queue.pm            queueing system for CPAN.pm
 cpan/CPAN/lib/CPAN/Shell.pm
 cpan/CPAN/lib/CPAN/Tarzip.pm           helper package for CPAN.pm
 cpan/CPAN/lib/CPAN/URL.pm
 cpan/CPAN/lib/CPAN/Version.pm          Simple math with different flavors of version strings
+cpan/CPAN/PAUSE2003.pub                CPAN public key
+cpan/CPAN/PAUSE2005.pub                CPAN public key
+cpan/CPAN/PAUSE2007.pub                CPAN public key
+cpan/CPAN/PAUSE2009.pub                CPAN public key
+cpan/CPAN/PAUSE2011.pub
+cpan/CPAN/scripts/cpan         easily interact with CPAN from the command line
+cpan/CPAN/t/01loadme.t         See if CPAN the module works
+cpan/CPAN/t/02nox.t            See if CPAN::Nox works
+cpan/CPAN/t/03pkgs.t           See if CPAN::Version works
+cpan/CPAN/t/10version.t                See if CPAN the module works
+cpan/CPAN/t/11mirroredby.t             See if CPAN::Mirrored::By works
+cpan/CPAN-Meta/lib/CPAN/Meta.pm
 cpan/CPAN-Meta/lib/CPAN/Meta/Converter.pm
 cpan/CPAN-Meta/lib/CPAN/Meta/Feature.pm
+cpan/CPAN-Meta/lib/CPAN/Meta/History.pm
 cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_0.pod
 cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_1.pod
 cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_2.pod
 cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_3.pod
 cpan/CPAN-Meta/lib/CPAN/Meta/History/Meta_1_4.pod
-cpan/CPAN-Meta/lib/CPAN/Meta/History.pm
 cpan/CPAN-Meta/lib/CPAN/Meta/Merge.pm
-cpan/CPAN-Meta/lib/CPAN/Meta.pm
 cpan/CPAN-Meta/lib/CPAN/Meta/Prereqs.pm
 cpan/CPAN-Meta/lib/CPAN/Meta/Spec.pm
 cpan/CPAN-Meta/lib/CPAN/Meta/Validator.pm
-cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm
-cpan/CPAN-Meta-Requirements/t/accepts.t
-cpan/CPAN-Meta-Requirements/t/bad_version_hook.t
-cpan/CPAN-Meta-Requirements/t/basic.t
-cpan/CPAN-Meta-Requirements/t/finalize.t
-cpan/CPAN-Meta-Requirements/t/from-hash.t
-cpan/CPAN-Meta-Requirements/t/merge.t
-cpan/CPAN-Meta-Requirements/t/strings.t
+cpan/CPAN-Meta/t/converter.t
 cpan/CPAN-Meta/t/converter-bad.t
 cpan/CPAN-Meta/t/converter-fail.t
 cpan/CPAN-Meta/t/converter-fragments.t
-cpan/CPAN-Meta/t/converter.t
 cpan/CPAN-Meta/t/data-fail/META-1_0.yml
 cpan/CPAN-Meta/t/data-fail/META-1_1.yml
 cpan/CPAN-Meta/t/data-fail/META-1_2.yml
@@ -358,12 +363,20 @@ cpan/CPAN-Meta/t/merge.t
 cpan/CPAN-Meta/t/meta-obj.t
 cpan/CPAN-Meta/t/no-index.t
 cpan/CPAN-Meta/t/optional_feature-merge.t
+cpan/CPAN-Meta/t/prereqs.t
 cpan/CPAN-Meta/t/prereqs-finalize.t
 cpan/CPAN-Meta/t/prereqs-merge.t
-cpan/CPAN-Meta/t/prereqs.t
 cpan/CPAN-Meta/t/repository.t
 cpan/CPAN-Meta/t/save-load.t
 cpan/CPAN-Meta/t/validator.t
+cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm
+cpan/CPAN-Meta-Requirements/t/accepts.t
+cpan/CPAN-Meta-Requirements/t/bad_version_hook.t
+cpan/CPAN-Meta-Requirements/t/basic.t
+cpan/CPAN-Meta-Requirements/t/finalize.t
+cpan/CPAN-Meta-Requirements/t/from-hash.t
+cpan/CPAN-Meta-Requirements/t/merge.t
+cpan/CPAN-Meta-Requirements/t/strings.t
 cpan/CPAN-Meta-YAML/lib/CPAN/Meta/YAML.pm              CPAN-Meta-YAML files
 cpan/CPAN-Meta-YAML/t/01_api.t
 cpan/CPAN-Meta-YAML/t/01_compile.t             CPAN-Meta-YAML files
@@ -413,23 +426,12 @@ cpan/CPAN-Meta-YAML/t/tml-world/Spreadsheet-Read.tml
 cpan/CPAN-Meta-YAML/t/tml-world/Template-Provider-Unicode-Japanese.tml
 cpan/CPAN-Meta-YAML/t/tml-world/toolbar.tml
 cpan/CPAN-Meta-YAML/t/tml-world/Vanilla-Perl.tml
-cpan/CPAN-Meta-YAML/t/tml-world/yaml_org.tml
 cpan/CPAN-Meta-YAML/t/tml-world/YAML-Tiny-META.tml
-cpan/CPAN/PAUSE2003.pub                CPAN public key
-cpan/CPAN/PAUSE2005.pub                CPAN public key
-cpan/CPAN/PAUSE2007.pub                CPAN public key
-cpan/CPAN/PAUSE2009.pub                CPAN public key
-cpan/CPAN/PAUSE2011.pub
-cpan/CPAN/scripts/cpan         easily interact with CPAN from the command line
-cpan/CPAN/t/01loadme.t         See if CPAN the module works
-cpan/CPAN/t/02nox.t            See if CPAN::Nox works
-cpan/CPAN/t/03pkgs.t           See if CPAN::Version works
-cpan/CPAN/t/10version.t                See if CPAN the module works
-cpan/CPAN/t/11mirroredby.t             See if CPAN::Mirrored::By works
+cpan/CPAN-Meta-YAML/t/tml-world/yaml_org.tml
 cpan/DB_File/config.in         Part of Berkeley DB configuration
-cpan/DB_File/DB_File_BS                Berkeley DB extension mkbootstrap fodder
 cpan/DB_File/DB_File.pm                Berkeley DB extension Perl module
 cpan/DB_File/DB_File.xs                Berkeley DB extension external subroutines
+cpan/DB_File/DB_File_BS                Berkeley DB extension mkbootstrap fodder
 cpan/DB_File/dbinfo            Berkeley DB database version checker
 cpan/DB_File/hints/dynixptx.pl Hint for DB_File for named architecture
 cpan/DB_File/hints/sco.pl      Hint for DB_File for named architecture
@@ -565,6 +567,8 @@ cpan/Devel-PPPort/parts/base/5019010        Devel::PPPort baseline todo file
 cpan/Devel-PPPort/parts/base/5019011   Devel::PPPort baseline todo file
 cpan/Devel-PPPort/parts/base/5020000   Devel::PPPort baseline todo file
 cpan/Devel-PPPort/parts/base/5020001   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5020002   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5020003   Devel::PPPort baseline todo file
 cpan/Devel-PPPort/parts/base/5021000   Devel::PPPort baseline todo file
 cpan/Devel-PPPort/parts/base/5021001   Devel::PPPort baseline todo file
 cpan/Devel-PPPort/parts/base/5021002   Devel::PPPort baseline todo file
@@ -573,6 +577,22 @@ cpan/Devel-PPPort/parts/base/5021005       Devel::PPPort baseline todo file
 cpan/Devel-PPPort/parts/base/5021006   Devel::PPPort baseline todo file
 cpan/Devel-PPPort/parts/base/5021007   Devel::PPPort baseline todo file
 cpan/Devel-PPPort/parts/base/5021008   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5021009   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5021010   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5021011   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5022000   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5022001   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5023000   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5023001   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5023002   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5023003   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5023004   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5023005   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5023006   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5023007   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5023008   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5023009   Devel::PPPort baseline todo file
+cpan/Devel-PPPort/parts/base/5024000   Devel::PPPort baseline todo file
 cpan/Devel-PPPort/parts/embed.fnc      Devel::PPPort Perl API listing
 cpan/Devel-PPPort/parts/inc/call       Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/cop                Devel::PPPort include
@@ -589,22 +609,22 @@ cpan/Devel-PPPort/parts/inc/mPUSH Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/MY_CXT     Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/newCONSTSUB        Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/newRV      Devel::PPPort include
-cpan/Devel-PPPort/parts/inc/newSVpv    Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/newSV_type Devel::PPPort include
+cpan/Devel-PPPort/parts/inc/newSVpv    Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/podtest    Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/ppphbin    Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/ppphdoc    Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/ppphtest   Devel::PPPort include
-cpan/Devel-PPPort/parts/inc/pvs                Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/pv_tools   Devel::PPPort include
+cpan/Devel-PPPort/parts/inc/pvs                Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/shared_pv  Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/snprintf   Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/sprintf    Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/strlfuncs  Devel::PPPort include
-cpan/Devel-PPPort/parts/inc/SvPV       Devel::PPPort include
-cpan/Devel-PPPort/parts/inc/SvREFCNT   Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/Sv_set     Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/sv_xpvf    Devel::PPPort include
+cpan/Devel-PPPort/parts/inc/SvPV       Devel::PPPort include
+cpan/Devel-PPPort/parts/inc/SvREFCNT   Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/threads    Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/uv         Devel::PPPort include
 cpan/Devel-PPPort/parts/inc/variables  Devel::PPPort include
@@ -723,6 +743,8 @@ cpan/Devel-PPPort/parts/todo/5019010        Devel::PPPort todo file
 cpan/Devel-PPPort/parts/todo/5019011   Devel::PPPort todo file
 cpan/Devel-PPPort/parts/todo/5020000   Devel::PPPort todo file
 cpan/Devel-PPPort/parts/todo/5020001   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5020002   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5020003   Devel::PPPort todo file
 cpan/Devel-PPPort/parts/todo/5021000   Devel::PPPort todo file
 cpan/Devel-PPPort/parts/todo/5021001   Devel::PPPort todo file
 cpan/Devel-PPPort/parts/todo/5021002   Devel::PPPort todo file
@@ -731,9 +753,25 @@ cpan/Devel-PPPort/parts/todo/5021005       Devel::PPPort todo file
 cpan/Devel-PPPort/parts/todo/5021006   Devel::PPPort todo file
 cpan/Devel-PPPort/parts/todo/5021007   Devel::PPPort todo file
 cpan/Devel-PPPort/parts/todo/5021008   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5021009   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5021010   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5021011   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5022000   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5022001   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5023000   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5023001   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5023002   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5023003   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5023004   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5023005   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5023006   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5023007   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5023008   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5023009   Devel::PPPort todo file
+cpan/Devel-PPPort/parts/todo/5024000   Devel::PPPort todo file
+cpan/Devel-PPPort/PPPort.xs            Devel::PPPort dummy PPPort.xs
 cpan/Devel-PPPort/ppport_h.PL          Devel::PPPort ppport.h writer
 cpan/Devel-PPPort/PPPort_pm.PL         Devel::PPPort PPPort.pm writer
-cpan/Devel-PPPort/PPPort.xs            Devel::PPPort dummy PPPort.xs
 cpan/Devel-PPPort/PPPort_xs.PL         Devel::PPPort RealPPPort.xs writer
 cpan/Devel-PPPort/soak                 Devel::PPPort Test Harness to run under various Perls
 cpan/Devel-PPPort/t/call.t             Devel::PPPort test file
@@ -751,29 +789,34 @@ cpan/Devel-PPPort/t/mPUSH.t               Devel::PPPort test file
 cpan/Devel-PPPort/t/MY_CXT.t           Devel::PPPort test file
 cpan/Devel-PPPort/t/newCONSTSUB.t      Devel::PPPort test file
 cpan/Devel-PPPort/t/newRV.t            Devel::PPPort test file
-cpan/Devel-PPPort/t/newSVpv.t          Devel::PPPort test file
 cpan/Devel-PPPort/t/newSV_type.t       Devel::PPPort test file
+cpan/Devel-PPPort/t/newSVpv.t          Devel::PPPort test file
 cpan/Devel-PPPort/t/podtest.t          Devel::PPPort test file
 cpan/Devel-PPPort/t/ppphtest.t         Devel::PPPort test file
-cpan/Devel-PPPort/t/pvs.t              Devel::PPPort test file
 cpan/Devel-PPPort/t/pv_tools.t         Devel::PPPort test file
+cpan/Devel-PPPort/t/pvs.t              Devel::PPPort test file
 cpan/Devel-PPPort/t/shared_pv.t                Devel::PPPort test file
 cpan/Devel-PPPort/t/snprintf.t         Devel::PPPort test file
 cpan/Devel-PPPort/t/sprintf.t          Devel::PPPort test file
 cpan/Devel-PPPort/t/strlfuncs.t                Devel::PPPort test file
-cpan/Devel-PPPort/t/SvPV.t             Devel::PPPort test file
-cpan/Devel-PPPort/t/SvREFCNT.t         Devel::PPPort test file
 cpan/Devel-PPPort/t/Sv_set.t           Devel::PPPort test file
 cpan/Devel-PPPort/t/sv_xpvf.t          Devel::PPPort test file
+cpan/Devel-PPPort/t/SvPV.t             Devel::PPPort test file
+cpan/Devel-PPPort/t/SvREFCNT.t         Devel::PPPort test file
 cpan/Devel-PPPort/t/testutil.pl                Devel::PPPort test utilities
 cpan/Devel-PPPort/t/threads.t          Devel::PPPort test file
 cpan/Devel-PPPort/t/uv.t               Devel::PPPort test file
 cpan/Devel-PPPort/t/variables.t                Devel::PPPort test file
 cpan/Devel-PPPort/t/warn.t             Devel::PPPort test file
 cpan/Devel-PPPort/typemap              Devel::PPPort Typemap
+cpan/Digest/Digest.pm          Digest extensions
 cpan/Digest/Digest/base.pm     Digest extensions
 cpan/Digest/Digest/file.pm     Digest extensions
-cpan/Digest/Digest.pm          Digest extensions
+cpan/Digest/t/base.t           See if Digest extensions work
+cpan/Digest/t/digest.t         See if Digest extensions work
+cpan/Digest/t/file.t           See if Digest extensions work
+cpan/Digest/t/lib/Digest/Dummy.pm              See if Digest extensions work
+cpan/Digest/t/security.t               See if Digest extensions work
 cpan/Digest-MD5/hints/dec_osf.pl       Hints for named architecture
 cpan/Digest-MD5/hints/irix_6.pl                Hints for named architecture
 cpan/Digest-MD5/hints/MacOS.pl         Hints for named architecture
@@ -791,21 +834,21 @@ cpan/Digest-MD5/t/utf8.t          See if Digest::MD5 extension works
 cpan/Digest-MD5/typemap                        Digest::MD5 extension
 cpan/Digest-SHA/lib/Digest/SHA.pm      Digest::SHA extension
 cpan/Digest-SHA/Makefile.PL            Digest::SHA Makefile.PL
-cpan/Digest-SHA/shasum                 shasum script
 cpan/Digest-SHA/SHA.xs                 Digest::SHA extension
+cpan/Digest-SHA/shasum                 shasum script
 cpan/Digest-SHA/src/sdf.c              Digest::SHA extension
-cpan/Digest-SHA/src/sha64bit.c         Digest::SHA extension
-cpan/Digest-SHA/src/sha64bit.h         Digest::SHA extension
 cpan/Digest-SHA/src/sha.c              Digest::SHA extension
 cpan/Digest-SHA/src/sha.h              Digest::SHA extension
+cpan/Digest-SHA/src/sha64bit.c         Digest::SHA extension
+cpan/Digest-SHA/src/sha64bit.h         Digest::SHA extension
 cpan/Digest-SHA/t/allfcns.t            See if Digest::SHA works
 cpan/Digest-SHA/t/base64.t             See if Digest::SHA works
 cpan/Digest-SHA/t/bitbuf.t             See if Digest::SHA works
 cpan/Digest-SHA/t/bitorder.t
 cpan/Digest-SHA/t/fips180-4.t          See if Digest::SHA works
 cpan/Digest-SHA/t/fips198.t            See if Digest::SHA works
-cpan/Digest-SHA/t/gglong.t             See if Digest::SHA works
 cpan/Digest-SHA/t/gg.t                 See if Digest::SHA works
+cpan/Digest-SHA/t/gglong.t             See if Digest::SHA works
 cpan/Digest-SHA/t/hmacsha.t            See if Digest::SHA works
 cpan/Digest-SHA/t/inheritance.t
 cpan/Digest-SHA/t/ireland.t            See if Digest::SHA works
@@ -822,12 +865,6 @@ cpan/Digest-SHA/t/state.t          See if Digest::SHA works
 cpan/Digest-SHA/t/unicode.t
 cpan/Digest-SHA/t/woodbury.t           See if Digest::SHA works
 cpan/Digest-SHA/typemap                        Typemap for Digest::SHA
-cpan/Digest/t/base.t           See if Digest extensions work
-cpan/Digest/t/digest.t         See if Digest extensions work
-cpan/Digest/t/file.t           See if Digest extensions work
-cpan/Digest/t/lib/Digest/Dummy.pm              See if Digest extensions work
-cpan/Digest/t/security.t               See if Digest extensions work
-cpan/.dir-locals.el                    Emacs control file
 cpan/Encode/bin/enc2xs         Encode module generator
 cpan/Encode/bin/encguess               guess character encodings of files
 cpan/Encode/bin/piconv         iconv by perl
@@ -842,15 +879,15 @@ cpan/Encode/CN/Makefile.PL        Encode extension
 cpan/Encode/EBCDIC/EBCDIC.pm   Encode extension
 cpan/Encode/EBCDIC/Makefile.PL Encode extension
 cpan/Encode/encengine.c                Encode extension
+cpan/Encode/Encode.pm          Mother of all Encode extensions
+cpan/Encode/Encode.xs          Encode extension
+cpan/Encode/Encode/_PM.e2x     Skeleton file for enc2xs
+cpan/Encode/Encode/_T.e2x      Skeleton file for enc2xs
 cpan/Encode/Encode/Changes.e2x Skeleton file for enc2xs
 cpan/Encode/Encode/ConfigLocal_PM.e2x  Skeleton file for enc2xs
 cpan/Encode/Encode/encode.h    Encode extension header file
 cpan/Encode/Encode/Makefile_PL.e2x     Skeleton file for enc2xs
-cpan/Encode/Encode.pm          Mother of all Encode extensions
-cpan/Encode/Encode/_PM.e2x     Skeleton file for enc2xs
 cpan/Encode/Encode/README.e2x  Skeleton file for enc2xs
-cpan/Encode/Encode/_T.e2x      Skeleton file for enc2xs
-cpan/Encode/Encode.xs          Encode extension
 cpan/Encode/encoding.pm                Perl Pragmatic Module
 cpan/Encode/JP/JP.pm           Encode extension
 cpan/Encode/JP/Makefile.PL     Encode extension
@@ -867,8 +904,8 @@ cpan/Encode/lib/Encode/Guess.pm     Encode Extension
 cpan/Encode/lib/Encode/JP/H2Z.pm       Encode extension
 cpan/Encode/lib/Encode/JP/JIS7.pm      Encode extension
 cpan/Encode/lib/Encode/KR/2022_KR.pm   Encode extension
-cpan/Encode/lib/Encode/MIME/Header/ISO_2022_JP.pm      Encode extension
 cpan/Encode/lib/Encode/MIME/Header.pm  Encode extension
+cpan/Encode/lib/Encode/MIME/Header/ISO_2022_JP.pm      Encode extension
 cpan/Encode/lib/Encode/MIME/Name.pm    Encode extension
 cpan/Encode/lib/Encode/PerlIO.pod      Documents for Encode & PerlIO
 cpan/Encode/lib/Encode/Supported.pod   Documents for supported encodings
@@ -890,11 +927,11 @@ cpan/Encode/t/enc_data.t          test script for utf8 DATA
 cpan/Encode/t/enc_eucjp.t              test script
 cpan/Encode/t/enc_module.enc           test data for t/enc_module.t
 cpan/Encode/t/enc_module.t             test script
-cpan/Encode/t/Encoder.t                        test script
+cpan/Encode/t/enc_utf8.t               test script
 cpan/Encode/t/Encode.t                 test script
-cpan/Encode/t/encoding-locale.t                test script
+cpan/Encode/t/Encoder.t                        test script
 cpan/Encode/t/encoding.t               test script
-cpan/Encode/t/enc_utf8.t               test script
+cpan/Encode/t/encoding-locale.t                test script
 cpan/Encode/t/fallback.t               test script
 cpan/Encode/t/from_to.t                        test script
 cpan/Encode/t/gb2312.enc               test data
@@ -913,9 +950,9 @@ cpan/Encode/t/jisx0212.utf          test data
 cpan/Encode/t/jperl.t                  test script
 cpan/Encode/t/ksc5601.enc              test data
 cpan/Encode/t/ksc5601.utf              test data
-cpan/Encode/t/mime_header_iso2022jp.t  test script
 cpan/Encode/t/mime-header.t            test script
 cpan/Encode/t/mime-name.t              test script
+cpan/Encode/t/mime_header_iso2022jp.t  test script
 cpan/Encode/t/Mod_EUCJP.pm             module that t/enc_module.enc uses
 cpan/Encode/t/perlio.t                 test script
 cpan/Encode/t/piconv.t                 Test for piconv.t
@@ -928,13 +965,13 @@ cpan/Encode/t/utf8strict.t                test script
 cpan/Encode/t/utf8warnings.t
 cpan/Encode/TW/Makefile.PL             Encode extension
 cpan/Encode/TW/TW.pm                   Encode extension
+cpan/Encode/ucm/8859-1.ucm             Unicode Character Map
 cpan/Encode/ucm/8859-10.ucm            Unicode Character Map
 cpan/Encode/ucm/8859-11.ucm            Unicode Character Map
 cpan/Encode/ucm/8859-13.ucm            Unicode Character Map
 cpan/Encode/ucm/8859-14.ucm            Unicode Character Map
 cpan/Encode/ucm/8859-15.ucm            Unicode Character Map
 cpan/Encode/ucm/8859-16.ucm            Unicode Character Map
-cpan/Encode/ucm/8859-1.ucm             Unicode Character Map
 cpan/Encode/ucm/8859-2.ucm             Unicode Character Map
 cpan/Encode/ucm/8859-3.ucm             Unicode Character Map
 cpan/Encode/ucm/8859-4.ucm             Unicode Character Map
@@ -1036,38 +1073,39 @@ cpan/Encode/Unicode/Unicode.pm          Encode extension
 cpan/Encode/Unicode/Unicode.xs         Encode extension
 cpan/experimental/lib/experimental.pm
 cpan/experimental/t/basic.t
-cpan/ExtUtils-Constant/lib/ExtUtils/Constant/Base.pm           generate XS code to import C header constants
 cpan/ExtUtils-Constant/lib/ExtUtils/Constant.pm                        generate XS code to import C header constants
+cpan/ExtUtils-Constant/lib/ExtUtils/Constant/Base.pm           generate XS code to import C header constants
 cpan/ExtUtils-Constant/lib/ExtUtils/Constant/ProxySubs.pm      generate XS code for proxy constants
 cpan/ExtUtils-Constant/lib/ExtUtils/Constant/Utils.pm          generate XS code to import C header constants
 cpan/ExtUtils-Constant/lib/ExtUtils/Constant/XS.pm             generate XS code to import C header constants
 cpan/ExtUtils-Constant/t/Constant.t                            See if ExtUtils::Constant works
-cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm                Information on installed extensions
 cpan/ExtUtils-Install/lib/ExtUtils/Install.pm          Handles 'make install' on extensions
+cpan/ExtUtils-Install/lib/ExtUtils/Installed.pm                Information on installed extensions
 cpan/ExtUtils-Install/lib/ExtUtils/Packlist.pm         Manipulates .packlist files
 cpan/ExtUtils-Install/t/can_write_dir.t                        Does the _can_write_dir function of ExtUtils::Install work properly?
+cpan/ExtUtils-Install/t/Install.t                      See if ExtUtils::Install works
 cpan/ExtUtils-Install/t/Installapi2.t                  See if new api for ExtUtils::Install::install() works
 cpan/ExtUtils-Install/t/Installed.t                    See if ExtUtils::Installed works
-cpan/ExtUtils-Install/t/Install.t                      See if ExtUtils::Install works
 cpan/ExtUtils-Install/t/InstallWithMM.t                        See if ExtUtils::Install works (related to EUMM/t/basic.t)
 cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Setup/BFD.pm        MakeMaker test utilities
 cpan/ExtUtils-Install/t/lib/MakeMaker/Test/Utils.pm    MakeMaker test utilities
 cpan/ExtUtils-Install/t/lib/TieOut.pm                  Testing library to capture prints
 cpan/ExtUtils-Install/t/Packlist.t                     See if Packlist works
 cpan/ExtUtils-MakeMaker/bin/instmodsh                          Give information about installed extensions
-cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm             Calling MM functions from the cmd line
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command.pm
-cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm            Does the real work of the above
+cpan/ExtUtils-MakeMaker/lib/ExtUtils/Command/MM.pm             Calling MM functions from the cmd line
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist.pm                        Locates libraries
+cpan/ExtUtils-MakeMaker/lib/ExtUtils/Liblist/Kid.pm            Does the real work of the above
+cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm              Write Makefiles for extensions
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Config.pm       MakeMaker wrapper for Config
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/FAQ.pod         MakeMaker FAQ
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Locale.pm
-cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm              Write Makefiles for extensions
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/Tutorial.pod    Writing a module with MakeMaker
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version.pm
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker/version/regex.pm
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mkbootstrap.pm            Writes a bootstrap file (see MakeMaker)
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/Mksymlists.pm             Writes a linker options file for extensions
+cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm                     MakeMaker adaptor class
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_AIX.pm                 MakeMaker methods for AIX
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Any.pm                 MakeMaker methods for Any OS
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_BeOS.pm                        MakeMaker methods for BeOS
@@ -1077,7 +1115,6 @@ cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_DOS.pm                    MakeMaker methods for DOS
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_MacOS.pm               MakeMaker methods for MacOS
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_NW5.pm                 MakeMaker methods for NetWare
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_OS2.pm                 MakeMaker methods for OS/2
-cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM.pm                     MakeMaker adaptor class
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_QNX.pm                 MakeMaker methods for QNX
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Unix.pm                        MakeMaker methods for Unix
 cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_UWIN.pm                        MakeMaker methods for U/WIN
@@ -1102,32 +1139,32 @@ cpan/ExtUtils-MakeMaker/t/dir_target.t                          Verify if dir_target() is supported
 cpan/ExtUtils-MakeMaker/t/echo.t                               Test for ExtUtils::MakeMaker
 cpan/ExtUtils-MakeMaker/t/eu_command.t
 cpan/ExtUtils-MakeMaker/t/FIRST_MAKEFILE.t                     See if FIRST_MAKEFILE works
-cpan/ExtUtils-MakeMaker/t/fixin.t                              See if ExtUtils::MakeMaker works
 cpan/ExtUtils-MakeMaker/t/fix_libs.t                           Test for ExtUtils::MakeMaker
+cpan/ExtUtils-MakeMaker/t/fixin.t                              See if ExtUtils::MakeMaker works
 cpan/ExtUtils-MakeMaker/t/hints.t                              See if hint files are honored.
+cpan/ExtUtils-MakeMaker/t/INST.t                               Check MakeMaker INST_* macros
+cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t                                See if MakeMaker can apply PREFIXs
 cpan/ExtUtils-MakeMaker/t/INSTALL_BASE.t                       Test INSTALL_BASE in MakeMaker
 cpan/ExtUtils-MakeMaker/t/installed_file.t                     Test for ExtUtils::MakeMaker
-cpan/ExtUtils-MakeMaker/t/INST_PREFIX.t                                See if MakeMaker can apply PREFIXs
-cpan/ExtUtils-MakeMaker/t/INST.t                               Check MakeMaker INST_* macros
 cpan/ExtUtils-MakeMaker/t/is_of_type.t                         Test for ExtUtils::MakeMaker
-cpan/ExtUtils-MakeMaker/t/Liblist.t                            See if ExtUtils::Liblist works
 cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/NoXS.pm           MakeMaker test utilities
 cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/BFD.pm      MakeMaker test utilities
 cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm       MakeMaker test utilities
 cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Utils.pm          MakeMaker test utilities
 cpan/ExtUtils-MakeMaker/t/lib/TieIn.pm                         Testing library for dummy input handles
 cpan/ExtUtils-MakeMaker/t/lib/TieOut.pm                                Testing library to capture prints
-cpan/ExtUtils-MakeMaker/t/MakeMaker_Parameters.t               test "MakeMaker Parameters" section
+cpan/ExtUtils-MakeMaker/t/Liblist.t                            See if ExtUtils::Liblist works
 cpan/ExtUtils-MakeMaker/t/make.t                               See if make detection works
+cpan/ExtUtils-MakeMaker/t/MakeMaker_Parameters.t               test "MakeMaker Parameters" section
 cpan/ExtUtils-MakeMaker/t/maketext_filter.t                    See if maketext_filter works
 cpan/ExtUtils-MakeMaker/t/meta_convert.t                               See if MakeMaker works
-cpan/ExtUtils-MakeMaker/t/metafile_data.t                      See if META.yml handling works
-cpan/ExtUtils-MakeMaker/t/metafile_file.t                      See if META.yml handling works
 cpan/ExtUtils-MakeMaker/t/META_for_testing.json                                test data for MakeMaker
-cpan/ExtUtils-MakeMaker/t/META_for_testing_tricky_version.yml                          test data for MakeMaker
 cpan/ExtUtils-MakeMaker/t/META_for_testing.yml                         test data for MakeMaker
-cpan/ExtUtils-MakeMaker/t/miniperl.t                           Test MakeMaker with miniperl
+cpan/ExtUtils-MakeMaker/t/META_for_testing_tricky_version.yml                          test data for MakeMaker
+cpan/ExtUtils-MakeMaker/t/metafile_data.t                      See if META.yml handling works
+cpan/ExtUtils-MakeMaker/t/metafile_file.t                      See if META.yml handling works
 cpan/ExtUtils-MakeMaker/t/min_perl_version.t                   Test the MIN_PERL_VERSION argument to WriteMakefile.
+cpan/ExtUtils-MakeMaker/t/miniperl.t                           Test MakeMaker with miniperl
 cpan/ExtUtils-MakeMaker/t/Mkbootstrap.t                                See if ExtUtils::Mkbootstrap works
 cpan/ExtUtils-MakeMaker/t/MM_Any.t                             See if ExtUtils::MM_Any works
 cpan/ExtUtils-MakeMaker/t/MM_BeOS.t                            See if ExtUtils::MM_BeOS works
@@ -1146,8 +1183,8 @@ cpan/ExtUtils-MakeMaker/t/pm_to_blib.t                            Test for ExtUtils::MakeMaker
 cpan/ExtUtils-MakeMaker/t/pod2man.t                            See if MakeMaker can handle no pod2man
 cpan/ExtUtils-MakeMaker/t/postamble.t                          See if postamble works
 cpan/ExtUtils-MakeMaker/t/prefixify.t                          See if MakeMaker can apply a PREFIX
-cpan/ExtUtils-MakeMaker/t/prereq_print.t                               See if PREREQ_PRINT works
 cpan/ExtUtils-MakeMaker/t/prereq.t                             See if MakeMaker works
+cpan/ExtUtils-MakeMaker/t/prereq_print.t                               See if PREREQ_PRINT works
 cpan/ExtUtils-MakeMaker/t/problems.t                           How MakeMaker reacts to build problems
 cpan/ExtUtils-MakeMaker/t/prompt.t                             See if E::MM::prompt() works
 cpan/ExtUtils-MakeMaker/t/recurs.t                             See if recursive builds work
@@ -1171,8 +1208,8 @@ cpan/File-Fetch/t/01_File-Fetch.t File::Fetch tests
 cpan/File-Fetch/t/null_subclass.t
 cpan/File-Path/lib/File/Path.pm                Do things like 'mkdir -p' and 'rm -r'
 cpan/File-Path/t/FilePathTest.pm       See if File::Path works
-cpan/File-Path/t/Path_root.t           See if File::Path works
 cpan/File-Path/t/Path.t                        See if File::Path works
+cpan/File-Path/t/Path_root.t           See if File::Path works
 cpan/File-Path/t/Path_win32.t          See if File::Path works
 cpan/File-Path/t/taint.t               See if File::Path works with -T
 cpan/File-Temp/lib/File/Temp.pm        create safe temporary files and file handles
@@ -1302,16 +1339,16 @@ cpan/IO-Compress/lib/File/GlobMapper.pm                 IO::Compress
 cpan/IO-Compress/lib/IO/Compress/Adapter/Bzip2.pm      IO::Compress
 cpan/IO-Compress/lib/IO/Compress/Adapter/Deflate.pm    IO::Compress
 cpan/IO-Compress/lib/IO/Compress/Adapter/Identity.pm   IO::Compress
-cpan/IO-Compress/lib/IO/Compress/Base/Common.pm                IO::Compress
 cpan/IO-Compress/lib/IO/Compress/Base.pm               IO::Compress
+cpan/IO-Compress/lib/IO/Compress/Base/Common.pm                IO::Compress
 cpan/IO-Compress/lib/IO/Compress/Bzip2.pm              IO::Compress
 cpan/IO-Compress/lib/IO/Compress/Deflate.pm            IO::Compress
 cpan/IO-Compress/lib/IO/Compress/FAQ.pod               IO::Compress
-cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm     IO::Compress
 cpan/IO-Compress/lib/IO/Compress/Gzip.pm               IO::Compress
+cpan/IO-Compress/lib/IO/Compress/Gzip/Constants.pm     IO::Compress
 cpan/IO-Compress/lib/IO/Compress/RawDeflate.pm         IO::Compress
-cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm      IO::Compress
 cpan/IO-Compress/lib/IO/Compress/Zip.pm                        IO::Compress
+cpan/IO-Compress/lib/IO/Compress/Zip/Constants.pm      IO::Compress
 cpan/IO-Compress/lib/IO/Compress/Zlib/Constants.pm     IO::Compress
 cpan/IO-Compress/lib/IO/Compress/Zlib/Extra.pm         IO::Compress
 cpan/IO-Compress/lib/IO/Uncompress/Adapter/Bunzip2.pm  IO::Compress
@@ -1371,13 +1408,13 @@ cpan/IO-Compress/t/104destroy-rawdeflate.t              IO::Compress
 cpan/IO-Compress/t/104destroy-zip.t                    IO::Compress
 cpan/IO-Compress/t/105oneshot-bzip2.t                  IO::Compress
 cpan/IO-Compress/t/105oneshot-deflate.t                        IO::Compress
-cpan/IO-Compress/t/105oneshot-gzip-only.t              IO::Compress
 cpan/IO-Compress/t/105oneshot-gzip.t                   IO::Compress
+cpan/IO-Compress/t/105oneshot-gzip-only.t              IO::Compress
 cpan/IO-Compress/t/105oneshot-rawdeflate.t             IO::Compress
+cpan/IO-Compress/t/105oneshot-zip.t                    IO::Compress
 cpan/IO-Compress/t/105oneshot-zip-bzip2-only.t         IO::Compress
 cpan/IO-Compress/t/105oneshot-zip-only.t               IO::Compress
 cpan/IO-Compress/t/105oneshot-zip-store-only.t         IO::Compress
-cpan/IO-Compress/t/105oneshot-zip.t                    IO::Compress
 cpan/IO-Compress/t/106prime-bzip2.t                    IO::Compress
 cpan/IO-Compress/t/106prime-deflate.t                  IO::Compress
 cpan/IO-Compress/t/106prime-gzip.t                     IO::Compress
@@ -1477,14 +1514,14 @@ cpan/IPC-SysV/regen.pl                  IPC::SysV file regeneration script
 cpan/IPC-SysV/SysV.xs                  IPC::SysV extension Perl module
 cpan/IPC-SysV/t/ipcsysv.t              IPC::SysV test file
 cpan/IPC-SysV/t/msg.t                  IPC::SysV test file
-cpan/IPC-SysV/t/podcov.t               IPC::SysV test file
 cpan/IPC-SysV/t/pod.t                  IPC::SysV test file
+cpan/IPC-SysV/t/podcov.t               IPC::SysV test file
 cpan/IPC-SysV/t/sem.t                  IPC::SysV test file
 cpan/IPC-SysV/t/shm.t                  IPC::SysV test file
 cpan/IPC-SysV/typemap                  IPC::SysV typemap
 cpan/JSON-PP/bin/json_pp
-cpan/JSON-PP/lib/JSON/PP/Boolean.pm
 cpan/JSON-PP/lib/JSON/PP.pm
+cpan/JSON-PP/lib/JSON/PP/Boolean.pm
 cpan/JSON-PP/t/000_load.t
 cpan/JSON-PP/t/001_utf8.t
 cpan/JSON-PP/t/002_error.t
@@ -1524,12 +1561,12 @@ cpan/JSON-PP/t/zero-mojibake.t
 cpan/libnet/lib/Net/Cmd.pm
 cpan/libnet/lib/Net/Config.pm
 cpan/libnet/lib/Net/Domain.pm
+cpan/libnet/lib/Net/FTP.pm
 cpan/libnet/lib/Net/FTP/A.pm
 cpan/libnet/lib/Net/FTP/dataconn.pm
 cpan/libnet/lib/Net/FTP/E.pm
 cpan/libnet/lib/Net/FTP/I.pm
 cpan/libnet/lib/Net/FTP/L.pm
-cpan/libnet/lib/Net/FTP.pm
 cpan/libnet/lib/Net/libnetFAQ.pod
 cpan/libnet/lib/Net/Netrc.pm
 cpan/libnet/lib/Net/NNTP.pm
@@ -1543,48 +1580,48 @@ cpan/libnet/t/ftp.t             libnet
 cpan/libnet/t/hostname.t       libnet
 cpan/libnet/t/libnet_t.pl      libnet
 cpan/libnet/t/netrc.t          libnet
+cpan/libnet/t/nntp.t           libnet
 cpan/libnet/t/nntp_ipv6.t
 cpan/libnet/t/nntp_ssl.t
-cpan/libnet/t/nntp.t           libnet
 cpan/libnet/t/pop3_ipv6.t
 cpan/libnet/t/pop3_ssl.t
 cpan/libnet/t/require.t                libnet
+cpan/libnet/t/smtp.t           libnet
 cpan/libnet/t/smtp_ipv6.t
 cpan/libnet/t/smtp_ssl.t
-cpan/libnet/t/smtp.t           libnet
 cpan/libnet/t/time.t           libnet
+cpan/Locale-Codes/lib/Locale/Codes.pm          Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes.pod         Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Codes/API.pod     Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Codes/Changes.pod Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Codes/Constants.pm        Locale::Codes
-cpan/Locale-Codes/lib/Locale/Codes/Country_Codes.pm    Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Country.pm  Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Country.pod Locale::Codes documentation
+cpan/Locale-Codes/lib/Locale/Codes/Country_Codes.pm    Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Country_Retired.pm  Locale::Codes
-cpan/Locale-Codes/lib/Locale/Codes/Currency_Codes.pm   Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Currency.pm Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Currency.pod        Locale::Codes documentation
+cpan/Locale-Codes/lib/Locale/Codes/Currency_Codes.pm   Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Currency_Retired.pm Locale::Codes
-cpan/Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm    Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/LangExt.pm  Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/LangExt.pod Locale::Codes documentation
+cpan/Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm    Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/LangExt_Retired.pm  Locale::Codes
-cpan/Locale-Codes/lib/Locale/Codes/LangFam_Codes.pm    Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/LangFam.pm  Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/LangFam.pod Locale::Codes
+cpan/Locale-Codes/lib/Locale/Codes/LangFam_Codes.pm    Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/LangFam_Retired.pm  Locale::Codes
-cpan/Locale-Codes/lib/Locale/Codes/Language_Codes.pm   Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Language.pm Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Language.pod        Locale::Codes documentation
+cpan/Locale-Codes/lib/Locale/Codes/Language_Codes.pm   Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Language_Retired.pm Locale::Codes
-cpan/Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm    Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/LangVar.pm  Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/LangVar.pod Locale::Codes documentation
+cpan/Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm    Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/LangVar_Retired.pm  Locale::Codes
-cpan/Locale-Codes/lib/Locale/Codes.pm          Locale::Codes
-cpan/Locale-Codes/lib/Locale/Codes.pod         Locale::Codes documentation
-cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm     Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Script.pm   Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Script.pod  Locale::Codes documentation
+cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm     Locale::Codes
 cpan/Locale-Codes/lib/Locale/Codes/Script_Retired.pm   Locale::Codes
 cpan/Locale-Codes/lib/Locale/Country.pm                Locale::Codes
 cpan/Locale-Codes/lib/Locale/Country.pod       Locale::Codes documentation
@@ -1594,25 +1631,25 @@ cpan/Locale-Codes/lib/Locale/Language.pm        Locale::Codes
 cpan/Locale-Codes/lib/Locale/Language.pod      Locale::Codes documentation
 cpan/Locale-Codes/lib/Locale/Script.pm         Locale::Codes
 cpan/Locale-Codes/lib/Locale/Script.pod                Locale::Codes documentation
-cpan/Locale-Codes/t/country_old.t      Locale::Codes tests
 cpan/Locale-Codes/t/country.t                  Locale::Codes tests
-cpan/Locale-Codes/t/currency_old.t
+cpan/Locale-Codes/t/country_old.t      Locale::Codes tests
 cpan/Locale-Codes/t/currency.t
+cpan/Locale-Codes/t/currency_old.t
 cpan/Locale-Codes/t/langext.t
 cpan/Locale-Codes/t/langfam.t
-cpan/Locale-Codes/t/language_old.t     Locale::Codes tests
 cpan/Locale-Codes/t/language.t                 Locale::Codes tests
+cpan/Locale-Codes/t/language_old.t     Locale::Codes tests
 cpan/Locale-Codes/t/langvar.t
-cpan/Locale-Codes/t/script_old.t
 cpan/Locale-Codes/t/script.t
+cpan/Locale-Codes/t/script_old.t
 cpan/Locale-Codes/t/testfunc.pl                        Locale::Codes tests
+cpan/Locale-Codes/t/vals.pl
 cpan/Locale-Codes/t/vals_country.pl
 cpan/Locale-Codes/t/vals_currency.pl
 cpan/Locale-Codes/t/vals_langext.pl
 cpan/Locale-Codes/t/vals_langfam.pl
 cpan/Locale-Codes/t/vals_language.pl
 cpan/Locale-Codes/t/vals_langvar.pl
-cpan/Locale-Codes/t/vals.pl
 cpan/Locale-Codes/t/vals_script.pl
 cpan/Locale-Maketext-Simple/lib/Locale/Maketext/Simple.pm      Locale::Simple
 cpan/Locale-Maketext-Simple/t/0-signature.t                    Locale::Simple tests
@@ -1624,20 +1661,20 @@ cpan/Locale-Maketext-Simple/t/po_with_i_default/fr.po           Locale::Simple tests
 cpan/Locale-Maketext-Simple/t/po_with_i_default/i_default.po   Locale::Simple tests
 cpan/Locale-Maketext-Simple/t/po_without_i_default/en.po       Locale::Simple tests
 cpan/Locale-Maketext-Simple/t/po_without_i_default/fr.po       Locale::Simple tests
-cpan/Math-BigInt-FastCalc/FastCalc.xs  Math::BigInt::FastCalc extension
-cpan/Math-BigInt-FastCalc/lib/Math/BigInt/FastCalc.pm  Math::BigInt::FastCalc extension
-cpan/Math-BigInt-FastCalc/t/bigintfc.t Math::BigInt::FastCalc extension
-cpan/Math-BigInt-FastCalc/t/bootstrap.t        Math::BigInt::FastCalc extension
-cpan/Math-BigInt-FastCalc/t/leak.t     test for memory leaks in Math::BigInt::FastCalc
-cpan/Math-BigInt-FastCalc/t/mbi_rand.t Math::BigInt::FastCalc extension
 cpan/Math-BigInt/lib/Math/BigFloat.pm          An arbitrary precision floating-point arithmetic package
-cpan/Math-BigInt/lib/Math/BigInt/CalcEmu.pm    Pure Perl module to support Math::BigInt
-cpan/Math-BigInt/lib/Math/BigInt/Calc.pm       Pure Perl module to support Math::BigInt
 cpan/Math-BigInt/lib/Math/BigInt.pm    An arbitrary precision integer arithmetic package
+cpan/Math-BigInt/lib/Math/BigInt/Calc.pm       Pure Perl module to support Math::BigInt
+cpan/Math-BigInt/lib/Math/BigInt/CalcEmu.pm    Pure Perl module to support Math::BigInt
+cpan/Math-BigInt/t/_e_math.t           Helper routine in BigFloat for _e math
 cpan/Math-BigInt/t/alias.inc           Support for BigInt tests
 cpan/Math-BigInt/t/bare_mbf.t          Test MBF under Math::BigInt::BareCalc
 cpan/Math-BigInt/t/bare_mbi.t          Test MBI under Math::BigInt::BareCalc
 cpan/Math-BigInt/t/bare_mif.t          Rounding tests under BareCalc
+cpan/Math-BigInt/t/bdstr-mbf.t         Test Math::BigInt
+cpan/Math-BigInt/t/bdstr-mbi.t         Test Math::BigInt
+cpan/Math-BigInt/t/bestr-mbf.t         Test Math::BigInt
+cpan/Math-BigInt/t/bestr-mbi.t         Test Math::BigInt
+cpan/Math-BigInt/t/big_pi_e.t          test bpi() and bexp()
 cpan/Math-BigInt/t/bigfltpm.inc                Shared tests for bigfltpm.t and sub_mbf.t
 cpan/Math-BigInt/t/bigfltpm.t          See if BigFloat.pm works
 cpan/Math-BigInt/t/bigintc.t           See if BigInt/Calc.pm works
@@ -1645,29 +1682,43 @@ cpan/Math-BigInt/t/bigintpm.inc         Shared tests for bigintpm.t and sub_mbi.t
 cpan/Math-BigInt/t/bigintpm.t          See if BigInt.pm works
 cpan/Math-BigInt/t/bigints.t           See if BigInt.pm works
 cpan/Math-BigInt/t/biglog.t            Test the log function
-cpan/Math-BigInt/t/big_pi_e.t          test bpi() and bexp()
 cpan/Math-BigInt/t/bigroot.t           Test the broot function
+cpan/Math-BigInt/t/bnstr-mbf.t         Test Math::BigInt
+cpan/Math-BigInt/t/bnstr-mbi.t         Test Math::BigInt
+cpan/Math-BigInt/t/bsstr-mbf.t         Test Math::BigInt
+cpan/Math-BigInt/t/bsstr-mbi.t         Test Math::BigInt
 cpan/Math-BigInt/t/calling.t           Test calling conventions
+cpan/Math-BigInt/t/calling-class-methods.t     Test Math::BigInt
+cpan/Math-BigInt/t/calling-instance-methods.t  Test Math::BigInt
 cpan/Math-BigInt/t/config.t            Test Math::BigInt->config()
-cpan/Math-BigInt/t/constant.t          Test Math::BigInt/BigFloat under :constant
 cpan/Math-BigInt/t/const_mbf.t         Test Math::BigInt
+cpan/Math-BigInt/t/constant.t          Test Math::BigInt/BigFloat under :constant
 cpan/Math-BigInt/t/downgrade.t         Test if use Math::BigInt(); under downgrade works
-cpan/Math-BigInt/t/_e_math.t           Helper routine in BigFloat for _e math
+cpan/Math-BigInt/t/dparts-mbf.t                Test Math::BigInt
+cpan/Math-BigInt/t/dparts-mbi.t                Test Math::BigInt
+cpan/Math-BigInt/t/eparts-mbf.t                Test Math::BigInt
+cpan/Math-BigInt/t/eparts-mbi.t                Test Math::BigInt
+cpan/Math-BigInt/t/from_bin-mbf.t      Test Math::BigInt
 cpan/Math-BigInt/t/from_hex-mbf.t      Test Math::BigInt
+cpan/Math-BigInt/t/from_oct-mbf.t      Test Math::BigInt
 cpan/Math-BigInt/t/inf_nan.t           Special tests for inf and *NaN* handling
 cpan/Math-BigInt/t/isa.t               Test for Math::BigInt inheritance
 cpan/Math-BigInt/t/lib_load.t          Test sane lib names
 cpan/Math-BigInt/t/Math/BigFloat/Subclass.pm   Empty subclass of BigFloat for test
 cpan/Math-BigInt/t/Math/BigInt/BareCalc.pm     Bigint's simulation of Calc
+cpan/Math-BigInt/t/Math/BigInt/Lib/TestUtil.pm Test Math::BigInt
 cpan/Math-BigInt/t/Math/BigInt/Scalar.pm       Pure Perl module to support Math::BigInt
 cpan/Math-BigInt/t/Math/BigInt/Subclass.pm     Empty subclass of BigInt for test
 cpan/Math-BigInt/t/mbf_ali.t           Tests for BigFloat
 cpan/Math-BigInt/t/mbi_ali.t           Tests for BigInt
+cpan/Math-BigInt/t/mbi_rand.t          Test Math::BigInt randomly
 cpan/Math-BigInt/t/mbimbf.inc          Actual BigInt/BigFloat accuracy, precision and fallback, round_mode tests
 cpan/Math-BigInt/t/mbimbf.t            BigInt/BigFloat accuracy, precision and fallback, round_mode
-cpan/Math-BigInt/t/mbi_rand.t          Test Math::BigInt randomly
 cpan/Math-BigInt/t/nan_cmp.t           overloaded comparison involving *NaN*
+cpan/Math-BigInt/t/new-mbf.t           Test Math::BigInt
 cpan/Math-BigInt/t/new_overloaded.t    test overloaded numbers in BigFloat's new()
+cpan/Math-BigInt/t/nparts-mbf.t                Test Math::BigInt
+cpan/Math-BigInt/t/nparts-mbi.t                Test Math::BigInt
 cpan/Math-BigInt/t/objectify_mbf.t     Math::BigInt tests
 cpan/Math-BigInt/t/objectify_mbi.t     Math::BigInt tests
 cpan/Math-BigInt/t/req_mbf0.t          test: require Math::BigFloat; ->bzero();
@@ -1679,30 +1730,38 @@ cpan/Math-BigInt/t/req_mbfw.t           require Math::BigFloat; import ( with => );
 cpan/Math-BigInt/t/require.t           Test if require Math::BigInt works
 cpan/Math-BigInt/t/round.t             Test rounding with non-integer A and P
 cpan/Math-BigInt/t/rt-16221.t          Tests for objectify() w/foreign objs
+cpan/Math-BigInt/t/sparts-mbf.t                Test Math::BigInt
+cpan/Math-BigInt/t/sparts-mbi.t                Test Math::BigInt
 cpan/Math-BigInt/t/sub_ali.t           Tests for aliases in BigInt subclasses
 cpan/Math-BigInt/t/sub_mbf.t           Empty subclass test of BigFloat
 cpan/Math-BigInt/t/sub_mbi.t           Empty subclass test of BigInt
 cpan/Math-BigInt/t/sub_mif.t           Test A & P with subclasses using mbimbf.inc
 cpan/Math-BigInt/t/trap.t              Test whether trap_nan and trap_inf work
-cpan/Math-BigInt/t/upgrade2.t          Test that two upgrade levels work
-cpan/Math-BigInt/t/upgradef.t          Test if use Math::BigFloat(); under upgrade works
 cpan/Math-BigInt/t/upgrade.inc         Actual tests for upgrade.t
 cpan/Math-BigInt/t/upgrade.t           Test if use Math::BigInt(); under upgrade works
+cpan/Math-BigInt/t/upgrade2.t          Test that two upgrade levels work
+cpan/Math-BigInt/t/upgradef.t          Test if use Math::BigFloat(); under upgrade works
+cpan/Math-BigInt/t/use.t               Test if use Math::BigInt(); works
 cpan/Math-BigInt/t/use_lib1.t          Test combinations of Math::BigInt and BigFloat
 cpan/Math-BigInt/t/use_lib2.t          Test combinations of Math::BigInt and BigFloat
 cpan/Math-BigInt/t/use_lib3.t          Test combinations of Math::BigInt and BigFloat
 cpan/Math-BigInt/t/use_lib4.t          Test combinations of Math::BigInt and BigFloat
 cpan/Math-BigInt/t/use_mbfw.t          use BigFloat w/ with and lib at the same time
-cpan/Math-BigInt/t/use.t               Test if use Math::BigInt(); works
 cpan/Math-BigInt/t/with_sub.t          Test use Math::BigFloat with => package
-cpan/Math-BigRat/lib/Math/BigRat.pm    Math::BigRat
+cpan/Math-BigInt-FastCalc/FastCalc.xs  Math::BigInt::FastCalc extension
+cpan/Math-BigInt-FastCalc/lib/Math/BigInt/FastCalc.pm  Math::BigInt::FastCalc extension
+cpan/Math-BigInt-FastCalc/t/bigintfc.t Math::BigInt::FastCalc extension
+cpan/Math-BigInt-FastCalc/t/bootstrap.t        Math::BigInt::FastCalc extension
+cpan/Math-BigInt-FastCalc/t/leak.t     test for memory leaks in Math::BigInt::FastCalc
+cpan/Math-BigInt-FastCalc/t/mbi_rand.t Math::BigInt::FastCalc extension
+cpan/Math-BigRat/lib/Math/BigRat.pm    Math::BigRat
 cpan/Math-BigRat/t/big_ap.t            Math::BigRat test
 cpan/Math-BigRat/t/bigfltpm.inc                Math::BigRat test
 cpan/Math-BigRat/t/bigfltrt.t          Math::BigRat test
 cpan/Math-BigRat/t/biglog.t            Math::BigRat test
+cpan/Math-BigRat/t/bigrat.t            Math::BigRat test
 cpan/Math-BigRat/t/bigratpm.inc                Math::BigRat test
 cpan/Math-BigRat/t/bigratpm.t          Math::BigRat test
-cpan/Math-BigRat/t/bigrat.t            Math::BigRat test
 cpan/Math-BigRat/t/bigratup.t          test under $Math::BigInt::upgrade
 cpan/Math-BigRat/t/bigroot.t           Math::BigRat test
 cpan/Math-BigRat/t/bitwise.t           Math::BigRat test
@@ -1715,16 +1774,16 @@ cpan/Math-Complex/lib/Math/Trig.pm      A simple interface to complex trigonometry
 cpan/Math-Complex/t/Complex.t          See if Math::Complex works
 cpan/Math-Complex/t/Trig.t             See if Math::Trig works
 cpan/Math-Complex/t/underbar.t         See if Math::Complex works
+cpan/Memoize/Memoize.pm                        Memoize
 cpan/Memoize/Memoize/AnyDBM_File.pm    Memoize glue layer for AnyDBM_File
-cpan/Memoize/Memoize/ExpireFile.pm     Memoize expiry manager test scaffold
 cpan/Memoize/Memoize/Expire.pm         Memoize expiry manager example
+cpan/Memoize/Memoize/ExpireFile.pm     Memoize expiry manager test scaffold
 cpan/Memoize/Memoize/ExpireTest.pm     Memoize expiry manager test scaffold
 cpan/Memoize/Memoize/NDBM_File.pm      Memoize glue layer for NDBM_File
-cpan/Memoize/Memoize.pm                        Memoize
 cpan/Memoize/Memoize/SDBM_File.pm      Memoize glue layer for SDBM_File
 cpan/Memoize/Memoize/Storable.pm       Memoize glue layer for Storable
-cpan/Memoize/t/array_confusion.t       Memoize ambiguous array return tests
 cpan/Memoize/t/array.t                 Memoize array context return tests
+cpan/Memoize/t/array_confusion.t       Memoize ambiguous array return tests
 cpan/Memoize/t/correctness.t           Memoize basic correctness tests
 cpan/Memoize/t/errors.t                        Memoize PEBKAC detection tests
 cpan/Memoize/t/expfile.t               Memoize expiry manager tests
@@ -1735,12 +1794,12 @@ cpan/Memoize/t/flush.t                  Memoize 'flush_cache' function tests
 cpan/Memoize/t/normalize.t             Memoize 'normalizer' feature tests
 cpan/Memoize/t/prototype.t             Memoize prototyped function handling tests
 cpan/Memoize/t/speed.t                 "Makes functions faster" advertisement test
-cpan/Memoize/t/tiefeatures.t           Memoize FAULT / MERGE / HASH options test
+cpan/Memoize/t/tie.t                   Memoize tied file test
 cpan/Memoize/t/tie_gdbm.t              Memoize GDBM interface test
 cpan/Memoize/t/tie_ndbm.t              Memoize NDBM interface test
 cpan/Memoize/t/tie_sdbm.t              Memoize SDBM interface test
 cpan/Memoize/t/tie_storable.t          Memoize Storable interface test
-cpan/Memoize/t/tie.t                   Memoize tied file test
+cpan/Memoize/t/tiefeatures.t           Memoize FAULT / MERGE / HASH options test
 cpan/Memoize/t/unmemoize.t             Memoize 'unmemoize' function test
 cpan/MIME-Base64/Base64.pm             MIME::Base64 extension
 cpan/MIME-Base64/Base64.xs             MIME::Base64 extension
@@ -1749,6 +1808,15 @@ cpan/MIME-Base64/t/base64.t              See whether MIME::Base64 works
 cpan/MIME-Base64/t/length.t    See whether MIME::QuotedPrint works
 cpan/MIME-Base64/t/quoted-print.t      See whether MIME::QuotedPrint works
 cpan/MIME-Base64/t/unicode.t           See whether MIME::Base64 works
+cpan/Module-Load/lib/Module/Load.pm            Module::Load
+cpan/Module-Load/t/01_Module-Load.t            Module::Load tests
+cpan/Module-Load/t/02_Module-Load.t            Module::Load tests
+cpan/Module-Load/t/to_load/config_file         Module::Load tests
+cpan/Module-Load/t/to_load/LoadIt.pm           Module::Load tests
+cpan/Module-Load/t/to_load/LoadMe.pl           Module::Load tests
+cpan/Module-Load/t/to_load/Must/Be/Loaded.pm   Module::Load tests
+cpan/Module-Load/t/to_load/TestModule.pm       Module::Load tests
+cpan/Module-Load/t/to_load/ToBeLoaded          Module::Load tests
 cpan/Module-Load-Conditional/lib/Module/Load/Conditional.pm    Module::Conditional
 cpan/Module-Load-Conditional/t/01_Module_Load_Conditional.t    Module::Conditional tests
 cpan/Module-Load-Conditional/t/test_lib/a/X.pm                 Module::Conditional tests
@@ -1765,15 +1833,6 @@ cpan/Module-Load-Conditional/t/to_load/NotX.pm                   Module::Conditional tests
 cpan/Module-Load-Conditional/t/to_load/ToBeLoaded              Module::Conditional tests
 cpan/Module-Loaded/lib/Module/Loaded.pm        Module::Loaded
 cpan/Module-Loaded/t/01_Module-Loaded.t        Module::Loaded tests
-cpan/Module-Load/lib/Module/Load.pm            Module::Load
-cpan/Module-Load/t/01_Module-Load.t            Module::Load tests
-cpan/Module-Load/t/02_Module-Load.t            Module::Load tests
-cpan/Module-Load/t/to_load/config_file         Module::Load tests
-cpan/Module-Load/t/to_load/LoadIt.pm           Module::Load tests
-cpan/Module-Load/t/to_load/LoadMe.pl           Module::Load tests
-cpan/Module-Load/t/to_load/Must/Be/Loaded.pm   Module::Load tests
-cpan/Module-Load/t/to_load/TestModule.pm       Module::Load tests
-cpan/Module-Load/t/to_load/ToBeLoaded          Module::Load tests
 cpan/Module-Metadata/corpus/BOMTest/UTF16BE.pm
 cpan/Module-Metadata/corpus/BOMTest/UTF16LE.pm
 cpan/Module-Metadata/corpus/BOMTest/UTF8.pm
@@ -1800,20 +1859,21 @@ cpan/NEXT/t/unseen.t            NEXT
 cpan/Params-Check/lib/Params/Check.pm  Params::Check
 cpan/Params-Check/t/01_Params-Check.t  Params::Check tests
 cpan/parent/lib/parent.pm                      Establish an ISA relationship with base classes at compile time
-cpan/parent/t/compile-time-file.t              tests for parent.pm
 cpan/parent/t/compile-time.t                   tests for parent.pm
-cpan/parent/t/lib/Dummy2.plugin                        test files for parent.pm
-cpan/parent/t/lib/Dummy/Outside.pm             test files for parent.pm
+cpan/parent/t/compile-time-file.t              tests for parent.pm
 cpan/parent/t/lib/Dummy.pm                     test files for parent.pm
+cpan/parent/t/lib/Dummy/Outside.pm             test files for parent.pm
+cpan/parent/t/lib/Dummy2.plugin                        test files for parent.pm
 cpan/parent/t/lib/FileThatOnlyExistsAsPMC.pmc  test files for parent.pm
 cpan/parent/t/lib/ReturnsFalse.pm              test files for parent.pm
+cpan/parent/t/parent.t                         tests for parent.pm
 cpan/parent/t/parent-classfromclassfile.t      tests for parent.pm
 cpan/parent/t/parent-classfromfile.t           tests for parent.pm
 cpan/parent/t/parent-pmc.t                     tests for parent.pm
 cpan/parent/t/parent-returns-false.t           tests for parent.pm
-cpan/parent/t/parent.t                         tests for parent.pm
 cpan/Parse-CPAN-Meta/corpus/BadMETA.yml
 cpan/Parse-CPAN-Meta/corpus/bareyaml.meta
+cpan/Parse-CPAN-Meta/corpus/CL018_yaml.meta
 cpan/Parse-CPAN-Meta/corpus/json.meta
 cpan/Parse-CPAN-Meta/corpus/META-VR.json
 cpan/Parse-CPAN-Meta/corpus/META-VR.yml
@@ -1824,6 +1884,10 @@ cpan/Parse-CPAN-Meta/t/03_functions.t
 cpan/Parse-CPAN-Meta/t/04_export.t
 cpan/Parse-CPAN-Meta/t/05_errors.t
 cpan/Parse-CPAN-Meta/t/lib/Parse/CPAN/Meta/Test.pm
+cpan/Perl-OSType/lib/Perl/OSType.pm                    Perl::OSType
+cpan/Perl-OSType/t/OSType.t                    Perl::OSType
+cpan/perlfaq/lib/perlfaq.pm    Perl frequently asked questions
+cpan/perlfaq/lib/perlfaq.pod   Perl frequently asked questions
 cpan/perlfaq/lib/perlfaq1.pod          General Questions About Perl
 cpan/perlfaq/lib/perlfaq2.pod  Obtaining and Learning about Perl
 cpan/perlfaq/lib/perlfaq3.pod  Programming Tools
@@ -1833,13 +1897,9 @@ cpan/perlfaq/lib/perlfaq6.pod    Regexes
 cpan/perlfaq/lib/perlfaq7.pod  Perl Language Issues
 cpan/perlfaq/lib/perlfaq8.pod  System Interaction
 cpan/perlfaq/lib/perlfaq9.pod  Networking
-cpan/perlfaq/lib/perlfaq.pm    Perl frequently asked questions
-cpan/perlfaq/lib/perlfaq.pod   Perl frequently asked questions
 cpan/perlfaq/lib/perlglossary.pod      Perl Glossary
 cpan/PerlIO-via-QuotedPrint/lib/PerlIO/via/QuotedPrint.pm      PerlIO::via::QuotedPrint
 cpan/PerlIO-via-QuotedPrint/t/QuotedPrint.t                    PerlIO::via::QuotedPrint
-cpan/Perl-OSType/lib/Perl/OSType.pm                    Perl::OSType
-cpan/Perl-OSType/t/OSType.t                    Perl::OSType
 cpan/Pod-Checker/lib/Pod/Checker.pm
 cpan/Pod-Checker/scripts/podchecker.PL
 cpan/Pod-Checker/t/pod/contains_bad_pod.xr
@@ -1856,59 +1916,6 @@ cpan/Pod-Escapes/lib/Pod/Escapes.pm      Pod::Escapes
 cpan/Pod-Escapes/t/01_about_verbose.t  test Pod::Escapes
 cpan/Pod-Escapes/t/10_main.t           test Pod::Escapes
 cpan/Pod-Escapes/t/15_name2charnum.t   test Pod::Escapes
-cpan/podlators/lib/Pod/Man.pm                  Convert POD data to *roff
-cpan/podlators/lib/Pod/ParseLink.pm            Perl an L<> formatting code in POD text
-cpan/podlators/lib/Pod/Text/Color.pm           Convert POD data to color ASCII text
-cpan/podlators/lib/Pod/Text/Overstrike.pm      Convert POD data to formatted overstrike text
-cpan/podlators/lib/Pod/Text.pm                 Pod-Parser - convert POD data to formatted ASCII text
-cpan/podlators/lib/Pod/Text/Termcap.pm         Convert POD data to ASCII text with format escapes
-cpan/podlators/Makefile.PL                     podlators Makefile.PL
-cpan/podlators/scripts/pod2man.PL              Translator to turn pod into manpage
-cpan/podlators/scripts/pod2text.PL             Translator to turn pod into text
-cpan/podlators/t/data/basic.cap                        podlators test                  podlators test
-cpan/podlators/t/data/basic.clr                        podlators test
-cpan/podlators/t/data/basic.man                        podlators test
-cpan/podlators/t/data/basic.ovr                        podlators test
-cpan/podlators/t/data/basic.pod                        podlators test
-cpan/podlators/t/data/basic.txt                        podlators test
-cpan/podlators/t/data/perl.conf                        podlators test
-cpan/podlators/t/data/snippets/man/cpp                 podlators test
-cpan/podlators/t/data/snippets/man/utf8-nonbreaking                    podlators test
-cpan/podlators/t/data/snippets/man/utf8-verbatim                       podlators test
-cpan/podlators/t/data/snippets/README                  podlators test
-cpan/podlators/t/data/snippets/text/cpp                        podlators test
-cpan/podlators/t/data/termcap                  podlators test
-cpan/podlators/t/docs/pod-spelling.t                   podlators test
-cpan/podlators/t/docs/pod.t                    podlators test
-cpan/podlators/t/docs/synopsis.t                       podlators test
-cpan/podlators/t/general/basic.t                       podlators test
-cpan/podlators/t/general/filehandle.t                  podlators test
-cpan/podlators/t/general/pod-parser.t                  podlators test
-cpan/podlators/t/lib/Test/Podlators.pm                 podlators test
-cpan/podlators/t/lib/Test/RRA/Config.pm                        podlators test
-cpan/podlators/t/lib/Test/RRA/ModuleVersion.pm         podlators test
-cpan/podlators/t/lib/Test/RRA.pm                       podlators test
-cpan/podlators/t/man/basic.t                   podlators test
-cpan/podlators/t/man/devise-date.t                     podlators test
-cpan/podlators/t/man/devise-title.t                    podlators test
-cpan/podlators/t/man/empty.t                   podlators test
-cpan/podlators/t/man/heading.t                 podlators test
-cpan/podlators/t/man/no-encode.t               podlators test
-cpan/podlators/t/man/options.t                 podlators test
-cpan/podlators/t/man/utf8-io.t                 podlators test
-cpan/podlators/t/parselink/basic.t                     podlators test
-cpan/podlators/t/style/minimum-version.t                       podlators test
-cpan/podlators/t/style/module-version.t                        podlators test
-cpan/podlators/t/style/strict.t                        podlators test
-cpan/podlators/t/text/basic.t                  podlators test
-cpan/podlators/t/text/color.t                  podlators test
-cpan/podlators/t/text/empty.t                  podlators test
-cpan/podlators/t/text/encoding.t                       podlators test
-cpan/podlators/t/text/options.t                        podlators test
-cpan/podlators/t/text/overstrike.t                     podlators test
-cpan/podlators/t/text/perlio.t                 podlators test
-cpan/podlators/t/text/termcap.t                        podlators test
-cpan/podlators/t/text/utf8.t                   podlators test
 cpan/Pod-Parser/lib/Pod/Find.pm                        find POD documents in directory trees
 cpan/Pod-Parser/lib/Pod/InputObjects.pm                Pod-Parser - define objects for input streams
 cpan/Pod-Parser/lib/Pod/Parser.pm              Pod-Parser - define base class for parsing POD
@@ -1919,18 +1926,18 @@ cpan/Pod-Parser/scripts/podselect.PL    Pod-Parser - Pod::Select::podselect() CLI
 cpan/Pod-Parser/t/pod/contains_bad_pod.xr      Pod-Parser test file
 cpan/Pod-Parser/t/pod/contains_pod.t           Pod-Parser test
 cpan/Pod-Parser/t/pod/contains_pod.xr          Pod-Parser test file
+cpan/Pod-Parser/t/pod/empty.xr
 cpan/Pod-Parser/t/pod/emptycmd.t               Test empty pod directives
 cpan/Pod-Parser/t/pod/emptycmd.xr              Expected results for emptycmd.t
-cpan/Pod-Parser/t/pod/empty.xr
 cpan/Pod-Parser/t/pod/find.t                   See if Pod::Find works
 cpan/Pod-Parser/t/pod/for.t                    Test =for directive
 cpan/Pod-Parser/t/pod/for.xr                   Expected results for for.t
 cpan/Pod-Parser/t/pod/headings.t               Test =head directives
 cpan/Pod-Parser/t/pod/headings.xr              Expected results for headings.t
-cpan/Pod-Parser/t/pod/included.t               Test =include directive
-cpan/Pod-Parser/t/pod/included.xr              Expected results for included.t
 cpan/Pod-Parser/t/pod/include.t                        Test =include directive
 cpan/Pod-Parser/t/pod/include.xr               Expected results for include.t
+cpan/Pod-Parser/t/pod/included.t               Test =include directive
+cpan/Pod-Parser/t/pod/included.xr              Expected results for included.t
 cpan/Pod-Parser/t/pod/lref.t                   Test L<...> sequences
 cpan/Pod-Parser/t/pod/lref.xr                  Expected results for lref.t
 cpan/Pod-Parser/t/pod/multiline_items.t                Test multiline =items
@@ -1954,9 +1961,9 @@ cpan/Pod-Parser/t/pod/twice.t                     Test Pod::Parser
 cpan/Pod-Perldoc/corpus/no-head.pod            test file for Pod-Perldoc
 cpan/Pod-Perldoc/corpus/perlfunc.pod           test file for Pod-Perldoc
 cpan/Pod-Perldoc/corpus/utf8.pod               test file for Pod-Perldoc
+cpan/Pod-Perldoc/lib/Pod/Perldoc.pm            guts of the 'perldoc' utility
 cpan/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm     utility module for perldoc
 cpan/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm  options parsing for perldoc
-cpan/Pod-Perldoc/lib/Pod/Perldoc.pm            guts of the 'perldoc' utility
 cpan/Pod-Perldoc/lib/Pod/Perldoc/ToANSI.pm     convert POD to ANSI text
 cpan/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm  let perldoc check POD for errors
 cpan/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm      render POD as man pages
@@ -1972,21 +1979,21 @@ cpan/Pod-Perldoc/perldoc.pod
 cpan/Pod-Perldoc/t/load.t                      test file for Pod-Perldoc
 cpan/Pod-Perldoc/t/man/_get_columns.t          test file for Pod-Perldoc
 cpan/Pod-Perldoc/t/pod.t                       test file for Pod-Perldoc
+cpan/Pod-Simple/lib/Pod/Simple.pm                      Pod made simple
+cpan/Pod-Simple/lib/Pod/Simple.pod                     Pod for Pod::Simple
 cpan/Pod-Simple/lib/Pod/Simple/BlackBox.pm             Pod::Simple::BlackBox
 cpan/Pod-Simple/lib/Pod/Simple/Checker.pm              check the Pod syntax of a document
 cpan/Pod-Simple/lib/Pod/Simple/Debug.pm                        put Pod::Simple into trace/debug mode
 cpan/Pod-Simple/lib/Pod/Simple/DumpAsText.pm           dump Pod-parsing events as text
 cpan/Pod-Simple/lib/Pod/Simple/DumpAsXML.pm            turn Pod into XML
+cpan/Pod-Simple/lib/Pod/Simple/HTML.pm                 convert Pod to HTML
 cpan/Pod-Simple/lib/Pod/Simple/HTMLBatch.pm            convert several Pod files to several HTML files
 cpan/Pod-Simple/lib/Pod/Simple/HTMLLegacy.pm           Pod::Simple::HTMLLegacy
-cpan/Pod-Simple/lib/Pod/Simple/HTML.pm                 convert Pod to HTML
 cpan/Pod-Simple/lib/Pod/Simple/LinkSection.pm          represent "section" attributes of L codes
 cpan/Pod-Simple/lib/Pod/Simple/Methody.pm              turn Pod::Simple events into method calls
-cpan/Pod-Simple/lib/Pod/Simple.pm                      Pod made simple
-cpan/Pod-Simple/lib/Pod/Simple.pod                     Pod for Pod::Simple
 cpan/Pod-Simple/lib/Pod/Simple/Progress.pm             Pod::Simple::Progress
-cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm   end-tokens from Pod::Simple::PullParser
 cpan/Pod-Simple/lib/Pod/Simple/PullParser.pm           a pull-parser interface to parsing Pod
+cpan/Pod-Simple/lib/Pod/Simple/PullParserEndToken.pm   end-tokens from Pod::Simple::PullParser
 cpan/Pod-Simple/lib/Pod/Simple/PullParserStartToken.pm start-tokens from Pod::Simple::PullParser
 cpan/Pod-Simple/lib/Pod/Simple/PullParserTextToken.pm  text-tokens from Pod::Simple::PullParser
 cpan/Pod-Simple/lib/Pod/Simple/PullParserToken.pm      tokens from Pod::Simple::PullParser
@@ -1994,25 +2001,26 @@ cpan/Pod-Simple/lib/Pod/Simple/RTF.pm                   format Pod as RTF
 cpan/Pod-Simple/lib/Pod/Simple/Search.pm               find POD documents in directory trees
 cpan/Pod-Simple/lib/Pod/Simple/SimpleTree.pm           parse Pod into a simple parse tree
 cpan/Pod-Simple/lib/Pod/Simple/Subclassing.pod         write a formatter as a Pod::Simple subclass
-cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm          get the text content of Pod
 cpan/Pod-Simple/lib/Pod/Simple/Text.pm                 format Pod as plaintext
+cpan/Pod-Simple/lib/Pod/Simple/TextContent.pm          get the text content of Pod
 cpan/Pod-Simple/lib/Pod/Simple/TiedOutFH.pm            Pod::Simple::TiedOutFH
-cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm                Pod::Simple::TranscodeDumb
 cpan/Pod-Simple/lib/Pod/Simple/Transcode.pm            Pod::Simple::Transcode
+cpan/Pod-Simple/lib/Pod/Simple/TranscodeDumb.pm                Pod::Simple::TranscodeDumb
 cpan/Pod-Simple/lib/Pod/Simple/TranscodeSmart.pm       Pod::Simple::TranscodeSmart
 cpan/Pod-Simple/lib/Pod/Simple/XHTML.pm                        turn Pod into XHTML
 cpan/Pod-Simple/lib/Pod/Simple/XMLOutStream.pm         turn Pod into XML
 cpan/Pod-Simple/t/00about.t                            Pod::Simple test file
 cpan/Pod-Simple/t/20_skip.t                            Pod::Simple test file
+cpan/Pod-Simple/t/ac_d.t                               Pod::Simple test file
 cpan/Pod-Simple/t/accept01.t                           Pod::Simple test file
 cpan/Pod-Simple/t/accept05.t                           Pod::Simple test file
-cpan/Pod-Simple/t/ac_d.t                               Pod::Simple test file
 cpan/Pod-Simple/t/ascii_order.pl
 cpan/Pod-Simple/t/basic.t                              Pod::Simple test file
 cpan/Pod-Simple/t/begin.t                              Pod::Simple test file
 cpan/Pod-Simple/t/cbacks.t                             Pod::Simple test file
 cpan/Pod-Simple/t/chunking.t                           Pod::Simple test file
 cpan/Pod-Simple/t/closeys.t                            Pod::Simple test file
+cpan/Pod-Simple/t/corpus.t                             Pod::Simple test file
 cpan/Pod-Simple/t/corpus/2202jp.txt                    Pod::Simple test file
 cpan/Pod-Simple/t/corpus/2202jp.xml                    Pod::Simple test file
 cpan/Pod-Simple/t/corpus/2202jpx.txt                   Pod::Simple test file
@@ -2021,16 +2029,6 @@ cpan/Pod-Simple/t/corpus/2202jpy.txt                     Pod::Simple test file
 cpan/Pod-Simple/t/corpus/2202jpy.xml                   Pod::Simple test file
 cpan/Pod-Simple/t/corpus/2202jpz.txt                   Pod::Simple test file
 cpan/Pod-Simple/t/corpus/2202jpz.xml                   Pod::Simple test file
-cpan/Pod-Simple/t/corpus2/fiqhakbar_iso6.txt           Pod::Simple test file
-cpan/Pod-Simple/t/corpus2/fiqhakbar_iso6.xml           Pod::Simple test file
-cpan/Pod-Simple/t/corpus2/polish_implicit_utf8.txt     Pod::Simple test file
-cpan/Pod-Simple/t/corpus2/polish_utf16be_bom.txt       Pod::Simple test file
-cpan/Pod-Simple/t/corpus2/polish_utf16le_bom.txt       Pod::Simple test file
-cpan/Pod-Simple/t/corpus2/polish_utf8_bom2.txt         Pod::Simple test file
-cpan/Pod-Simple/t/corpus2/polish_utf8_bom2.xml         Pod::Simple test file
-cpan/Pod-Simple/t/corpus2/polish_utf8_bom.txt          Pod::Simple test file
-cpan/Pod-Simple/t/corpus2/polish_utf8_bom.xml          Pod::Simple test file
-cpan/Pod-Simple/t/corpus2/README                       Pod::Simple test file
 cpan/Pod-Simple/t/corpus/8859_7.pod                    Pod::Simple test file
 cpan/Pod-Simple/t/corpus/8859_7.xml                    Pod::Simple test file
 cpan/Pod-Simple/t/corpus/cp1256.txt                    Pod::Simple test file
@@ -2055,35 +2053,44 @@ cpan/Pod-Simple/t/corpus/iso6.txt                       Pod::Simple test file
 cpan/Pod-Simple/t/corpus/iso6.xml                      Pod::Simple test file
 cpan/Pod-Simple/t/corpus/koi8r.txt                     Pod::Simple test file
 cpan/Pod-Simple/t/corpus/koi8r.xml                     Pod::Simple test file
+cpan/Pod-Simple/t/corpus/laozi38.txt                   Pod::Simple test file
+cpan/Pod-Simple/t/corpus/laozi38.xml                   Pod::Simple test file
 cpan/Pod-Simple/t/corpus/laozi38b.txt                  Pod::Simple test file
 cpan/Pod-Simple/t/corpus/laozi38b.xml                  Pod::Simple test file
 cpan/Pod-Simple/t/corpus/laozi38p.pod                  Pod::Simple test file
 cpan/Pod-Simple/t/corpus/laozi38p.xml                  Pod::Simple test file
-cpan/Pod-Simple/t/corpus/laozi38.txt                   Pod::Simple test file
-cpan/Pod-Simple/t/corpus/laozi38.xml                   Pod::Simple test file
-cpan/Pod-Simple/t/corpus/lat1frim.txt                  Pod::Simple test file
-cpan/Pod-Simple/t/corpus/lat1frim.xml                  Pod::Simple test file
 cpan/Pod-Simple/t/corpus/lat1fr.txt                    Pod::Simple test file
 cpan/Pod-Simple/t/corpus/lat1fr.xml                    Pod::Simple test file
+cpan/Pod-Simple/t/corpus/lat1frim.txt                  Pod::Simple test file
+cpan/Pod-Simple/t/corpus/lat1frim.xml                  Pod::Simple test file
 cpan/Pod-Simple/t/corpus/nonesuch.txt                  Pod::Simple test file
 cpan/Pod-Simple/t/corpus/nonesuch.xml                  Pod::Simple test file
 cpan/Pod-Simple/t/corpus/pasternak_cp1251.txt          Pod::Simple test file
 cpan/Pod-Simple/t/corpus/pasternak_cp1251.xml          Pod::Simple test file
+cpan/Pod-Simple/t/corpus/plain.txt                     Pod::Simple test file
+cpan/Pod-Simple/t/corpus/plain.xml                     Pod::Simple test file
 cpan/Pod-Simple/t/corpus/plain_explicit.txt            Pod::Simple test file
 cpan/Pod-Simple/t/corpus/plain_explicit.xml            Pod::Simple test file
 cpan/Pod-Simple/t/corpus/plain_latin1.txt              Pod::Simple test file
 cpan/Pod-Simple/t/corpus/plain_latin1.xml              Pod::Simple test file
-cpan/Pod-Simple/t/corpus/plain.txt                     Pod::Simple test file
 cpan/Pod-Simple/t/corpus/plain_utf8.txt                        Pod::Simple test file
 cpan/Pod-Simple/t/corpus/plain_utf8.xml                        Pod::Simple test file
-cpan/Pod-Simple/t/corpus/plain.xml                     Pod::Simple test file
 cpan/Pod-Simple/t/corpus/polish_utf8.txt               Pod::Simple test file
 cpan/Pod-Simple/t/corpus/polish_utf8.xml               Pod::Simple test file
 cpan/Pod-Simple/t/corpus/s2763_sjis.txt                        Pod::Simple test file
 cpan/Pod-Simple/t/corpus/s2763_sjis.xml                        Pod::Simple test file
-cpan/Pod-Simple/t/corpus.t                             Pod::Simple test file
 cpan/Pod-Simple/t/corpus/thai_iso11.txt                        Pod::Simple test file
 cpan/Pod-Simple/t/corpus/thai_iso11.xml                        Pod::Simple test file
+cpan/Pod-Simple/t/corpus2/fiqhakbar_iso6.txt           Pod::Simple test file
+cpan/Pod-Simple/t/corpus2/fiqhakbar_iso6.xml           Pod::Simple test file
+cpan/Pod-Simple/t/corpus2/polish_implicit_utf8.txt     Pod::Simple test file
+cpan/Pod-Simple/t/corpus2/polish_utf16be_bom.txt       Pod::Simple test file
+cpan/Pod-Simple/t/corpus2/polish_utf16le_bom.txt       Pod::Simple test file
+cpan/Pod-Simple/t/corpus2/polish_utf8_bom.txt          Pod::Simple test file
+cpan/Pod-Simple/t/corpus2/polish_utf8_bom.xml          Pod::Simple test file
+cpan/Pod-Simple/t/corpus2/polish_utf8_bom2.txt         Pod::Simple test file
+cpan/Pod-Simple/t/corpus2/polish_utf8_bom2.xml         Pod::Simple test file
+cpan/Pod-Simple/t/corpus2/README                       Pod::Simple test file
 cpan/Pod-Simple/t/emptylists.t                         Pod::Simple test file
 cpan/Pod-Simple/t/enc-chars.t
 cpan/Pod-Simple/t/encod01.t                            Pod::Simple test file
@@ -2091,35 +2098,35 @@ cpan/Pod-Simple/t/encod02.t                             Pod::Simple test file
 cpan/Pod-Simple/t/encod03.t                            Pod::Simple test file
 cpan/Pod-Simple/t/encod04.t
 cpan/Pod-Simple/t/end_over.t                           Pod::Simple test file
-cpan/Pod-Simple/t/eol2.t                               Pod::Simple test file
 cpan/Pod-Simple/t/eol.t                                        Pod::Simple test file
+cpan/Pod-Simple/t/eol2.t                               Pod::Simple test file
 cpan/Pod-Simple/t/fake-closers.t                       Pod::Simple test file
+cpan/Pod-Simple/t/fcodes.t                             Pod::Simple test file
 cpan/Pod-Simple/t/fcodes_e.t                           Pod::Simple test file
 cpan/Pod-Simple/t/fcodes_l.t                           Pod::Simple test file
 cpan/Pod-Simple/t/fcodes_s.t                           Pod::Simple test file
-cpan/Pod-Simple/t/fcodes.t                             Pod::Simple test file
-cpan/Pod-Simple/t/fornot.t                             Pod::Simple test file
 cpan/Pod-Simple/t/for.t                                        Pod::Simple test file
+cpan/Pod-Simple/t/fornot.t                             Pod::Simple test file
 cpan/Pod-Simple/t/heads.t                              Pod::Simple test file
 cpan/Pod-Simple/t/html01.t                             Pod::Simple test file
 cpan/Pod-Simple/t/html02.t                             Pod::Simple test file
 cpan/Pod-Simple/t/html03.t                             Pod::Simple test file
 cpan/Pod-Simple/t/htmlbat.t                            Pod::Simple test file
-cpan/Pod-Simple/t/items02.t                            Pod::Simple test file
 cpan/Pod-Simple/t/items.t                              Pod::Simple test file
+cpan/Pod-Simple/t/items02.t                            Pod::Simple test file
 cpan/Pod-Simple/t/itemstar.t                           Pod::Simple test file
-cpan/Pod-Simple/t/junk1o.txt                           Pod::Simple test file
 cpan/Pod-Simple/t/junk1.pod                            Pod::Simple test file
-cpan/Pod-Simple/t/junk2o.txt                           Pod::Simple test file
+cpan/Pod-Simple/t/junk1o.txt                           Pod::Simple test file
 cpan/Pod-Simple/t/junk2.pod                            Pod::Simple test file
+cpan/Pod-Simple/t/junk2o.txt                           Pod::Simple test file
 cpan/Pod-Simple/t/linkclas.t                           Pod::Simple test file
 cpan/Pod-Simple/t/output.t                             Pod::Simple test file
-cpan/Pod-Simple/t/perlcygo.txt                         Pod::Simple test file
 cpan/Pod-Simple/t/perlcyg.pod                          Pod::Simple test file
-cpan/Pod-Simple/t/perlfaqo.txt                         Pod::Simple test file
+cpan/Pod-Simple/t/perlcygo.txt                         Pod::Simple test file
 cpan/Pod-Simple/t/perlfaq.pod                          Pod::Simple test file
-cpan/Pod-Simple/t/perlvaro.txt                         Pod::Simple test file
+cpan/Pod-Simple/t/perlfaqo.txt                         Pod::Simple test file
 cpan/Pod-Simple/t/perlvar.pod                          Pod::Simple test file
+cpan/Pod-Simple/t/perlvaro.txt                         Pod::Simple test file
 cpan/Pod-Simple/t/puller.t                             Pod::Simple test file
 cpan/Pod-Simple/t/pulltitl.t                           Pod::Simple test file
 cpan/Pod-Simple/t/reinit.t                             Pod::Simple test file
@@ -2143,8 +2150,8 @@ cpan/Pod-Simple/t/testlib1/hinkhonk/readme.txt            Pod::Simple test file
 cpan/Pod-Simple/t/testlib1/hinkhonk/Vliff.pm           Pod::Simple test file
 cpan/Pod-Simple/t/testlib1/pod/perlflif.pod            Pod::Simple test file
 cpan/Pod-Simple/t/testlib1/pod/perlthng.pod            Pod::Simple test file
-cpan/Pod-Simple/t/testlib1/squaa/Glunk.pod             Pod::Simple test file
 cpan/Pod-Simple/t/testlib1/squaa.pm                    Pod::Simple test file
+cpan/Pod-Simple/t/testlib1/squaa/Glunk.pod             Pod::Simple test file
 cpan/Pod-Simple/t/testlib1/squaa/Vliff.pm              Pod::Simple test file
 cpan/Pod-Simple/t/testlib1/zikzik.pod                  Pod::Simple test file
 cpan/Pod-Simple/t/testlib1/Zonk/Fiddle.txt             Pod::Simple test file
@@ -2160,16 +2167,16 @@ cpan/Pod-Simple/t/testlib2/squaa/Wowo.pod               Pod::Simple test file
 cpan/Pod-Simple/t/testlib2/Suzzle.pm                   Pod::Simple test file
 cpan/Pod-Simple/t/testlib3/squaa/Vliff.pm              Pod::Simple test file
 cpan/Pod-Simple/t/tiedfh.t                             Pod::Simple test file
-cpan/Pod-Simple/t/verbatim.t                           Pod::Simple test file
 cpan/Pod-Simple/t/verb_fmt.t                           Pod::Simple test file
+cpan/Pod-Simple/t/verbatim.t                           Pod::Simple test file
 cpan/Pod-Simple/t/whine.t
+cpan/Pod-Simple/t/x_nixer.t                            Pod::Simple test file
+cpan/Pod-Simple/t/xhtml-bkb.t
 cpan/Pod-Simple/t/xhtml01.t                            Pod::Simple test file
 cpan/Pod-Simple/t/xhtml05.t                            Pod::Simple test file
 cpan/Pod-Simple/t/xhtml10.t                            Pod::Simple test file
 cpan/Pod-Simple/t/xhtml15.t                            Pod::Simple test file
 cpan/Pod-Simple/t/xhtml20.t                            Pod::Simple test file
-cpan/Pod-Simple/t/xhtml-bkb.t
-cpan/Pod-Simple/t/x_nixer.t                            Pod::Simple test file
 cpan/Pod-Usage/lib/Pod/Usage.pm
 cpan/Pod-Usage/scripts/pod2usage.PL
 cpan/Pod-Usage/t/inc/Pod/InputObjects.pm
@@ -2179,17 +2186,70 @@ cpan/Pod-Usage/t/inc/Pod/Select.pm
 cpan/Pod-Usage/t/pod/headwithmarkup.pl
 cpan/Pod-Usage/t/pod/headwithmarkup.t
 cpan/Pod-Usage/t/pod/p2u_data.pl
-cpan/Pod-Usage/t/pod/pod2usage2.t
 cpan/Pod-Usage/t/pod/pod2usage.t
 cpan/Pod-Usage/t/pod/pod2usage.xr
+cpan/Pod-Usage/t/pod/pod2usage2.t
 cpan/Pod-Usage/t/pod/selectheaders.pl
 cpan/Pod-Usage/t/pod/selectheaders.t
 cpan/Pod-Usage/t/pod/selectsections.pl
 cpan/Pod-Usage/t/pod/selectsections.t
 cpan/Pod-Usage/t/pod/testcmp.pl
 cpan/Pod-Usage/t/pod/testp2pt.pl
-cpan/Pod-Usage/t/pod/usage2.pod
 cpan/Pod-Usage/t/pod/usage.pod
+cpan/Pod-Usage/t/pod/usage2.pod
+cpan/podlators/lib/Pod/Man.pm                  Convert POD data to *roff
+cpan/podlators/lib/Pod/ParseLink.pm            Perl an L<> formatting code in POD text
+cpan/podlators/lib/Pod/Text.pm                 Pod-Parser - convert POD data to formatted ASCII text
+cpan/podlators/lib/Pod/Text/Color.pm           Convert POD data to color ASCII text
+cpan/podlators/lib/Pod/Text/Overstrike.pm      Convert POD data to formatted overstrike text
+cpan/podlators/lib/Pod/Text/Termcap.pm         Convert POD data to ASCII text with format escapes
+cpan/podlators/Makefile.PL                     podlators Makefile.PL
+cpan/podlators/scripts/pod2man.PL              Translator to turn pod into manpage
+cpan/podlators/scripts/pod2text.PL             Translator to turn pod into text
+cpan/podlators/t/data/basic.cap                        podlators test                  podlators test
+cpan/podlators/t/data/basic.clr                        podlators test
+cpan/podlators/t/data/basic.man                        podlators test
+cpan/podlators/t/data/basic.ovr                        podlators test
+cpan/podlators/t/data/basic.pod                        podlators test
+cpan/podlators/t/data/basic.txt                        podlators test
+cpan/podlators/t/data/perl.conf                        podlators test
+cpan/podlators/t/data/snippets/man/cpp                 podlators test
+cpan/podlators/t/data/snippets/man/utf8-nonbreaking                    podlators test
+cpan/podlators/t/data/snippets/man/utf8-verbatim                       podlators test
+cpan/podlators/t/data/snippets/README                  podlators test
+cpan/podlators/t/data/snippets/text/cpp                        podlators test
+cpan/podlators/t/data/termcap                  podlators test
+cpan/podlators/t/docs/pod.t                    podlators test
+cpan/podlators/t/docs/pod-spelling.t                   podlators test
+cpan/podlators/t/docs/synopsis.t                       podlators test
+cpan/podlators/t/general/basic.t                       podlators test
+cpan/podlators/t/general/filehandle.t                  podlators test
+cpan/podlators/t/general/pod-parser.t                  podlators test
+cpan/podlators/t/lib/Test/Podlators.pm                 podlators test
+cpan/podlators/t/lib/Test/RRA.pm                       podlators test
+cpan/podlators/t/lib/Test/RRA/Config.pm                        podlators test
+cpan/podlators/t/lib/Test/RRA/ModuleVersion.pm         podlators test
+cpan/podlators/t/man/basic.t                   podlators test
+cpan/podlators/t/man/devise-date.t                     podlators test
+cpan/podlators/t/man/devise-title.t                    podlators test
+cpan/podlators/t/man/empty.t                   podlators test
+cpan/podlators/t/man/heading.t                 podlators test
+cpan/podlators/t/man/no-encode.t               podlators test
+cpan/podlators/t/man/options.t                 podlators test
+cpan/podlators/t/man/utf8-io.t                 podlators test
+cpan/podlators/t/parselink/basic.t                     podlators test
+cpan/podlators/t/style/minimum-version.t                       podlators test
+cpan/podlators/t/style/module-version.t                        podlators test
+cpan/podlators/t/style/strict.t                        podlators test
+cpan/podlators/t/text/basic.t                  podlators test
+cpan/podlators/t/text/color.t                  podlators test
+cpan/podlators/t/text/empty.t                  podlators test
+cpan/podlators/t/text/encoding.t                       podlators test
+cpan/podlators/t/text/options.t                        podlators test
+cpan/podlators/t/text/overstrike.t                     podlators test
+cpan/podlators/t/text/perlio.t                 podlators test
+cpan/podlators/t/text/termcap.t                        podlators test
+cpan/podlators/t/text/utf8.t                   podlators test
 cpan/Scalar-List-Utils/lib/List/Util.pm                List::Util
 cpan/Scalar-List-Utils/lib/List/Util/XS.pm     List::Util
 cpan/Scalar-List-Utils/lib/Scalar/Util.pm      Scalar::Util
@@ -2205,10 +2265,10 @@ cpan/Scalar-List-Utils/t/first.t                List::Util
 cpan/Scalar-List-Utils/t/getmagic-once.t
 cpan/Scalar-List-Utils/t/isvstring.t           Scalar::Util
 cpan/Scalar-List-Utils/t/lln.t                 Scalar::Util
-cpan/Scalar-List-Utils/t/maxstr.t              List::Util
 cpan/Scalar-List-Utils/t/max.t                 List::Util
-cpan/Scalar-List-Utils/t/minstr.t              List::Util
+cpan/Scalar-List-Utils/t/maxstr.t              List::Util
 cpan/Scalar-List-Utils/t/min.t                 List::Util
+cpan/Scalar-List-Utils/t/minstr.t              List::Util
 cpan/Scalar-List-Utils/t/openhan.t             Scalar::Util
 cpan/Scalar-List-Utils/t/pair.t
 cpan/Scalar-List-Utils/t/product.t             List::Util
@@ -2222,8 +2282,8 @@ cpan/Scalar-List-Utils/t/scalarutil-proto.t
 cpan/Scalar-List-Utils/t/shuffle.t             List::Util
 cpan/Scalar-List-Utils/t/stack-corruption.t    List::Util
 cpan/Scalar-List-Utils/t/subname.t
-cpan/Scalar-List-Utils/t/sum0.t
 cpan/Scalar-List-Utils/t/sum.t                 List::Util
+cpan/Scalar-List-Utils/t/sum0.t
 cpan/Scalar-List-Utils/t/tainted.t             Scalar::Util
 cpan/Scalar-List-Utils/t/uniq.t                        Scalar::Util
 cpan/Scalar-List-Utils/t/weak.t                        Scalar::Util
@@ -2235,8 +2295,8 @@ cpan/Socket/t/getnameinfo.t               See if Socket::getnameinfo works
 cpan/Socket/t/ip_mreq.t                        See if (un)pack_ip_mreq work
 cpan/Socket/t/ipv6_mreq.t              See if (un)pack_ipv6_mreq work
 cpan/Socket/t/sockaddr.t
-cpan/Socket/t/socketpair.t             See if socketpair works
 cpan/Socket/t/Socket.t                 See if Socket works
+cpan/Socket/t/socketpair.t             See if socketpair works
 cpan/Socket/typemap
 cpan/Sys-Syslog/fallback/const-c.inc   Sys::Syslog constants fallback file
 cpan/Sys-Syslog/fallback/const-xs.inc  Sys::Syslog constants fallback file
@@ -2249,16 +2309,16 @@ cpan/Sys-Syslog/t/constants.t           test for Sys::Syslog
 cpan/Sys-Syslog/t/facilities-routing.t test for Sys::Syslog
 cpan/Sys-Syslog/t/syslog.t             See if Sys::Syslog works
 cpan/Sys-Syslog/win32/compile.pl       Sys::Syslog extension Win32 related file
-cpan/Sys-Syslog/win32/PerlLog_dll.uu   Sys::Syslog extension Win32 related file
 cpan/Sys-Syslog/win32/PerlLog.mc       Sys::Syslog extension Win32 related file
+cpan/Sys-Syslog/win32/PerlLog_dll.uu   Sys::Syslog extension Win32 related file
 cpan/Sys-Syslog/win32/PerlLog_RES.uu   Sys::Syslog extension Win32 related file
 cpan/Sys-Syslog/win32/Win32.pm         Sys::Syslog extension Win32 related file
 cpan/Term-ANSIColor/lib/Term/ANSIColor.pm
-cpan/Term-ANSIColor/t/lib/Test/RRA/Config.pm
 cpan/Term-ANSIColor/t/lib/Test/RRA.pm
+cpan/Term-ANSIColor/t/lib/Test/RRA/Config.pm
 cpan/Term-ANSIColor/t/module/aliases-func.t
-cpan/Term-ANSIColor/t/module/basic256.t
 cpan/Term-ANSIColor/t/module/basic.t
+cpan/Term-ANSIColor/t/module/basic256.t
 cpan/Term-ANSIColor/t/module/eval.t
 cpan/Term-ANSIColor/t/module/stringify.t
 cpan/Term-ANSIColor/t/taint/basic.t
@@ -2272,45 +2332,45 @@ cpan/Test-Harness/lib/App/Prove/State/Result/Test.pm    Gubbins for the prove utili
 cpan/Test-Harness/lib/TAP/Base.pm                      A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Formatter/Base.pm            A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Formatter/Color.pm           A parser for Test Anything Protocol
-cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Formatter/Console.pm         A parser for Test Anything Protocol
+cpan/Test-Harness/lib/TAP/Formatter/Console/ParallelSession.pm A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Formatter/Console/Session.pm A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Formatter/File.pm            A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Formatter/File/Session.pm    A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Formatter/Session.pm         A parser for Test Anything Protocol
+cpan/Test-Harness/lib/TAP/Harness.pm                   A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Harness/Beyond.pod
 cpan/Test-Harness/lib/TAP/Harness/Env.pm               A parser for Test Anything Protocol
-cpan/Test-Harness/lib/TAP/Harness.pm                   A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Object.pm                    A parser for Test Anything Protocol
+cpan/Test-Harness/lib/TAP/Parser.pm                    A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Aggregator.pm         A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Grammar.pm            A parser for Test Anything Protocol
-cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm     A parser for Test Anything Protocol
-cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm    A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Iterator.pm           A parser for Test Anything Protocol
+cpan/Test-Harness/lib/TAP/Parser/Iterator/Array.pm     A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Iterator/Process.pm   A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Iterator/Stream.pm    A parser for Test Anything Protocol
+cpan/Test-Harness/lib/TAP/Parser/IteratorFactory.pm    A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Multiplexer.pm                A parser for Test Anything Protocol
-cpan/Test-Harness/lib/TAP/Parser.pm                    A parser for Test Anything Protocol
+cpan/Test-Harness/lib/TAP/Parser/Result.pm             A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Result/Bailout.pm     A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Result/Comment.pm     A parser for Test Anything Protocol
-cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm      A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Result/Plan.pm                A parser for Test Anything Protocol
-cpan/Test-Harness/lib/TAP/Parser/Result.pm             A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Result/Pragma.pm      A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Result/Test.pm                A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Result/Unknown.pm     A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Result/Version.pm     A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Result/YAML.pm                A parser for Test Anything Protocol
-cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm      A parser for Test Anything Protocol
+cpan/Test-Harness/lib/TAP/Parser/ResultFactory.pm      A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Scheduler.pm          A parser for Test Anything Protocol
+cpan/Test-Harness/lib/TAP/Parser/Scheduler/Job.pm      A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/Scheduler/Spinner.pm  A parser for Test Anything Protocol
+cpan/Test-Harness/lib/TAP/Parser/Source.pm             A parser for Test Anything Protocol
+cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm              A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Executable.pm
 cpan/Test-Harness/lib/TAP/Parser/SourceHandler/File.pm
 cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Handle.pm
 cpan/Test-Harness/lib/TAP/Parser/SourceHandler/Perl.pm
-cpan/Test-Harness/lib/TAP/Parser/SourceHandler.pm              A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/SourceHandler/RawTAP.pm
-cpan/Test-Harness/lib/TAP/Parser/Source.pm             A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/YAMLish/Reader.pm     A parser for Test Anything Protocol
 cpan/Test-Harness/lib/TAP/Parser/YAMLish/Writer.pm     A parser for Test Anything Protocol
 cpan/Test-Harness/lib/Test/Harness.pm                  A test harness
@@ -2318,8 +2378,8 @@ cpan/Test-Harness/t/aggregator.t                  Test::Harness test
 cpan/Test-Harness/t/bailout.t                          Test::Harness test
 cpan/Test-Harness/t/base.t                             Test::Harness test
 cpan/Test-Harness/t/callbacks.t                                Test::Harness test
-cpan/Test-Harness/t/compat/env_opts.t                  Test::Harness test
 cpan/Test-Harness/t/compat/env.t                       Test::Harness test
+cpan/Test-Harness/t/compat/env_opts.t                  Test::Harness test
 cpan/Test-Harness/t/compat/failure.t                   Test::Harness test
 cpan/Test-Harness/t/compat/inc-propagation.t           Test::Harness test
 cpan/Test-Harness/t/compat/inc_taint.t                 Test::Harness test
@@ -2337,13 +2397,13 @@ cpan/Test-Harness/t/errors.t                            Test::Harness test
 cpan/Test-Harness/t/file.t                             Test::Harness test
 cpan/Test-Harness/t/glob-to-regexp.t                   Test::Harness test
 cpan/Test-Harness/t/grammar.t                          Test::Harness test
+cpan/Test-Harness/t/harness.t                          Test::Harness test
 cpan/Test-Harness/t/harness-bailout.t                  Test::Harness test
 cpan/Test-Harness/t/harness-subclass.t                 Test::Harness test
-cpan/Test-Harness/t/harness.t                          Test::Harness test
 cpan/Test-Harness/t/iterator_factory.t                         Test::Harness test
 cpan/Test-Harness/t/iterators.t                                Test::Harness test
-cpan/Test-Harness/t/lib/App/Prove/Plugin/Dummy2.pm     Module for testing Test::Harness
 cpan/Test-Harness/t/lib/App/Prove/Plugin/Dummy.pm      Module for testing Test::Harness
+cpan/Test-Harness/t/lib/App/Prove/Plugin/Dummy2.pm     Module for testing Test::Harness
 cpan/Test-Harness/t/lib/Dev/Null.pm                    Module for testing Test::Harness
 cpan/Test-Harness/t/lib/EmptyParser.pm                 Module for testing Test::Harness
 cpan/Test-Harness/t/lib/IO/c55Capture.pm               Module for testing Test::Harness
@@ -2352,8 +2412,8 @@ cpan/Test-Harness/t/lib/MyFileSourceHandler.pm                            Test::Harness test
 cpan/Test-Harness/t/lib/MyGrammar.pm                   Module for testing Test::Harness
 cpan/Test-Harness/t/lib/MyIterator.pm                  Module for testing Test::Harness
 cpan/Test-Harness/t/lib/MyPerlSourceHandler.pm                         Test::Harness test
-cpan/Test-Harness/t/lib/MyResultFactory.pm             Module for testing Test::Harness
 cpan/Test-Harness/t/lib/MyResult.pm                    Module for testing Test::Harness
+cpan/Test-Harness/t/lib/MyResultFactory.pm             Module for testing Test::Harness
 cpan/Test-Harness/t/lib/MySourceHandler.pm                             Test::Harness test
 cpan/Test-Harness/t/lib/NoFork.pm                      Module for testing Test::Harness
 cpan/Test-Harness/t/lib/NOP.pm                         Module for testing Test::Harness
@@ -2361,19 +2421,19 @@ cpan/Test-Harness/t/lib/TAP/Harness/TestSubclass.pm
 cpan/Test-Harness/t/lib/TAP/Parser/SubclassTest.pm     Module for testing Test::Harness
 cpan/Test-Harness/t/multiplexer.t                      Test::Harness test
 cpan/Test-Harness/t/nested.t                           Test::Harness test
-cpan/Test-Harness/t/nofork-mux.t                       Test::Harness test
 cpan/Test-Harness/t/nofork.t                           Test::Harness test
+cpan/Test-Harness/t/nofork-mux.t                       Test::Harness test
 cpan/Test-Harness/t/object.t                           Test::Harness test
+cpan/Test-Harness/t/parse.t                            Test::Harness test
 cpan/Test-Harness/t/parser-config.t                    Test::Harness test
 cpan/Test-Harness/t/parser-subclass.t                  Test::Harness test
-cpan/Test-Harness/t/parse.t                            Test::Harness test
 cpan/Test-Harness/t/perl5lib.t                         Test::Harness test
 cpan/Test-Harness/t/premature-bailout.t                        Test::Harness test
 cpan/Test-Harness/t/process.t                          Test::Harness test
-cpan/Test-Harness/t/proverc/emptyexec                  Test data for Test::Harness
+cpan/Test-Harness/t/prove.t                            Test::Harness test
 cpan/Test-Harness/t/proverc.t                          Test::Harness test
+cpan/Test-Harness/t/proverc/emptyexec                  Test data for Test::Harness
 cpan/Test-Harness/t/proverun.t                         Test::Harness test
-cpan/Test-Harness/t/prove.t                            Test::Harness test
 cpan/Test-Harness/t/proveversion.t                             Test::Harness test
 cpan/Test-Harness/t/regression.t                       Test::Harness test
 cpan/Test-Harness/t/results.t                          Test::Harness test
@@ -2413,10 +2473,10 @@ cpan/Test-Harness/t/sample-tests/simple_fail            Test data for Test::Harness
 cpan/Test-Harness/t/sample-tests/simple_yaml           Test data for Test::Harness
 cpan/Test-Harness/t/sample-tests/simple_yaml_missing_version13         Test data for Test::Harness
 cpan/Test-Harness/t/sample-tests/skip                  Test data for Test::Harness
+cpan/Test-Harness/t/sample-tests/skip_nomsg            Test data for Test::Harness
 cpan/Test-Harness/t/sample-tests/skipall               Test data for Test::Harness
 cpan/Test-Harness/t/sample-tests/skipall_nomsg         Test data for Test::Harness
 cpan/Test-Harness/t/sample-tests/skipall_v13           Test data for Test::Harness
-cpan/Test-Harness/t/sample-tests/skip_nomsg            Test data for Test::Harness
 cpan/Test-Harness/t/sample-tests/space_after_plan      Test data for Test::Harness
 cpan/Test-Harness/t/sample-tests/stdout_stderr         Test data for Test::Harness
 cpan/Test-Harness/t/sample-tests/strict                        Test data for Test::Harness
@@ -2435,8 +2495,8 @@ cpan/Test-Harness/t/sample-tests/with_comments            Test data for Test::Harness
 cpan/Test-Harness/t/sample-tests/yaml_late_plan                Test data for Test::Harness
 cpan/Test-Harness/t/sample-tests/zero_valid            Test data for Test::Harness
 cpan/Test-Harness/t/scheduler.t                                Test::Harness test
-cpan/Test-Harness/t/source_handler.t                           Test::Harness test
 cpan/Test-Harness/t/source.t                           Test::Harness test
+cpan/Test-Harness/t/source_handler.t                           Test::Harness test
 cpan/Test-Harness/t/source_tests/harness               Test data for Test::Harness
 cpan/Test-Harness/t/source_tests/harness_badtap                Test data for Test::Harness
 cpan/Test-Harness/t/source_tests/harness_complain      Test data for Test::Harness
@@ -2445,76 +2505,75 @@ cpan/Test-Harness/t/source_tests/harness_failure        Test data for Test::Harness
 cpan/Test-Harness/t/source_tests/psql.bat                              Test::Harness test
 cpan/Test-Harness/t/source_tests/source                        Test data for Test::Harness
 cpan/Test-Harness/t/source_tests/source.1                              Test::Harness test
-cpan/Test-Harness/t/source_tests/source_args.sh                                Test::Harness test
 cpan/Test-Harness/t/source_tests/source.bat                            Test::Harness test
 cpan/Test-Harness/t/source_tests/source.pl                             Test::Harness test
 cpan/Test-Harness/t/source_tests/source.sh                             Test::Harness test
 cpan/Test-Harness/t/source_tests/source.t                              Test::Harness test
 cpan/Test-Harness/t/source_tests/source.tap                            Test::Harness test
+cpan/Test-Harness/t/source_tests/source_args.sh                                Test::Harness test
 cpan/Test-Harness/t/spool.t                            Test::Harness test
-cpan/Test-Harness/t/state_results.t                    Test::Harness test
 cpan/Test-Harness/t/state.t                            Test::Harness test
+cpan/Test-Harness/t/state_results.t                    Test::Harness test
 cpan/Test-Harness/t/streams.t                          Test::Harness test
 cpan/Test-Harness/t/subclass_tests/non_perl_source     Test data for Test::Harness
 cpan/Test-Harness/t/subclass_tests/perl_source         Test data for Test::Harness
 cpan/Test-Harness/t/taint.t                            Test::Harness test
 cpan/Test-Harness/t/testargs.t                         Test::Harness test
 cpan/Test-Harness/t/unicode.t                          Test::Harness test
-cpan/Test-Harness/t/yamlish-output.t                   Test::Harness test
 cpan/Test-Harness/t/yamlish.t                          Test::Harness test
+cpan/Test-Harness/t/yamlish-output.t                   Test::Harness test
 cpan/Test-Harness/t/yamlish-writer.t                   Test::Harness test
 cpan/Test-Simple/lib/ok.pm
+cpan/Test-Simple/lib/Test/Builder.pm
+cpan/Test-Simple/lib/Test/Builder/Formatter.pm
+cpan/Test-Simple/lib/Test/Builder/IO/Scalar.pm
+cpan/Test-Simple/lib/Test/Builder/Module.pm
+cpan/Test-Simple/lib/Test/Builder/Tester.pm
+cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm
+cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm
+cpan/Test-Simple/lib/Test/More.pm
+cpan/Test-Simple/lib/Test/Simple.pm
+cpan/Test-Simple/lib/Test/Tester.pm
+cpan/Test-Simple/lib/Test/Tester/Capture.pm
+cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm
+cpan/Test-Simple/lib/Test/Tester/Delegate.pm
+cpan/Test-Simple/lib/Test/Tutorial.pod
+cpan/Test-Simple/lib/Test/use/ok.pm
+cpan/Test-Simple/lib/Test2.pm
+cpan/Test-Simple/lib/Test2/API.pm
 cpan/Test-Simple/lib/Test2/API/Breakage.pm
 cpan/Test-Simple/lib/Test2/API/Context.pm
 cpan/Test-Simple/lib/Test2/API/Instance.pm
-cpan/Test-Simple/lib/Test2/API.pm
 cpan/Test-Simple/lib/Test2/API/Stack.pm
+cpan/Test-Simple/lib/Test2/Event.pm
 cpan/Test-Simple/lib/Test2/Event/Bail.pm
 cpan/Test-Simple/lib/Test2/Event/Diag.pm
 cpan/Test-Simple/lib/Test2/Event/Exception.pm
 cpan/Test-Simple/lib/Test2/Event/Generic.pm
+cpan/Test-Simple/lib/Test2/Event/Info.pm
 cpan/Test-Simple/lib/Test2/Event/Note.pm
 cpan/Test-Simple/lib/Test2/Event/Ok.pm
 cpan/Test-Simple/lib/Test2/Event/Plan.pm
-cpan/Test-Simple/lib/Test2/Event.pm
 cpan/Test-Simple/lib/Test2/Event/Skip.pm
 cpan/Test-Simple/lib/Test2/Event/Subtest.pm
 cpan/Test-Simple/lib/Test2/Event/Waiting.pm
 cpan/Test-Simple/lib/Test2/Formatter.pm
 cpan/Test-Simple/lib/Test2/Formatter/TAP.pm
+cpan/Test-Simple/lib/Test2/Hub.pm
 cpan/Test-Simple/lib/Test2/Hub/Interceptor.pm
 cpan/Test-Simple/lib/Test2/Hub/Interceptor/Terminator.pm
-cpan/Test-Simple/lib/Test2/Hub.pm
 cpan/Test-Simple/lib/Test2/Hub/Subtest.pm
-cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm
-cpan/Test-Simple/lib/Test2/IPC/Driver.pm
 cpan/Test-Simple/lib/Test2/IPC.pm
-cpan/Test-Simple/lib/Test2.pm
+cpan/Test-Simple/lib/Test2/IPC/Driver.pm
+cpan/Test-Simple/lib/Test2/IPC/Driver/Files.pm
 cpan/Test-Simple/lib/Test2/Transition.pod
+cpan/Test-Simple/lib/Test2/Util.pm
 cpan/Test-Simple/lib/Test2/Util/ExternalMeta.pm
 cpan/Test-Simple/lib/Test2/Util/HashBase.pm
-cpan/Test-Simple/lib/Test2/Util.pm
 cpan/Test-Simple/lib/Test2/Util/Trace.pm
-cpan/Test-Simple/lib/Test/Builder/Formatter.pm
-cpan/Test-Simple/lib/Test/Builder/IO/Scalar.pm
-cpan/Test-Simple/lib/Test/Builder/Module.pm
-cpan/Test-Simple/lib/Test/Builder.pm
-cpan/Test-Simple/lib/Test/Builder/Tester/Color.pm
-cpan/Test-Simple/lib/Test/Builder/Tester.pm
-cpan/Test-Simple/lib/Test/Builder/TodoDiag.pm
-cpan/Test-Simple/lib/Test/FAQ.pod
-cpan/Test-Simple/lib/Test/More.pm
-cpan/Test-Simple/lib/Test/Simple.pm
-cpan/Test-Simple/lib/Test/Tester/Capture.pm
-cpan/Test-Simple/lib/Test/Tester/CaptureRunner.pm
-cpan/Test-Simple/lib/Test/Tester/Delegate.pm
-cpan/Test-Simple/lib/Test/Tester.pm
-cpan/Test-Simple/lib/Test/Tutorial.pod
-cpan/Test-Simple/lib/Test/use/ok.pm
 cpan/Test-Simple/t/Legacy/00test_harness_check.t
 cpan/Test-Simple/t/Legacy/01-basic.t
 cpan/Test-Simple/t/Legacy/478-cmp_ok_hash.t
-cpan/Test-Simple/t/Legacy_And_Test2/builder_loaded_late.t
 cpan/Test-Simple/t/Legacy/auto.t
 cpan/Test-Simple/t/Legacy/bad_plan.t
 cpan/Test-Simple/t/Legacy/bail_out.t
@@ -2529,15 +2588,15 @@ cpan/Test-Simple/t/Legacy/Builder/create.t
 cpan/Test-Simple/t/Legacy/Builder/current_test.t
 cpan/Test-Simple/t/Legacy/Builder/current_test_without_plan.t
 cpan/Test-Simple/t/Legacy/Builder/details.t
+cpan/Test-Simple/t/Legacy/Builder/done_testing.t
 cpan/Test-Simple/t/Legacy/Builder/done_testing_double.t
 cpan/Test-Simple/t/Legacy/Builder/done_testing_plan_mismatch.t
-cpan/Test-Simple/t/Legacy/Builder/done_testing.t
 cpan/Test-Simple/t/Legacy/Builder/done_testing_with_no_plan.t
 cpan/Test-Simple/t/Legacy/Builder/done_testing_with_number.t
 cpan/Test-Simple/t/Legacy/Builder/done_testing_with_plan.t
 cpan/Test-Simple/t/Legacy/Builder/fork_with_new_stdout.t
-cpan/Test-Simple/t/Legacy/Builder/has_plan2.t
 cpan/Test-Simple/t/Legacy/Builder/has_plan.t
+cpan/Test-Simple/t/Legacy/Builder/has_plan2.t
 cpan/Test-Simple/t/Legacy/Builder/is_fh.t
 cpan/Test-Simple/t/Legacy/Builder/is_passing.t
 cpan/Test-Simple/t/Legacy/Builder/maybe_regex.t
@@ -2547,11 +2606,11 @@ cpan/Test-Simple/t/Legacy/Builder/no_header.t
 cpan/Test-Simple/t/Legacy/Builder/no_plan_at_all.t
 cpan/Test-Simple/t/Legacy/Builder/ok_obj.t
 cpan/Test-Simple/t/Legacy/Builder/output.t
-cpan/Test-Simple/t/Legacy/Builder/reset_outputs.t
 cpan/Test-Simple/t/Legacy/Builder/reset.t
+cpan/Test-Simple/t/Legacy/Builder/reset_outputs.t
 cpan/Test-Simple/t/Legacy/Builder/try.t
-cpan/Test-Simple/t/Legacy/capture.t
 cpan/Test-Simple/t/Legacy/c_flag.t
+cpan/Test-Simple/t/Legacy/capture.t
 cpan/Test-Simple/t/Legacy/check_tests.t
 cpan/Test-Simple/t/Legacy/circular_data.t
 cpan/Test-Simple/t/Legacy/cmp_ok.t
@@ -2561,14 +2620,14 @@ cpan/Test-Simple/t/Legacy/died.t
 cpan/Test-Simple/t/Legacy/dont_overwrite_die_handler.t
 cpan/Test-Simple/t/Legacy/eq_set.t
 cpan/Test-Simple/t/Legacy/exit.t
-cpan/Test-Simple/t/Legacy/explain_err_vars.t
 cpan/Test-Simple/t/Legacy/explain.t
-cpan/Test-Simple/t/Legacy/extra_one.t
+cpan/Test-Simple/t/Legacy/explain_err_vars.t
 cpan/Test-Simple/t/Legacy/extra.t
+cpan/Test-Simple/t/Legacy/extra_one.t
+cpan/Test-Simple/t/Legacy/fail.t
 cpan/Test-Simple/t/Legacy/fail-like.t
 cpan/Test-Simple/t/Legacy/fail-more.t
 cpan/Test-Simple/t/Legacy/fail_one.t
-cpan/Test-Simple/t/Legacy/fail.t
 cpan/Test-Simple/t/Legacy/filehandles.t
 cpan/Test-Simple/t/Legacy/fork.t
 cpan/Test-Simple/t/Legacy/harness_active.t
@@ -2584,19 +2643,20 @@ cpan/Test-Simple/t/Legacy/no_tests.t
 cpan/Test-Simple/t/Legacy/note.t
 cpan/Test-Simple/t/Legacy/overload.t
 cpan/Test-Simple/t/Legacy/overload_threads.t
+cpan/Test-Simple/t/Legacy/plan.t
 cpan/Test-Simple/t/Legacy/plan_bad.t
 cpan/Test-Simple/t/Legacy/plan_is_noplan.t
 cpan/Test-Simple/t/Legacy/plan_no_plan.t
 cpan/Test-Simple/t/Legacy/plan_shouldnt_import.t
 cpan/Test-Simple/t/Legacy/plan_skip_all.t
-cpan/Test-Simple/t/Legacy/plan.t
 cpan/Test-Simple/t/Legacy/Regression/637.t
+cpan/Test-Simple/t/Legacy/Regression/683_thread_todo.t
 cpan/Test-Simple/t/Legacy/require_ok.t
 cpan/Test-Simple/t/Legacy/run_test.t
-cpan/Test-Simple/t/Legacy/Simple/load.t
 cpan/Test-Simple/t/Legacy/simple.t
-cpan/Test-Simple/t/Legacy/skipall.t
+cpan/Test-Simple/t/Legacy/Simple/load.t
 cpan/Test-Simple/t/Legacy/skip.t
+cpan/Test-Simple/t/Legacy/skipall.t
 cpan/Test-Simple/t/Legacy/strays.t
 cpan/Test-Simple/t/Legacy/subtest/args.t
 cpan/Test-Simple/t/Legacy/subtest/bail_out.t
@@ -2624,16 +2684,17 @@ cpan/Test-Simple/t/Legacy/Tester/tbt_05faildiag.t
 cpan/Test-Simple/t/Legacy/Tester/tbt_06errormess.t
 cpan/Test-Simple/t/Legacy/Tester/tbt_07args.t
 cpan/Test-Simple/t/Legacy/Tester/tbt_08subtest.t
-cpan/Test-Simple/t/Legacy/Tester/tbt_09do_script.pl
 cpan/Test-Simple/t/Legacy/Tester/tbt_09do.t
-cpan/Test-Simple/t/Legacy/threads.t
+cpan/Test-Simple/t/Legacy/Tester/tbt_09do_script.pl
 cpan/Test-Simple/t/Legacy/thread_taint.t
+cpan/Test-Simple/t/Legacy/threads.t
 cpan/Test-Simple/t/Legacy/todo.t
 cpan/Test-Simple/t/Legacy/undef.t
-cpan/Test-Simple/t/Legacy/useing.t
 cpan/Test-Simple/t/Legacy/use_ok.t
+cpan/Test-Simple/t/Legacy/useing.t
 cpan/Test-Simple/t/Legacy/utf8.t
 cpan/Test-Simple/t/Legacy/versions.t
+cpan/Test-Simple/t/Legacy_And_Test2/builder_loaded_late.t
 cpan/Test-Simple/t/lib/Dev/Null.pm
 cpan/Test-Simple/t/lib/Dummy.pm
 cpan/Test-Simple/t/lib/MyOverload.pm
@@ -2643,8 +2704,8 @@ cpan/Test-Simple/t/lib/SigDie.pm
 cpan/Test-Simple/t/lib/SmallTest.pm
 cpan/Test-Simple/t/lib/Test/Builder/NoOutput.pm
 cpan/Test-Simple/t/lib/Test/Simple/Catch.pm
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death_in_eval.plx
 cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death.plx
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death_in_eval.plx
 cpan/Test-Simple/t/lib/Test/Simple/sample_tests/death_with_handler.plx
 cpan/Test-Simple/t/lib/Test/Simple/sample_tests/exit.plx
 cpan/Test-Simple/t/lib/Test/Simple/sample_tests/extras.plx
@@ -2656,12 +2717,13 @@ cpan/Test-Simple/t/lib/Test/Simple/sample_tests/one_fail_without_plan.plx
 cpan/Test-Simple/t/lib/Test/Simple/sample_tests/pre_plan_death.plx
 cpan/Test-Simple/t/lib/Test/Simple/sample_tests/require.plx
 cpan/Test-Simple/t/lib/Test/Simple/sample_tests/success.plx
-cpan/Test-Simple/t/lib/Test/Simple/sample_tests/too_few_fail.plx
 cpan/Test-Simple/t/lib/Test/Simple/sample_tests/too_few.plx
+cpan/Test-Simple/t/lib/Test/Simple/sample_tests/too_few_fail.plx
 cpan/Test-Simple/t/lib/Test/Simple/sample_tests/two_fail.plx
 cpan/Test-Simple/t/lib/TieOut.pm
 cpan/Test-Simple/t/regression/642_persistent_end.t
 cpan/Test-Simple/t/regression/662-tbt-no-plan.t
+cpan/Test-Simple/t/regression/684-nested_todo_diag.t
 cpan/Test-Simple/t/regression/no_name_in_subtest.t
 cpan/Test-Simple/t/Test2/acceptance/try_it_done_testing.t
 cpan/Test-Simple/t/Test2/acceptance/try_it_fork.t
@@ -2674,39 +2736,42 @@ cpan/Test-Simple/t/Test2/behavior/err_var.t
 cpan/Test-Simple/t/Test2/behavior/init_croak.t
 cpan/Test-Simple/t/Test2/behavior/nested_context_exception.t
 cpan/Test-Simple/t/Test2/behavior/no_load_api.t
+cpan/Test-Simple/t/Test2/behavior/run_subtest_inherit.t
 cpan/Test-Simple/t/Test2/behavior/Subtest_buffer_formatter.t
 cpan/Test-Simple/t/Test2/behavior/Subtest_events.t
 cpan/Test-Simple/t/Test2/behavior/Subtest_plan.t
 cpan/Test-Simple/t/Test2/behavior/Taint.t
 cpan/Test-Simple/t/Test2/legacy/TAP.t
+cpan/Test-Simple/t/Test2/modules/API.t
 cpan/Test-Simple/t/Test2/modules/API/Breakage.t
 cpan/Test-Simple/t/Test2/modules/API/Context.t
 cpan/Test-Simple/t/Test2/modules/API/Instance.t
 cpan/Test-Simple/t/Test2/modules/API/Stack.t
-cpan/Test-Simple/t/Test2/modules/API.t
+cpan/Test-Simple/t/Test2/modules/Event.t
 cpan/Test-Simple/t/Test2/modules/Event/Bail.t
 cpan/Test-Simple/t/Test2/modules/Event/Diag.t
 cpan/Test-Simple/t/Test2/modules/Event/Exception.t
 cpan/Test-Simple/t/Test2/modules/Event/Generic.t
+cpan/Test-Simple/t/Test2/modules/Event/Info.t
 cpan/Test-Simple/t/Test2/modules/Event/Note.t
 cpan/Test-Simple/t/Test2/modules/Event/Ok.t
 cpan/Test-Simple/t/Test2/modules/Event/Plan.t
 cpan/Test-Simple/t/Test2/modules/Event/Skip.t
 cpan/Test-Simple/t/Test2/modules/Event/Subtest.t
-cpan/Test-Simple/t/Test2/modules/Event.t
 cpan/Test-Simple/t/Test2/modules/Event/Waiting.t
 cpan/Test-Simple/t/Test2/modules/Formatter/TAP.t
+cpan/Test-Simple/t/Test2/modules/Hub.t
 cpan/Test-Simple/t/Test2/modules/Hub/Interceptor.t
 cpan/Test-Simple/t/Test2/modules/Hub/Interceptor/Terminator.t
 cpan/Test-Simple/t/Test2/modules/Hub/Subtest.t
-cpan/Test-Simple/t/Test2/modules/Hub.t
-cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t
-cpan/Test-Simple/t/Test2/modules/IPC/Driver.t
 cpan/Test-Simple/t/Test2/modules/IPC.t
+cpan/Test-Simple/t/Test2/modules/IPC/Driver.t
+cpan/Test-Simple/t/Test2/modules/IPC/Driver/Files.t
+cpan/Test-Simple/t/Test2/modules/Util.t
 cpan/Test-Simple/t/Test2/modules/Util/ExternalMeta.t
 cpan/Test-Simple/t/Test2/modules/Util/HashBase.t
-cpan/Test-Simple/t/Test2/modules/Util.t
 cpan/Test-Simple/t/Test2/modules/Util/Trace.t
+cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t
 cpan/Test-Simple/t/Test2/regression/gh_16.t
 cpan/Test-Simple/t/Test2/regression/ipc_files_abort_exit.t
 cpan/Test-Simple/t/tools.pl
@@ -2732,16 +2797,16 @@ cpan/Text-Tabs/t/79766.t                See if Text::Tabs is working
 cpan/Text-Tabs/t/belg4mit.t            See if Text::Tabs is working
 cpan/Text-Tabs/t/dandv.t               See if Text::Tabs is working
 cpan/Text-Tabs/t/fill.t                        See if Text::Wrap::fill works
-cpan/Text-Tabs/t/Jacobson2.t           See if Text::Tabs is working
 cpan/Text-Tabs/t/Jacobson.t            See if Text::Tabs is working
+cpan/Text-Tabs/t/Jacobson2.t           See if Text::Tabs is working
 cpan/Text-Tabs/t/Jochen.t              See if Text::Tabs is working
-cpan/Text-Tabs/t/sep2.t                        See if Text::Tabs is working
 cpan/Text-Tabs/t/sep.t                 See if Text::Tabs is working
-cpan/Text-Tabs/t/Tabs-ElCid.t          See if Text::Tabs works
+cpan/Text-Tabs/t/sep2.t                        See if Text::Tabs is working
 cpan/Text-Tabs/t/tabs.t                        See if Text::Tabs works
+cpan/Text-Tabs/t/Tabs-ElCid.t          See if Text::Tabs works
+cpan/Text-Tabs/t/wrap.t                        See if Text::Wrap::wrap works
 cpan/Text-Tabs/t/Wrap-JLB.t            See if Text::Wrap::wrap works
 cpan/Text-Tabs/t/wrap_separator2.t     See if Text::Wrap::wrap works
-cpan/Text-Tabs/t/wrap.t                        See if Text::Wrap::wrap works
 cpan/Tie-RefHash/lib/Tie/RefHash.pm            Base class for tied hashes with references as keys
 cpan/Tie-RefHash/t/rebless.t   Test for Tie::RefHash with rebless
 cpan/Tie-RefHash/t/refhash.t   Test for Tie::RefHash and Tie::RefHash::Nestable
@@ -2753,14 +2818,16 @@ cpan/Time-Piece/Piece.pm        Time::Piece extension
 cpan/Time-Piece/Piece.xs       Time::Piece extension
 cpan/Time-Piece/Seconds.pm     Time::Piece extension
 cpan/Time-Piece/t/01base.t     Test for Time::Piece
-cpan/Time-Piece/t/02core_dst.t
 cpan/Time-Piece/t/02core.t     Test for Time::Piece
+cpan/Time-Piece/t/02core_dst.t
 cpan/Time-Piece/t/03compare.t  Test for Time::Piece
 cpan/Time-Piece/t/04mjd.t      Test for Time::Piece
 cpan/Time-Piece/t/05overload.t Test for Time::Piece
 cpan/Time-Piece/t/06subclass.t Test for Time::Piece
 cpan/Time-Piece/t/07arith.t    Test for Time::Piece
 cpan/Time-Piece/t/lib/Time/Piece/Twin.pm
+cpan/Unicode-Collate/Collate.pm                        Unicode::Collate
+cpan/Unicode-Collate/Collate.xs                        Unicode::Collate
 cpan/Unicode-Collate/Collate/allkeys.txt       Unicode::Collate
 cpan/Unicode-Collate/Collate/CJK/Big5.pm                       Unicode::Collate
 cpan/Unicode-Collate/Collate/CJK/GB2312.pm                     Unicode::Collate
@@ -2770,6 +2837,7 @@ cpan/Unicode-Collate/Collate/CJK/Pinyin.pm                        Unicode::Collate
 cpan/Unicode-Collate/Collate/CJK/Stroke.pm                     Unicode::Collate
 cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm
 cpan/Unicode-Collate/Collate/keys.txt          Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale.pm                 Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/af.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/ar.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/as.pl      Unicode::Collate
@@ -2788,9 +2856,9 @@ cpan/Unicode-Collate/Collate/Locale/es.pl                 Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/es_trad.pl                 Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/et.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/fa.pl      Unicode::Collate
-cpan/Unicode-Collate/Collate/Locale/fil.pl                     Unicode::Collate
-cpan/Unicode-Collate/Collate/Locale/fi_phone.pl        Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/fi.pl                      Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/fi_phone.pl        Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/fil.pl                     Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/fo.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/fr.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/gu.pl      Unicode::Collate
@@ -2806,8 +2874,8 @@ cpan/Unicode-Collate/Collate/Locale/ja.pl                 Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/kk.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/kl.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/kn.pl      Unicode::Collate
-cpan/Unicode-Collate/Collate/Locale/kok.pl     Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/ko.pl                      Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/kok.pl     Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/ln.pl      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/lt.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/lv.pl                      Unicode::Collate
@@ -2822,13 +2890,12 @@ cpan/Unicode-Collate/Collate/Locale/om.pl                       Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/or.pl      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/pa.pl      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/pl.pl                      Unicode::Collate
-cpan/Unicode-Collate/Collate/Locale.pm                 Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/ro.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/ru.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/sa.pl              Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/se.pl                      Unicode::Collate
-cpan/Unicode-Collate/Collate/Locale/si_dict.pl Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/si.pl      Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/si_dict.pl Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/sk.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/sl.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/sq.pl                      Unicode::Collate
@@ -2847,14 +2914,12 @@ cpan/Unicode-Collate/Collate/Locale/vi.pl                       Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/wae.pl     Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/wo.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/yo.pl                      Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/zh.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/zh_big5.pl                 Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/zh_gb.pl                   Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/zh_pin.pl                  Unicode::Collate
-cpan/Unicode-Collate/Collate/Locale/zh.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/zh_strk.pl                 Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl
-cpan/Unicode-Collate/Collate.pm                        Unicode::Collate
-cpan/Unicode-Collate/Collate.xs                        Unicode::Collate
 cpan/Unicode-Collate/Makefile.PL                       Unicode::Collate
 cpan/Unicode-Collate/mkheader                  Unicode::Collate
 cpan/Unicode-Collate/t/altern.t                        Unicode::Collate
@@ -2864,9 +2929,9 @@ cpan/Unicode-Collate/t/cjk_gb.t           Unicode::Collate
 cpan/Unicode-Collate/t/cjk_ja.t                Unicode::Collate
 cpan/Unicode-Collate/t/cjk_ko.t                Unicode::Collate
 cpan/Unicode-Collate/t/cjk_py.t                Unicode::Collate
-cpan/Unicode-Collate/t/cjkrange.t              Unicode::Collate
 cpan/Unicode-Collate/t/cjk_st.t                Unicode::Collate
 cpan/Unicode-Collate/t/cjk_zy.t
+cpan/Unicode-Collate/t/cjkrange.t              Unicode::Collate
 cpan/Unicode-Collate/t/compatui.t              Unicode::Collate
 cpan/Unicode-Collate/t/contract.t              Unicode::Collate
 cpan/Unicode-Collate/t/default.t               Unicode::Collate
@@ -2875,8 +2940,8 @@ cpan/Unicode-Collate/t/hangul.t                   Unicode::Collate
 cpan/Unicode-Collate/t/ident.t
 cpan/Unicode-Collate/t/iglevel2.t                      Unicode::Collate
 cpan/Unicode-Collate/t/ignor.t                 Unicode::Collate
-cpan/Unicode-Collate/t/illegalp.t              Unicode::Collate
 cpan/Unicode-Collate/t/illegal.t               Unicode::Collate
+cpan/Unicode-Collate/t/illegalp.t              Unicode::Collate
 cpan/Unicode-Collate/t/index.t                 Unicode::Collate
 cpan/Unicode-Collate/t/loc_af.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_ar.t                        Unicode::Collate
@@ -2885,26 +2950,26 @@ cpan/Unicode-Collate/t/loc_az.t                 Unicode::Collate
 cpan/Unicode-Collate/t/loc_be.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_bg.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_bn.t                Unicode::Collate
-cpan/Unicode-Collate/t/loc_bscy.t
 cpan/Unicode-Collate/t/loc_bs.t        Unicode::Collate
+cpan/Unicode-Collate/t/loc_bscy.t
 cpan/Unicode-Collate/t/loc_ca.t                        Unicode::Collate
-cpan/Unicode-Collate/t/loc_cjkc.t              Unicode::Collate
 cpan/Unicode-Collate/t/loc_cjk.t               Unicode::Collate
+cpan/Unicode-Collate/t/loc_cjkc.t              Unicode::Collate
 cpan/Unicode-Collate/t/loc_cs.t                        Unicode::Collate
-cpan/Unicode-Collate/t/loc_cyrl.t                      Unicode::Collate
 cpan/Unicode-Collate/t/loc_cy.t                        Unicode::Collate
+cpan/Unicode-Collate/t/loc_cyrl.t                      Unicode::Collate
 cpan/Unicode-Collate/t/loc_da.t                        Unicode::Collate
-cpan/Unicode-Collate/t/loc_deph.t                      Unicode::Collate
 cpan/Unicode-Collate/t/loc_de.t                        Unicode::Collate
+cpan/Unicode-Collate/t/loc_deph.t                      Unicode::Collate
 cpan/Unicode-Collate/t/loc_ee.t
 cpan/Unicode-Collate/t/loc_eo.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_es.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_estr.t                      Unicode::Collate
 cpan/Unicode-Collate/t/loc_et.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_fa.t        Unicode::Collate
+cpan/Unicode-Collate/t/loc_fi.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_fil.t                       Unicode::Collate
 cpan/Unicode-Collate/t/loc_fiph.t      Unicode::Collate
-cpan/Unicode-Collate/t/loc_fi.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_fo.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_fr.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_gu.t        Unicode::Collate
@@ -2916,14 +2981,14 @@ cpan/Unicode-Collate/t/loc_hu.t                 Unicode::Collate
 cpan/Unicode-Collate/t/loc_hy.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_ig.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_is.t                        Unicode::Collate
+cpan/Unicode-Collate/t/loc_ja.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_jait.t                      Unicode::Collate
 cpan/Unicode-Collate/t/loc_japr.t                      Unicode::Collate
-cpan/Unicode-Collate/t/loc_ja.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_kk.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_kl.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_kn.t        Unicode::Collate
-cpan/Unicode-Collate/t/loc_kok.t       Unicode::Collate
 cpan/Unicode-Collate/t/loc_ko.t                        Unicode::Collate
+cpan/Unicode-Collate/t/loc_kok.t       Unicode::Collate
 cpan/Unicode-Collate/t/loc_ln.t        Unicode::Collate
 cpan/Unicode-Collate/t/loc_lt.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_lv.t                        Unicode::Collate
@@ -2942,19 +3007,19 @@ cpan/Unicode-Collate/t/loc_ro.t                 Unicode::Collate
 cpan/Unicode-Collate/t/loc_ru.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_sa.t                Unicode::Collate
 cpan/Unicode-Collate/t/loc_se.t                        Unicode::Collate
-cpan/Unicode-Collate/t/loc_sidt.t      Unicode::Collate
 cpan/Unicode-Collate/t/loc_si.t        Unicode::Collate
+cpan/Unicode-Collate/t/loc_sidt.t      Unicode::Collate
 cpan/Unicode-Collate/t/loc_sk.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_sl.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_sq.t                        Unicode::Collate
-cpan/Unicode-Collate/t/loc_srla.t      Unicode::Collate
 cpan/Unicode-Collate/t/loc_sr.t                        Unicode::Collate
-cpan/Unicode-Collate/t/loc_svrf.t      Unicode::Collate
+cpan/Unicode-Collate/t/loc_srla.t      Unicode::Collate
 cpan/Unicode-Collate/t/loc_sv.t                        Unicode::Collate
+cpan/Unicode-Collate/t/loc_svrf.t      Unicode::Collate
 cpan/Unicode-Collate/t/loc_sw.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_ta.t        Unicode::Collate
-cpan/Unicode-Collate/t/loc_test.t                      Unicode::Collate
 cpan/Unicode-Collate/t/loc_te.t        Unicode::Collate
+cpan/Unicode-Collate/t/loc_test.t                      Unicode::Collate
 cpan/Unicode-Collate/t/loc_th.t        Unicode::Collate
 cpan/Unicode-Collate/t/loc_tn.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_to.t                        Unicode::Collate
@@ -2965,11 +3030,11 @@ cpan/Unicode-Collate/t/loc_vi.t                 Unicode::Collate
 cpan/Unicode-Collate/t/loc_wae.t       Unicode::Collate
 cpan/Unicode-Collate/t/loc_wo.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_yo.t                        Unicode::Collate
+cpan/Unicode-Collate/t/loc_zh.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_zhb5.t                      Unicode::Collate
 cpan/Unicode-Collate/t/loc_zhgb.t                      Unicode::Collate
 cpan/Unicode-Collate/t/loc_zhpy.t                      Unicode::Collate
 cpan/Unicode-Collate/t/loc_zhst.t                      Unicode::Collate
-cpan/Unicode-Collate/t/loc_zh.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_zhzy.t
 cpan/Unicode-Collate/t/nonchar.t                       Unicode::Collate
 cpan/Unicode-Collate/t/normal.t                        Unicode::Collate
@@ -3000,9 +3065,9 @@ cpan/Unicode-Normalize/t/proto.t  Unicode::Normalize
 cpan/Unicode-Normalize/t/split.t       Unicode::Normalize
 cpan/Unicode-Normalize/t/test.t                Unicode::Normalize
 cpan/Unicode-Normalize/t/tie.t         Unicode::Normalize
-cpan/version/lib/version/Internals.pod Description of the internals of version objects
 cpan/version/lib/version.pm            Support for version objects
 cpan/version/lib/version.pod           Documentation of the version module
+cpan/version/lib/version/Internals.pod Description of the internals of version objects
 cpan/version/lib/version/regex.pm      Regex for matching version objects
 cpan/version/t/01base.t                        Tests for version objects
 cpan/version/t/02derived.t             Tests for version objects
@@ -3015,17 +3080,6 @@ cpan/version/t/08_corelist.t             Tests for version objects
 cpan/version/t/09_list_util.t          Tests for version objects
 cpan/version/t/10_lyon.t               Tests for version objects
 cpan/version/t/coretests.pm            Tests for version objects
-cpan/Win32API-File/buffers.h   Win32API::File extension
-cpan/Win32API-File/cFile.h     Win32API::File extension
-cpan/Win32API-File/cFile.pc    Win32API::File extension
-cpan/Win32API-File/const2perl.h        Win32API::File extension
-cpan/Win32API-File/File.pm     Win32API::File extension
-cpan/Win32API-File/File.xs     Win32API::File extension
-cpan/Win32API-File/inc/ExtUtils/Myconst2perl.pm        Win32API::File extension
-cpan/Win32API-File/Makefile.PL Win32API::File extension makefile write
-cpan/Win32API-File/t/file.t    See if Win32API::File extension works
-cpan/Win32API-File/t/tie.t     See if Win32API::File extension works
-cpan/Win32API-File/typemap     Win32API::File extension interface types
 cpan/Win32/longpath.inc                        Win32 extension long path support
 cpan/Win32/Makefile.PL                 Win32 extension makefile writer
 cpan/Win32/t/CodePage.t                        See if Win32 extension works
@@ -3044,6 +3098,17 @@ cpan/Win32/t/Names.t                     See if Win32 extension works
 cpan/Win32/t/Unicode.t                 See if Win32 extension works
 cpan/Win32/Win32.pm                    Win32 extension Perl module
 cpan/Win32/Win32.xs                    Win32 extension external subroutines
+cpan/Win32API-File/buffers.h   Win32API::File extension
+cpan/Win32API-File/cFile.h     Win32API::File extension
+cpan/Win32API-File/cFile.pc    Win32API::File extension
+cpan/Win32API-File/const2perl.h        Win32API::File extension
+cpan/Win32API-File/File.pm     Win32API::File extension
+cpan/Win32API-File/File.xs     Win32API::File extension
+cpan/Win32API-File/inc/ExtUtils/Myconst2perl.pm        Win32API::File extension
+cpan/Win32API-File/Makefile.PL Win32API::File extension makefile write
+cpan/Win32API-File/t/file.t    See if Win32API::File extension works
+cpan/Win32API-File/t/tie.t     See if Win32API::File extension works
+cpan/Win32API-File/typemap     Win32API::File extension interface types
 Cross/build-arm-n770-sh                Cross-compilation
 Cross/cflags-cross-arm         Cross-compilation
 Cross/config                   Cross-compilation
@@ -3061,8 +3126,9 @@ Cross/warp                        Cross-compilation
 cv.h                           Code value header
 cygwin/cygwin.c                        Additional code for Cygwin port
 deb.c                          Debugging routines
-.dir-locals.el                 Emacs control file
 dist/Attribute-Handlers/Changes                                Attribute::Handlers
+dist/Attribute-Handlers/demo/demo.pl                   Attribute::Handlers demo
+dist/Attribute-Handlers/demo/Demo.pm                   Attribute::Handlers demo
 dist/Attribute-Handlers/demo/demo2.pl                  Attribute::Handlers demo
 dist/Attribute-Handlers/demo/demo3.pl                  Attribute::Handlers demo
 dist/Attribute-Handlers/demo/demo4.pl                  Attribute::Handlers demo
@@ -3071,8 +3137,6 @@ dist/Attribute-Handlers/demo/demo_chain.pl                Attribute::Handlers demo
 dist/Attribute-Handlers/demo/demo_cycle.pl             Attribute::Handlers demo
 dist/Attribute-Handlers/demo/demo_hashdir.pl           Attribute::Handlers demo
 dist/Attribute-Handlers/demo/demo_phases.pl            Attribute::Handlers demo
-dist/Attribute-Handlers/demo/demo.pl                   Attribute::Handlers demo
-dist/Attribute-Handlers/demo/Demo.pm                   Attribute::Handlers demo
 dist/Attribute-Handlers/demo/demo_range.pl             Attribute::Handlers demo
 dist/Attribute-Handlers/demo/demo_rawdata.pl           Attribute::Handlers demo
 dist/Attribute-Handlers/demo/Descriptions.pm           Attribute::Handlers demo
@@ -3084,21 +3148,21 @@ dist/Attribute-Handlers/t/linerep.t                     See if Attribute::Handlers works
 dist/Attribute-Handlers/t/multi.t                      See if Attribute::Handlers works
 dist/autouse/lib/autouse.pm            Load and call a function only when it's used
 dist/autouse/t/autouse.t               See if autouse works
-dist/autouse/t/lib/MyTestModule2.pm    Test module for autouse
 dist/autouse/t/lib/MyTestModule.pm     Test module for autouse
+dist/autouse/t/lib/MyTestModule2.pm    Test module for autouse
 dist/base/Changes              base.pm changelog
 dist/base/lib/base.pm          Establish IS-A relationship at compile time
 dist/base/lib/fields.pm                Set up object field names for pseudo-hash-using classes
 dist/base/Makefile.PL  base.pm Makefile.PL
+dist/base/t/base.t             See if base works
 dist/base/t/base-open-chunk.t  See if base works
 dist/base/t/base-open-line.t   See if base works
-dist/base/t/base.t             See if base works
 dist/base/t/compile-time.t     See if base works
 dist/base/t/core-global.t      See if base works around CORE::GLOBAL::require
+dist/base/t/fields.t           See if fields work
 dist/base/t/fields-5_6_0.t     See if fields work
 dist/base/t/fields-5_8_0.t     See if fields work
 dist/base/t/fields-base.t      See if fields work
-dist/base/t/fields.t           See if fields work
 dist/base/t/isa.t              See if base's behaviour doesn't change
 dist/base/t/lib/Broken.pm      Test module for base.pm
 dist/base/t/lib/Dummy.pm       Test module for base.pm
@@ -3107,19 +3171,19 @@ dist/base/t/sigdie.t            See if base works with SIGDIE
 dist/base/t/version.t          See if base works with versions
 dist/base/t/warnings.t         See if base works with warnings
 dist/Carp/Changes              Changelog for Carp's CPAN releases
-dist/Carp/lib/Carp/Heavy.pm    Error message retired workhorse
 dist/Carp/lib/Carp.pm          Error message extension
+dist/Carp/lib/Carp/Heavy.pm    Error message retired workhorse
 dist/Carp/Makefile.PL          makefile writer for Carp
 dist/Carp/README               README for Carp's CPAN releases
 dist/Carp/t/arg_regexp.t               See if Carp formats regexp args OK in stack traces
 dist/Carp/t/arg_string.t               See if Carp formats string args OK in stack traces
 dist/Carp/t/baduni.t           See if Carp handles non-char Unicode
 dist/Carp/t/baduni_warnings.t          See if Carp handles non-char Unicode when loaded via warnings.pm
-dist/Carp/t/Carp_overload.t            See if Carp handles overloads
 dist/Carp/t/Carp.t             See if Carp works
+dist/Carp/t/Carp_overload.t            See if Carp handles overloads
 dist/Carp/t/errno.t            See if Carp preserves $! and $^E
-dist/Carp/t/heavy_mismatch.t           See if Carp::Heavy catches version mismatch
 dist/Carp/t/heavy.t            See if Carp::Heavy works
+dist/Carp/t/heavy_mismatch.t           See if Carp::Heavy catches version mismatch
 dist/Carp/t/stash_deletion.t           See if Carp handles stash deletion
 dist/Carp/t/swash.t            See if Carp avoids breaking swash loading
 dist/Carp/t/vivify_gv.t                See if Carp leaves utf8:: stuff alone
@@ -3144,7 +3208,6 @@ dist/Data-Dumper/t/indent.t       See if Data::Dumper::Indent works
 dist/Data-Dumper/t/lib/Testing.pm      Functions used in testing Data-Dumper
 dist/Data-Dumper/t/misc.t      Miscellaneous tests for Data-Dumper
 dist/Data-Dumper/t/names.t     See if Data::Dumper::Names works
-dist/Data-Dumper/Todo          Data pretty printer, futures
 dist/Data-Dumper/t/overload.t  See if Data::Dumper works for overloaded data
 dist/Data-Dumper/t/pair.t      See if Data::Dumper pair separator works
 dist/Data-Dumper/t/perl-74170.t        Regression test for stack reallocation
@@ -3159,6 +3222,7 @@ dist/Data-Dumper/t/terse.t        See if Data::Dumper terse option works
 dist/Data-Dumper/t/toaster.t   See if Data::Dumper::Toaster works
 dist/Data-Dumper/t/trailing_comma.t    See if Data::Dumper::Trailingcomma works
 dist/Data-Dumper/t/values.t    See if Data::Dumper::Values works
+dist/Data-Dumper/Todo          Data pretty printer, futures
 dist/Devel-SelfStubber/lib/Devel/SelfStubber.pm        Generate stubs for SelfLoader.pm
 dist/Devel-SelfStubber/t/Devel-SelfStubber.t   See if Devel::SelfStubber works
 dist/Dumpvalue/lib/Dumpvalue.pm        Screen dump of perl values
@@ -3171,11 +3235,12 @@ dist/encoding-warnings/t/4-lexical.t    tests for encoding::warnings
 dist/Env/lib/Env.pm            Map environment into ordinary variables
 dist/Env/t/array.t             See if Env works for arrays
 dist/Env/t/env.t               See if Env works
-dist/Exporter/lib/Exporter/Heavy.pm    Complicated routines for Exporter
 dist/Exporter/lib/Exporter.pm          Exporter base class
+dist/Exporter/lib/Exporter/Heavy.pm    Complicated routines for Exporter
 dist/Exporter/t/Exporter.t             See if Exporter works
 dist/Exporter/t/warn.t                 See if Exporter respects warning handlers
 dist/ExtUtils-CBuilder/Changes         EU-CB change log
+dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm                        Compile and link C code for Perl modules
 dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm           Base class for ExtUtils::CBuilder methods
 dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm   CBuilder methods for AIX
 dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/android.pm       CBuilder methods for Android
@@ -3185,11 +3250,10 @@ dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm        CBuilder method
 dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm   CBuilder methods for OS/2
 dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm  CBuilder methods for Unix
 dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm   CBuilder methods for VMS
+dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm       CBuilder methods for Windows
 dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm   CBuilder methods for Windows
 dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm   CBuilder methods for Windows
 dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm  CBuilder methods for Windows
-dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm       CBuilder methods for Windows
-dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm                        Compile and link C code for Perl modules
 dist/ExtUtils-CBuilder/LICENSE         EU-CB license
 dist/ExtUtils-CBuilder/Makefile.PL             EU-CB configuration script
 dist/ExtUtils-CBuilder/README.patching         EU-CB patching nstructions
@@ -3200,16 +3264,16 @@ dist/ExtUtils-CBuilder/t/02-link.t                              tests for ExtUtils::CBuilder
 dist/ExtUtils-CBuilder/t/03-cplusplus.t                                tests for ExtUtils::CBuilder
 dist/ExtUtils-CBuilder/t/04-base.t                             tests for ExtUtils::CBuilder
 dist/ExtUtils-ParseXS/Changes                                  ExtUtils::ParseXS change log
+dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm                  converts Perl XS code into C code
+dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pod                 ExtUtils::ParseXS documentation
 dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm                ExtUtils::ParseXS guts
 dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm       ExtUtils::ParseXS guts
 dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Eval.pm             ExtUtils::ParseXS guts
-dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm                  converts Perl XS code into C code
-dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pod                 ExtUtils::ParseXS documentation
 dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm                ExtUtils::ParseXS guts
+dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm                 ExtUtils::Typemaps, a PXS helper
 dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm             ExtUtils::Typemaps helper module
 dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm                ExtUtils::Typemaps guts
 dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm       ExtUtils::Typemaps guts
-dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm                 ExtUtils::Typemaps, a PXS helper
 dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm            ExtUtils::Typemaps guts
 dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp                      External subroutine preprocessor
 dist/ExtUtils-ParseXS/lib/perlxs.pod                           Perl XS application programming interface
@@ -3244,9 +3308,9 @@ dist/ExtUtils-ParseXS/t/517-t-targetable.t                        ExtUtils::Typemaps tests
 dist/ExtUtils-ParseXS/t/600-t-compat.t                         ExtUtils::Typemaps tests
 dist/ExtUtils-ParseXS/t/data/b.typemap                         ExtUtils::Typemaps test data
 dist/ExtUtils-ParseXS/t/data/combined.typemap                  ExtUtils::Typemaps test data
-dist/ExtUtils-ParseXS/t/data/conflicting.typemap               ExtUtils::Typemaps test data
 dist/ExtUtils-ParseXS/t/data/confl_repl.typemap                        ExtUtils::Typemaps test data
 dist/ExtUtils-ParseXS/t/data/confl_skip.typemap                        ExtUtils::Typemaps test data
+dist/ExtUtils-ParseXS/t/data/conflicting.typemap               ExtUtils::Typemaps test data
 dist/ExtUtils-ParseXS/t/data/other.typemap                     ExtUtils::Typemaps test data
 dist/ExtUtils-ParseXS/t/data/perl.typemap                      ExtUtils::Typemaps test data
 dist/ExtUtils-ParseXS/t/data/simple.typemap                    ExtUtils::Typemaps test data
@@ -3267,8 +3331,8 @@ dist/Filter-Simple/lib/Filter/Simple.pm                           Simple frontend to Filter::Util::Call
 dist/Filter-Simple/t/code_no_comments.t                                See if Filter::Simple works
 dist/Filter-Simple/t/data.t                                    See if Filter::Simple works
 dist/Filter-Simple/t/export.t                                  See if Filter::Simple works
-dist/Filter-Simple/t/filter_only.t                             See if Filter::Simple works
 dist/Filter-Simple/t/filter.t                                  See if Filter::Simple works
+dist/Filter-Simple/t/filter_only.t                             See if Filter::Simple works
 dist/Filter-Simple/t/import.t                                  See if Filter::Simple works
 dist/Filter-Simple/t/lib/Filter/Simple/CodeNoComments.pm       Helper file for Filter::Simple tests
 dist/Filter-Simple/t/lib/Filter/Simple/ExportTest.pm           Helper file for Filter::Simple tests
@@ -3278,9 +3342,9 @@ dist/Filter-Simple/t/lib/Filter/Simple/ImportTest.pm              Helper file for Filter::Si
 dist/I18N-Collate/lib/I18N/Collate.pm          Routines to do strxfrm-based collation
 dist/I18N-Collate/t/I18N-Collate.t             See if I18N::Collate works
 dist/I18N-LangTags/ChangeLog                   I18N::LangTags
+dist/I18N-LangTags/lib/I18N/LangTags.pm                I18N::LangTags
 dist/I18N-LangTags/lib/I18N/LangTags/Detect.pm Detect language preferences
 dist/I18N-LangTags/lib/I18N/LangTags/List.pm   List of tags for human languages
-dist/I18N-LangTags/lib/I18N/LangTags.pm                I18N::LangTags
 dist/I18N-LangTags/README                      I18N::LangTags
 dist/I18N-LangTags/t/01_about_verbose.t                See whether I18N::LangTags works
 dist/I18N-LangTags/t/05_main.t                 See whether I18N::LangTags works
@@ -3304,8 +3368,8 @@ dist/IO/lib/IO/Pipe.pm            IO pipe package
 dist/IO/lib/IO/Poll.pm         IO system poll() interface
 dist/IO/lib/IO/Seekable.pm     IO methods for seekable handles
 dist/IO/lib/IO/Select.pm       IO system select() interface
-dist/IO/lib/IO/Socket/INET.pm  IO INET specific socket methods
 dist/IO/lib/IO/Socket.pm       IO socket handle package
+dist/IO/lib/IO/Socket/INET.pm  IO INET specific socket methods
 dist/IO/lib/IO/Socket/UNIX.pm  IO UNIX specific socket methods
 dist/IO/Makefile.PL            IO extension makefile writer
 dist/IO/poll.c                 IO poll() emulation using select()
@@ -3314,34 +3378,34 @@ dist/IO/README                  IO extension maintenance notice
 dist/IO/t/cachepropagate-tcp.t See if IO::Socket duplication works
 dist/IO/t/cachepropagate-udp.t See if IO::Socket duplication works
 dist/IO/t/cachepropagate-unix.t        See if IO::Socket duplication works
+dist/IO/t/IO.t                 See if IO works
 dist/IO/t/io_const.t           See if constants from IO work
 dist/IO/t/io_dir.t             See if directory-related methods from IO work
 dist/IO/t/io_dup.t             See if dup()-related methods from IO work
-dist/IO/t/io_file_export.t     Test IO::File exports
 dist/IO/t/io_file.t            See if binmode()-related methods on IO::File work
+dist/IO/t/io_file_export.t     Test IO::File exports
 dist/IO/t/io_linenum.t         See if I/O line numbers are tracked correctly
 dist/IO/t/io_multihomed.t      See if INET sockets work with multi-homed hosts
 dist/IO/t/io_pipe.t            See if pipe()-related methods from IO work
 dist/IO/t/io_poll.t            See if poll()-related methods from IO work
 dist/IO/t/io_sel.t             See if select()-related methods from IO work
 dist/IO/t/io_sock.t            See if INET socket-related methods from IO work
-dist/IO/t/IO.t                 See if IO works
 dist/IO/t/io_taint.t           See if the untaint method from IO works
 dist/IO/t/io_tell.t            See if seek()/tell()-related methods from IO work
 dist/IO/t/io_udp.t             See if UDP socket-related methods from IO work
 dist/IO/t/io_unix.t            See if UNIX socket-related methods from IO work
-dist/IO/t/io_utf8argv.t                See if <> respects open pragma
 dist/IO/t/io_utf8.t            See if perlio opens work
+dist/IO/t/io_utf8argv.t                See if <> respects open pragma
 dist/IO/t/io_xs.t              See if XSUB methods from IO work
 dist/lib/lib_pm.PL             For "use lib", produces lib/lib.pm
 dist/lib/Makefile.PL
 dist/lib/t/01lib.t             For "use lib" testing
 dist/Locale-Maketext/ChangeLog                         Locale::Maketext
-dist/Locale-Maketext/lib/Locale/Maketext/Cookbook.pod  Locale::Maketext
-dist/Locale-Maketext/lib/Locale/Maketext/GutsLoader.pm Locale::Maketext
-dist/Locale-Maketext/lib/Locale/Maketext/Guts.pm       Locale::Maketext
 dist/Locale-Maketext/lib/Locale/Maketext.pm            Locale::Maketext
 dist/Locale-Maketext/lib/Locale/Maketext.pod           Locale::Maketext documentation
+dist/Locale-Maketext/lib/Locale/Maketext/Cookbook.pod  Locale::Maketext
+dist/Locale-Maketext/lib/Locale/Maketext/Guts.pm       Locale::Maketext
+dist/Locale-Maketext/lib/Locale/Maketext/GutsLoader.pm Locale::Maketext
 dist/Locale-Maketext/lib/Locale/Maketext/TPJ13.pod     Locale::Maketext documentation article
 dist/Locale-Maketext/README                            Locale::Maketext
 dist/Locale-Maketext/t/01_about_verbose.t              See if Locale::Maketext works
@@ -3395,13 +3459,13 @@ dist/Net-Ping/t/520_icmp_ttl.t          Ping Net::Ping
 dist/PathTools/Changes                 Changelog for PathTools dist
 dist/PathTools/Cwd.pm                          Various cwd routines (getcwd, fastcwd, chdir)
 dist/PathTools/Cwd.xs                          Cwd extension external subroutines
+dist/PathTools/lib/File/Spec.pm                portable operations on file names
 dist/PathTools/lib/File/Spec/AmigaOS.pm                portable operations on AmigaOS file names
 dist/PathTools/lib/File/Spec/Cygwin.pm portable operations on Cygwin file names
 dist/PathTools/lib/File/Spec/Epoc.pm           portable operations on EPOC file names
 dist/PathTools/lib/File/Spec/Functions.pm      Function interface to File::Spec object methods
 dist/PathTools/lib/File/Spec/Mac.pm            portable operations on Mac file names
 dist/PathTools/lib/File/Spec/OS2.pm            portable operations on OS2 file names
-dist/PathTools/lib/File/Spec.pm                portable operations on file names
 dist/PathTools/lib/File/Spec/Unix.pm           portable operations on Unix file names
 dist/PathTools/lib/File/Spec/VMS.pm            portable operations on VMS file names
 dist/PathTools/lib/File/Spec/Win32.pm          portable operations on Win32 and NetWare file names
@@ -3453,9 +3517,9 @@ dist/Storable/Makefile.PL         Storable extension
 dist/Storable/README                   Storable extension
 dist/Storable/Storable.pm              Storable extension
 dist/Storable/Storable.xs              Storable extension
+dist/Storable/t/attach.t               Check STORABLE_attach doesn't create objects unnecessarily
 dist/Storable/t/attach_errors.t                Trigger and test STORABLE_attach errors
 dist/Storable/t/attach_singleton.t     Test STORABLE_attach for the Singleton pattern
-dist/Storable/t/attach.t               Check STORABLE_attach doesn't create objects unnecessarily
 dist/Storable/t/blessed.t              See if Storable works
 dist/Storable/t/canonical.t            See if Storable works
 dist/Storable/t/circular_hook.t                Test thaw hook called depth-first for circular refs
@@ -3491,12 +3555,12 @@ dist/Storable/t/st-dump.pl              See if Storable works
 dist/Storable/t/store.t                        See if Storable works
 dist/Storable/t/testlib.pl             more helper routines for tests
 dist/Storable/t/threads.t              Does Storable work with threads?
+dist/Storable/t/tied.t                 See if Storable works
 dist/Storable/t/tied_hook.t            See if Storable works
 dist/Storable/t/tied_items.t           See if Storable works
 dist/Storable/t/tied_store.t           See if Storable works
-dist/Storable/t/tied.t                 See if Storable works
-dist/Storable/t/utf8hash.t             See if Storable works
 dist/Storable/t/utf8.t                 See if Storable works
+dist/Storable/t/utf8hash.t             See if Storable works
 dist/Storable/t/weak.t                 Can Storable store weakrefs
 dist/Term-Complete/lib/Term/Complete.pm        A command completion subroutine
 dist/Term-Complete/t/Complete.t                See if Term::Complete works
@@ -3538,6 +3602,29 @@ dist/Thread-Semaphore/t/05_force.t       Thread::Semaphore tests
 dist/threads/hints/hpux.pl     Hint file for HPUX
 dist/threads/hints/linux.pl    Hint file for Linux
 dist/threads/lib/threads.pm            ithreads
+dist/threads/t/basic.t         ithreads
+dist/threads/t/blocks.t                Test threads in special blocks
+dist/threads/t/context.t       Explicit thread context
+dist/threads/t/end.t           Test end functions
+dist/threads/t/err.t           Test $thr->error()
+dist/threads/t/exit.t          Test exit and die in threads
+dist/threads/t/free.t          Test ithread destruction
+dist/threads/t/free2.t         More ithread destruction tests
+dist/threads/t/join.t          Testing the join function
+dist/threads/t/kill.t          Tests thread signalling
+dist/threads/t/kill2.t         Tests thread signalling
+dist/threads/t/libc.t          testing libc functions for threadsafety
+dist/threads/t/list.t          Test threads->list()
+dist/threads/t/no_threads.t    threads test for non-threaded Perls
+dist/threads/t/problems.t      Test various memory problems
+dist/threads/t/stack.t         Tests for stack limits
+dist/threads/t/stack_env.t     Tests for stack limits
+dist/threads/t/state.t         Tests state methods
+dist/threads/t/stress_cv.t     Test with multiple threads, coderef cv argument.
+dist/threads/t/stress_re.t     Test with multiple threads, string cv argument and regexes.
+dist/threads/t/stress_string.t Test with multiple threads, string cv argument.
+dist/threads/t/thread.t                General ithread tests from thr5005
+dist/threads/threads.xs                ithreads
 dist/threads-shared/hints/linux.pl     thread shared variables
 dist/threads-shared/lib/threads/shared.pm      thread shared variables
 dist/threads-shared/shared.xs          thread shared variables
@@ -3552,38 +3639,15 @@ dist/threads-shared/t/dualvar.t Test dual-valued variables
 dist/threads-shared/t/hv_refs.t                Test shared hashes containing references
 dist/threads-shared/t/hv_simple.t      Tests for basic shared hash functionality.
 dist/threads-shared/t/no_share.t       Tests for disabled share on variables.
-dist/threads-shared/t/object2.t        More shared objects tests
 dist/threads-shared/t/object.t         Shared objects tests
+dist/threads-shared/t/object2.t        More shared objects tests
 dist/threads-shared/t/shared_attr.t    Test :shared attribute
 dist/threads-shared/t/stress.t         Stress test
 dist/threads-shared/t/sv_refs.t                thread shared variables
 dist/threads-shared/t/sv_simple.t      thread shared variables
 dist/threads-shared/t/utf8.t           Test UTF-8 keys in shared hashes
-dist/threads-shared/t/waithires.t      Test sub-second cond_timedwait
 dist/threads-shared/t/wait.t           Test cond_wait and cond_timedwait
-dist/threads/t/basic.t         ithreads
-dist/threads/t/blocks.t                Test threads in special blocks
-dist/threads/t/context.t       Explicit thread context
-dist/threads/t/end.t           Test end functions
-dist/threads/t/err.t           Test $thr->error()
-dist/threads/t/exit.t          Test exit and die in threads
-dist/threads/t/free2.t         More ithread destruction tests
-dist/threads/t/free.t          Test ithread destruction
-dist/threads/threads.xs                ithreads
-dist/threads/t/join.t          Testing the join function
-dist/threads/t/kill2.t         Tests thread signalling
-dist/threads/t/kill.t          Tests thread signalling
-dist/threads/t/libc.t          testing libc functions for threadsafety
-dist/threads/t/list.t          Test threads->list()
-dist/threads/t/no_threads.t    threads test for non-threaded Perls
-dist/threads/t/problems.t      Test various memory problems
-dist/threads/t/stack_env.t     Tests for stack limits
-dist/threads/t/stack.t         Tests for stack limits
-dist/threads/t/state.t         Tests state methods
-dist/threads/t/stress_cv.t     Test with multiple threads, coderef cv argument.
-dist/threads/t/stress_re.t     Test with multiple threads, string cv argument and regexes.
-dist/threads/t/stress_string.t Test with multiple threads, string cv argument.
-dist/threads/t/thread.t                General ithread tests from thr5005
+dist/threads-shared/t/waithires.t      Test sub-second cond_timedwait
 dist/Tie-File/lib/Tie/File.pm          Files as tied arrays
 dist/Tie-File/t/00_version.t           Trivial test for Tie::File
 dist/Tie-File/t/01_gen.t               Generic read/write tests for Tie::File
@@ -3614,8 +3678,8 @@ dist/Tie-File/t/25_gen_nocache.t  Like 01_gen.t, but with caching disabled
 dist/Tie-File/t/26_twrite.t            Unit tests for Tie::File::_twrite
 dist/Tie-File/t/27_iwrite.t            Unit tests for Tie::File::_iwrite
 dist/Tie-File/t/28_mtwrite.t           Unit tests for Tie::File::_mtwrite
-dist/Tie-File/t/29a_upcopy.t           Unit tests for Tie::File::_upcopy
 dist/Tie-File/t/29_downcopy.t          Unit tests for Tie::File::_downcopy
+dist/Tie-File/t/29a_upcopy.t           Unit tests for Tie::File::_upcopy
 dist/Tie-File/t/30_defer.t             deferred writing feature tests for Tie::File
 dist/Tie-File/t/31_autodefer.t         'autodefer' feature tests for Tie::File
 dist/Tie-File/t/32_defer_misc.t                Like 17_misc_meth.t, but with deferred writing
@@ -3648,6 +3712,7 @@ dist/Time-HiRes/t/time.t          Test for Time::HiRes
 dist/Time-HiRes/t/tv_interval.t                Test for Time::HiRes
 dist/Time-HiRes/t/ualarm.t             Test for Time::HiRes
 dist/Time-HiRes/t/usleep.t             Test for Time::HiRes
+dist/Time-HiRes/t/utime.t              Test for Time::HiRes
 dist/Time-HiRes/t/Watchdog.pm          Test for Time::HiRes
 dist/Time-HiRes/typemap                        Time::HiRes extension
 dist/XSLoader/Makefile.PL      Dynamic Loader makefile writer
@@ -3669,10 +3734,10 @@ ebcdic_tables.h         Generated tables included in utfebcdic.h
 embed.fnc              Database used by embed.pl
 embed.h                        Maps symbols to safer names
 embedvar.h             C namespace management
-ext/Amiga-ARexx/ARexx.pm       Amiga::ARexx extension
-ext/Amiga-ARexx/ARexx.xs       Amiga::ARexx extension
 ext/Amiga-ARexx/__examples/simplecommand.pl    Amiga::ARexx extension
 ext/Amiga-ARexx/__examples/simplehost.pl       Amiga::ARexx extension
+ext/Amiga-ARexx/ARexx.pm       Amiga::ARexx extension
+ext/Amiga-ARexx/ARexx.xs       Amiga::ARexx extension
 ext/Amiga-ARexx/Makefile.PL    Amiga::ARexx extension
 ext/Amiga-ARexx/tagtypes.h                     Amiga::ARexx extension
 ext/Amiga-ARexx/typemap        Amiga::ARexx extension
@@ -3695,18 +3760,18 @@ ext/arybase/t/av2arylen.t       For $[
 ext/arybase/t/index.t          For $[
 ext/arybase/t/lslice.t         For $[
 ext/arybase/t/pos.t            For $[
-ext/arybase/t/scope_0.pm       For $[
 ext/arybase/t/scope.t          For $[
+ext/arybase/t/scope_0.pm       For $[
 ext/arybase/t/splice.t         For $[
 ext/arybase/t/substr.t         For $[
 ext/attributes/attributes.pm           For "sub foo : attrlist"
 ext/attributes/attributes.xs           For "sub foo : attrlist"
-ext/B/B/Concise.pm     Compiler Concise backend
 ext/B/B.pm             Compiler backend support functions and methods
+ext/B/B.xs             Compiler backend external subroutines
+ext/B/B/Concise.pm     Compiler Concise backend
 ext/B/B/Showlex.pm     Compiler Showlex backend
 ext/B/B/Terse.pm       Compiler Terse backend
 ext/B/B/Xref.pm                Compiler Xref backend
-ext/B/B.xs             Compiler backend external subroutines
 ext/B/hints/darwin.pl  Hints for named architecture
 ext/B/hints/openbsd.pl Hints for named architecture
 ext/B/Makefile.PL      Compiler backend makefile writer
@@ -3718,7 +3783,7 @@ ext/B/t/f_map                     code from perldoc -f map
 ext/B/t/f_map.t                        converted to optreeCheck()s
 ext/B/t/f_sort                 optree test raw material
 ext/B/t/f_sort.t               optree test raw material
-ext/B/t/OptreeCheck.pm         optree comparison tool
+ext/B/t/o.t            See if O works
 ext/B/t/optree_check.t         test OptreeCheck apparatus
 ext/B/t/optree_concise.t       more B::Concise tests
 ext/B/t/optree_constants.t     B::Concise rendering of optimized constant subs
@@ -3727,7 +3792,7 @@ ext/B/t/optree_samples.t  various basic codes: if for while
 ext/B/t/optree_sort.t          inplace sort optimization regression
 ext/B/t/optree_specials.t      BEGIN, END, etc code
 ext/B/t/optree_varinit.t       my,our,local var init optimization
-ext/B/t/o.t            See if O works
+ext/B/t/OptreeCheck.pm         optree comparison tool
 ext/B/t/pragma.t       See if user pragmas work.
 ext/B/t/showlex.t      See if B::ShowLex works
 ext/B/t/sv_stash.t     See if SvSTASH() works
@@ -3747,9 +3812,9 @@ ext/DynaLoader/dl_freemint.xs     GNU dld style implementation for FreeMINT
 ext/DynaLoader/dl_hpux.xs      HP-UX implementation
 ext/DynaLoader/dl_none.xs      Stub implementation
 ext/DynaLoader/dl_symbian.xs   Symbian implementation
-ext/DynaLoader/dlutils.c       Dynamic loader utilities for dl_*.xs files
 ext/DynaLoader/dl_vms.xs       VMS implementation
 ext/DynaLoader/dl_win32.xs     Win32 implementation
+ext/DynaLoader/dlutils.c       Dynamic loader utilities for dl_*.xs files
 ext/DynaLoader/DynaLoader_pm.PL        Dynamic Loader perl module
 ext/DynaLoader/hints/aix.pl    Hint for DynaLoader for named architecture
 ext/DynaLoader/hints/android.pl        Hint for DynaLoader for named architecture
@@ -3761,7 +3826,6 @@ ext/DynaLoader/hints/openbsd.pl   Hint for DynaLoader for named architecture
 ext/DynaLoader/Makefile.PL     Dynamic Loader makefile writer
 ext/DynaLoader/README          Dynamic Loader notes and intro
 ext/DynaLoader/t/DynaLoader.t  See if DynaLoader works
-EXTERN.h                       Included before foreign .h files
 ext/Errno/ChangeLog    Errno changes
 ext/Errno/Errno_pm.PL  Errno perl module create script
 ext/Errno/Makefile.PL  Errno extension makefile writer
@@ -3774,14 +3838,6 @@ ext/Fcntl/t/autoload.t   See if Fcntl AUTOLOAD error messages work
 ext/Fcntl/t/fcntl.t    See if Fcntl works
 ext/Fcntl/t/mode.t     See if S_ISREG() and S_ISDIR() work
 ext/Fcntl/t/syslfs.t   See if large files work for sysio
-ext/FileCache/lib/FileCache.pm Keep more files open than the system permits
-ext/FileCache/t/01open.t       See if FileCache works
-ext/FileCache/t/02maxopen.t    See if FileCache works
-ext/FileCache/t/03append.t     See if FileCache works
-ext/FileCache/t/04twoarg.t     See if FileCache works
-ext/FileCache/t/05override.t   See if FileCache works
-ext/FileCache/t/06export.t     See if FileCache exporting works
-ext/FileCache/t/07noimport.t   See if FileCache works without importing
 ext/File-DosGlob/DosGlob.xs            Win32 DOS-globbing module
 ext/File-DosGlob/lib/File/DosGlob.pm   Win32 DOS-globbing module
 ext/File-DosGlob/t/DosGlob.t           See if File::DosGlob works
@@ -3798,10 +3854,18 @@ ext/File-Glob/Makefile.PL       File::Glob extension makefile writer
 ext/File-Glob/t/basic.t                See if File::Glob works
 ext/File-Glob/t/case.t         See if File::Glob works
 ext/File-Glob/t/global.t       See if File::Glob works
-ext/File-Glob/TODO             File::Glob extension todo list
 ext/File-Glob/t/rt114984.t     See if File::Glob works
 ext/File-Glob/t/taint.t                See if File::Glob works
 ext/File-Glob/t/threads.t      See if File::Glob + threads works
+ext/File-Glob/TODO             File::Glob extension todo list
+ext/FileCache/lib/FileCache.pm Keep more files open than the system permits
+ext/FileCache/t/01open.t       See if FileCache works
+ext/FileCache/t/02maxopen.t    See if FileCache works
+ext/FileCache/t/03append.t     See if FileCache works
+ext/FileCache/t/04twoarg.t     See if FileCache works
+ext/FileCache/t/05override.t   See if FileCache works
+ext/FileCache/t/06export.t     See if FileCache exporting works
+ext/FileCache/t/07noimport.t   See if FileCache works without importing
 ext/GDBM_File/GDBM_File.pm     GDBM extension Perl module
 ext/GDBM_File/GDBM_File.xs     GDBM extension external subroutines
 ext/GDBM_File/hints/sco.pl     Hint for GDBM_File for named architecture
@@ -3810,6 +3874,11 @@ ext/GDBM_File/t/fatal.t          Test the fatal_func argument to gdbm_open
 ext/GDBM_File/t/gdbm.t         See if GDBM_File works
 ext/GDBM_File/typemap          GDBM extension interface types
 ext/Hash-Util/Changes          Change history of Hash::Util
+ext/Hash-Util/lib/Hash/Util.pm Hash::Util
+ext/Hash-Util/Makefile.PL      Makefile for Hash::Util
+ext/Hash-Util/t/builtin.t      See if Hash::Util builtin exports work as expected
+ext/Hash-Util/t/Util.t         See if Hash::Util works
+ext/Hash-Util/Util.xs          XS bits of Hash::Util
 ext/Hash-Util-FieldHash/Changes                        Changes for Hash::Util::FieldHash
 ext/Hash-Util-FieldHash/FieldHash.xs           XS portion
 ext/Hash-Util-FieldHash/lib/Hash/Util/FieldHash.pm     Perl portion and documentation
@@ -3820,10 +3889,6 @@ ext/Hash-Util-FieldHash/t/04_thread.t            Test script
 ext/Hash-Util-FieldHash/t/05_perlhook.t                Test script
 ext/Hash-Util-FieldHash/t/11_hashassign.t      Adapted from t/op/hashassign.t
 ext/Hash-Util-FieldHash/t/12_hashwarn.t                Adapted from t/op/hashwarn.t
-ext/Hash-Util/lib/Hash/Util.pm Hash::Util
-ext/Hash-Util/Makefile.PL      Makefile for Hash::Util
-ext/Hash-Util/t/Util.t         See if Hash::Util works
-ext/Hash-Util/Util.xs          XS bits of Hash::Util
 ext/I18N-Langinfo/Langinfo.pm  I18N::Langinfo
 ext/I18N-Langinfo/Langinfo.xs  I18N::Langinfo
 ext/I18N-Langinfo/Makefile.PL  I18N::Langinfo
@@ -3839,9 +3904,9 @@ ext/mro/mro.xs                    mro extension
 ext/NDBM_File/hints/cygwin.pl  Hint for NDBM_File for named architecture
 ext/NDBM_File/hints/dec_osf.pl Hint for NDBM_File for named architecture
 ext/NDBM_File/hints/dynixptx.pl        Hint for NDBM_File for named architecture
+ext/NDBM_File/hints/gnu.pl     Hint for NDBM_File for named architecture
 ext/NDBM_File/hints/gnukfreebsd.pl     Hint for NDBM_File for named architecture
 ext/NDBM_File/hints/gnuknetbsd.pl      Hint for NDBM_File for named architecture
-ext/NDBM_File/hints/gnu.pl     Hint for NDBM_File for named architecture
 ext/NDBM_File/hints/linux.pl   Hint for NDBM_File for named architecture
 ext/NDBM_File/hints/MSWin32.pl Hint for NDBM_File for named architecture
 ext/NDBM_File/hints/sco.pl     Hint for NDBM_File for named architecture
@@ -3854,9 +3919,9 @@ ext/NDBM_File/t/ndbm.t            See if NDBM_File works
 ext/NDBM_File/typemap          NDBM extension interface types
 ext/ODBM_File/hints/cygwin.pl  Hint for ODBM_File for named architecture
 ext/ODBM_File/hints/dec_osf.pl Hint for ODBM_File for named architecture
+ext/ODBM_File/hints/gnu.pl     Hint for ODBM_File for named architecture
 ext/ODBM_File/hints/gnukfreebsd.pl     Hint for NDBM_File for named architecture
 ext/ODBM_File/hints/gnuknetbsd.pl      Hint for NDBM_File for named architecture
-ext/ODBM_File/hints/gnu.pl     Hint for ODBM_File for named architecture
 ext/ODBM_File/hints/hpux.pl    Hint for ODBM_File for named architecture
 ext/ODBM_File/hints/linux.pl   Hint for ODBM_File for named architecture
 ext/ODBM_File/hints/MSWin32.pl Hint for ODBM_File for named architecture
@@ -3898,17 +3963,15 @@ ext/Pod-Html/lib/Pod/Html.pm    Convert POD data to HTML
 ext/Pod-Html/t/anchorify.t
 ext/Pod-Html/t/cache.pod
 ext/Pod-Html/t/cache.t
-ext/Pod-Html/t/crossref2.t
-ext/Pod-Html/t/crossref3.t
 ext/Pod-Html/t/crossref.pod
 ext/Pod-Html/t/crossref.t
+ext/Pod-Html/t/crossref2.t
+ext/Pod-Html/t/crossref3.t
 ext/Pod-Html/t/eol.t           test end of line agnosticism
-ext/Pod-Html/testdir/perlpodspec-copy.pod
-ext/Pod-Html/testdir/perlvar-copy.pod
-ext/Pod-Html/t/feature2.pod
-ext/Pod-Html/t/feature2.t
 ext/Pod-Html/t/feature.pod
 ext/Pod-Html/t/feature.t
+ext/Pod-Html/t/feature2.pod
+ext/Pod-Html/t/feature2.t
 ext/Pod-Html/t/htmldir1.pod
 ext/Pod-Html/t/htmldir1.t
 ext/Pod-Html/t/htmldir2.pod
@@ -3930,6 +3993,8 @@ ext/Pod-Html/t/poderr.pod
 ext/Pod-Html/t/poderr.t
 ext/Pod-Html/t/podnoerr.pod
 ext/Pod-Html/t/podnoerr.t
+ext/Pod-Html/testdir/perlpodspec-copy.pod
+ext/Pod-Html/testdir/perlvar-copy.pod
 ext/POSIX/hints/bsdos.pl       Hint for POSIX for named architecture
 ext/POSIX/hints/dynixptx.pl    Hint for POSIX for named architecture
 ext/POSIX/hints/freebsd.pl     Hint for POSIX for named architecture
@@ -3962,19 +4027,19 @@ ext/POSIX/t/waitpid.t           See if waitpid works
 ext/POSIX/t/wrappers.t         Test the POSIX wrapper subroutines
 ext/POSIX/typemap              POSIX extension interface types
 ext/re/Makefile.PL             re extension makefile writer
-ext/re/re_comp.h               re extension wrapper for regcomp.h
 ext/re/re.pm                   re extension Perl module
-ext/re/re_top.h                        re extension symbol hiding header
 ext/re/re.xs                   re extension external subroutines
+ext/re/re_comp.h               re extension wrapper for regcomp.h
+ext/re/re_top.h                        re extension symbol hiding header
 ext/re/t/lexical_debug.pl      generate debug output for lexical re 'debug'
 ext/re/t/lexical_debug.t       test that lexical re 'debug' works
 ext/re/t/qr.t                  test that qr// is a Regexp
-ext/re/t/reflags.t             see if re '/xism' pragma works
+ext/re/t/re.t                  see if re pragma works
 ext/re/t/re_funcs.t            See if exportable 're' funcs in re.xs work
 ext/re/t/re_funcs_u.t          See if exportable 're' funcs in universal.c work
+ext/re/t/reflags.t             see if re '/xism' pragma works
 ext/re/t/regop.pl              generate debug output for various patterns
 ext/re/t/regop.t               test RE optimizations by scraping debug output
-ext/re/t/re.t                  see if re pragma works
 ext/re/t/strict.t              see if re 'strict' subpragma works
 ext/SDBM_File/biblio   SDBM kit
 ext/SDBM_File/CHANGES  SDBM kit
@@ -3996,9 +4061,9 @@ ext/SDBM_File/readme.ms   SDBM kit
 ext/SDBM_File/README.too       SDBM kit
 ext/SDBM_File/sdbm.3   SDBM kit
 ext/SDBM_File/sdbm.c   SDBM kit
+ext/SDBM_File/sdbm.h   SDBM kit
 ext/SDBM_File/SDBM_File.pm     SDBM extension Perl module
 ext/SDBM_File/SDBM_File.xs     SDBM extension external subroutines
-ext/SDBM_File/sdbm.h   SDBM kit
 ext/SDBM_File/t/constants.t    See if SDBM_File constants work
 ext/SDBM_File/t/prep.t         See if SDBM_File with extra argument works
 ext/SDBM_File/t/sdbm.t         See if SDBM_File works
@@ -4041,14 +4106,14 @@ ext/XS-APItest/t/addissub.t     test op check wrapping
 ext/XS-APItest/t/arrayexpr.t   test recursive descent expression parsing
 ext/XS-APItest/t/autoload.t    Test XS AUTOLOAD routines
 ext/XS-APItest/t/BHK.pm                Helper for ./blockhooks.t
+ext/XS-APItest/t/Block.pm      Helper for ./blockhooks.t
 ext/XS-APItest/t/blockasexpr.t test recursive descent block parsing
-ext/XS-APItest/t/blockhooks-csc.t      XS::APItest: more tests for PL_blockhooks
 ext/XS-APItest/t/blockhooks.t  XS::APItest: tests for PL_blockhooks
-ext/XS-APItest/t/Block.pm      Helper for ./blockhooks.t
+ext/XS-APItest/t/blockhooks-csc.t      XS::APItest: more tests for PL_blockhooks
+ext/XS-APItest/t/call.t                Test calling perl from C
 ext/XS-APItest/t/call_checker.t        test call checker plugin API
 ext/XS-APItest/t/caller.t      XS::APItest: tests for caller_cx
 ext/XS-APItest/t/callregexec.t XS::APItest: tests for CALLREGEXEC()
-ext/XS-APItest/t/call.t                Test calling perl from C
 ext/XS-APItest/t/check_warnings.t      test scope of "Too late for CHECK"
 ext/XS-APItest/t/cleanup.t     test stack behaviour on unwinding
 ext/XS-APItest/t/clone-with-stack.t    test clone with CLONEf_COPY_STACKS works
@@ -4066,9 +4131,9 @@ ext/XS-APItest/t/gotosub.t        XS::APItest: tests goto &xsub and hints
 ext/XS-APItest/t/grok.t                XS::APItest: tests for grok* functions
 ext/XS-APItest/t/gv_autoload4.t        XS::APItest: tests for gv_autoload4() and variants
 ext/XS-APItest/t/gv_const_sv.t XS::APItest: test gv_const_sv()
+ext/XS-APItest/t/gv_fetchmeth.t                XS::APItest: tests for gv_fetchmeth() and variants
 ext/XS-APItest/t/gv_fetchmeth_autoload.t       XS::APItest: tests for gv_fetchmeth_autoload() and variants
 ext/XS-APItest/t/gv_fetchmethod_flags.t        XS::APItest: tests for gv_fetchmethod_flags() and variants
-ext/XS-APItest/t/gv_fetchmeth.t                XS::APItest: tests for gv_fetchmeth() and variants
 ext/XS-APItest/t/gv_init.t     XS::APItest: tests for gv_init and variants
 ext/XS-APItest/t/handy.t       XS::APItest: tests for handy.h
 ext/XS-APItest/t/hash.t                XS::APItest: tests for hash related APIs
@@ -4084,8 +4149,8 @@ ext/XS-APItest/t/locale.t test locale-related things
 ext/XS-APItest/t/loopblock.t   test recursive descent block parsing
 ext/XS-APItest/t/looprest.t    test recursive descent statement-sequence parsing
 ext/XS-APItest/t/lvalue.t      Test XS lvalue functions
-ext/XS-APItest/t/magic_chain.t test low-level MAGIC chain handling
 ext/XS-APItest/t/magic.t       test attaching, finding, and removing magic
+ext/XS-APItest/t/magic_chain.t test low-level MAGIC chain handling
 ext/XS-APItest/t/Markers.pm    Helper for ./blockhooks.t
 ext/XS-APItest/t/mro.t         Test mro plugin api
 ext/XS-APItest/t/multicall.t   XS::APItest: test MULTICALL macros
@@ -4094,9 +4159,9 @@ ext/XS-APItest/t/my_exit.t        XS::APItest: test my_exit
 ext/XS-APItest/t/newCONSTSUB.t XS::APItest: test newCONSTSUB(_flags)
 ext/XS-APItest/t/newDEFSVOP.t  XS::APItest: test newDEFSVOP
 ext/XS-APItest/t/Null.pm       Helper for ./blockhooks.t
+ext/XS-APItest/t/op.t          XS::APItest: tests for OP related APIs
 ext/XS-APItest/t/op_contextualize.t    test op_contextualize() API
 ext/XS-APItest/t/op_list.t     test OP list construction API
-ext/XS-APItest/t/op.t          XS::APItest: tests for OP related APIs
 ext/XS-APItest/t/overload.t    XS::APItest: tests for overload related APIs
 ext/XS-APItest/t/pad_scalar.t  Test pad_findmy_* functions
 ext/XS-APItest/t/peep.t                test PL_peepp/PL_rpeepp
@@ -4116,12 +4181,12 @@ ext/XS-APItest/t/stmtsasexpr.t  test recursive descent statement-sequence parsing
 ext/XS-APItest/t/stuff_modify_bug.t    test for eval side-effecting source string
 ext/XS-APItest/t/stuff_svcur_bug.t     test for a bug in lex_stuff_pvn
 ext/XS-APItest/t/subcall.t     Test XSUB calls
-ext/XS-APItest/t/svcatpvf.t    Test sv_catpvf argument reordering
 ext/XS-APItest/t/svcat.t       Test sv_catpvn
+ext/XS-APItest/t/svcatpvf.t    Test sv_catpvf argument reordering
 ext/XS-APItest/t/sviscow.t     Test SvIsCOW
 ext/XS-APItest/t/svpeek.t      XS::APItest extension
-ext/XS-APItest/t/svpv_magic.t  Test behaviour of SvPVbyte/utf8 & get magic
 ext/XS-APItest/t/svpv.t                More generic SvPVbyte and SvPVutf8 tests
+ext/XS-APItest/t/svpv_magic.t  Test behaviour of SvPVbyte/utf8 & get magic
 ext/XS-APItest/t/svsetsv.t     Test behaviour of sv_setsv with/without PERL_CORE
 ext/XS-APItest/t/swaplabel.t   test recursive descent label parsing
 ext/XS-APItest/t/swaptwostmts.t        test recursive descent statement parsing
@@ -4134,8 +4199,8 @@ ext/XS-APItest/t/utf8.t           Tests for code in utf8.c
 ext/XS-APItest/t/weaken.t      XS::APItest: tests for sv_rvweaken() and sv_get_backrefs()
 ext/XS-APItest/t/whichsig.t    XS::APItest: tests for whichsig() and variants
 ext/XS-APItest/t/win32.t       Test Win32 specific APIs
-ext/XS-APItest/t/xs_special_subs_require.t     for require too
 ext/XS-APItest/t/xs_special_subs.t     Test that XS BEGIN/CHECK/INIT/END work
+ext/XS-APItest/t/xs_special_subs_require.t     for require too
 ext/XS-APItest/t/xsub_h.t      Tests for XSUB.h
 ext/XS-APItest/typemap
 ext/XS-APItest/XSUB-redefined-macros.xs        XS code needing redefined macros.
@@ -4146,6 +4211,7 @@ ext/XS-Typemap/stdio.c            XS::Typemap extension
 ext/XS-Typemap/t/Typemap.t     test that typemaps work
 ext/XS-Typemap/Typemap.pm      XS::Typemap extension
 ext/XS-Typemap/Typemap.xs      XS::Typemap extension
+EXTERN.h                       Included before foreign .h files
 fakesdio.h                     stdio in terms of PerlIO
 feature.h                      Feature header
 form.h                         Public declarations for formats
@@ -4154,12 +4220,12 @@ globals.c                       File to declare global symbols (for shared library)
 globvar.sym                    Global variables that need hiding when embedded
 gv.c                           Glob value code
 gv.h                           Glob value header
-h2pl/cbreak2.pl                        cbreak routines using .pl
 h2pl/cbreak.pl                 cbreak routines using .ph
+h2pl/cbreak2.pl                        cbreak routines using .pl
 h2pl/eg/sizeof.ph              Sample sizeof array initialization
 h2pl/eg/sys/errno.pl           Sample translated errno.pl
-h2pl/eg/sysexits.pl            Sample translated sysexits.pl
 h2pl/eg/sys/ioctl.pl           Sample translated ioctl.pl
+h2pl/eg/sysexits.pl            Sample translated sysexits.pl
 h2pl/getioctlsizes             Program to extract types from ioctl.h
 h2pl/mksizes                   Program to make %sizeof array
 h2pl/mkvars                    Program to make .pl from .ph files
@@ -4168,12 +4234,12 @@ h2pl/tcbreak                    cbreak test routine using .ph
 h2pl/tcbreak2                  cbreak test routine using .pl
 haiku/Haiku/Haiku.pm           Haiku extension Perl module
 haiku/Haiku/Haiku.xs           Haiku extension external subroutines
-haiku/haikuish.h               Header for the Haiku port
 haiku/Haiku/Makefile.PL                Haiku extension makefile writer
+haiku/haikuish.h               Header for the Haiku port
 handy.h                                Handy definitions
+hints/aix.sh                   Hints for named architecture
 hints/aix_3.sh                 Hints for named architecture
 hints/aix_4.sh                 Hints for named architecture
-hints/aix.sh                   Hints for named architecture
 hints/altos486.sh              Hints for named architecture
 hints/amigaos.sh               Hints for named architecture
 hints/atheos.sh                        Hints for named architecture
@@ -4190,17 +4256,17 @@ hints/dcosx.sh                  Hints for named architecture
 hints/dec_osf.sh               Hints for named architecture
 hints/dos_djgpp.sh             Hints for named architecture
 hints/dragonfly.sh             Hints for named architecture
-hints/dynixptx.sh              Hints for named architecture
 hints/dynix.sh                 Hints for named architecture
+hints/dynixptx.sh              Hints for named architecture
 hints/epix.sh                  Hints for named architecture
 hints/esix4.sh                 Hints for named architecture
 hints/fps.sh                   Hints for named architecture
 hints/freebsd.sh               Hints for named architecture
 hints/freemint.sh              Hints for named architecture
 hints/genix.sh                 Hints for named architecture
+hints/gnu.sh                   Hints for named architecture
 hints/gnukfreebsd.sh           Hints for named architecture
 hints/gnuknetbsd.sh            Hints for named architecture
-hints/gnu.sh                   Hints for named architecture
 hints/greenhills.sh            Hints for named architecture
 hints/haiku.sh                 Hints for named architecture
 hints/hpux.sh                  Hints for named architecture
@@ -4208,13 +4274,13 @@ hints/i386.sh                   Hints for named architecture
 hints/interix.sh               Hints for named architecture
 hints/irix_4.sh                        Hints for named architecture
 hints/irix_5.sh                        Hints for named architecture
+hints/irix_6.sh                        Hints for named architecture
 hints/irix_6_0.sh              Hints for named architecture
 hints/irix_6_1.sh              Hints for named architecture
-hints/irix_6.sh                        Hints for named architecture
-hints/isc_2.sh                 Hints for named architecture
 hints/isc.sh                   Hints for named architecture
-hints/linux-android.sh         Hints for named architecture
+hints/isc_2.sh                 Hints for named architecture
 hints/linux.sh                 Hints for named architecture
+hints/linux-android.sh         Hints for named architecture
 hints/lynxos.sh                        Hints for named architecture
 hints/midnightbsd.sh           Hints for named architecture
 hints/mips.sh                  Hints for named architecture
@@ -4234,12 +4300,12 @@ hints/powerux.sh                Hints for named architecture
 hints/qnx.sh                   Hints for named architecture
 hints/README.hints             Notes about hints
 hints/riscos.sh                        Hints for named architecture
+hints/sco.sh                   Hints for named architecture
 hints/sco_2_3_0.sh             Hints for named architecture
 hints/sco_2_3_1.sh             Hints for named architecture
 hints/sco_2_3_2.sh             Hints for named architecture
 hints/sco_2_3_3.sh             Hints for named architecture
 hints/sco_2_3_4.sh             Hints for named architecture
-hints/sco.sh                   Hints for named architecture
 hints/solaris_2.sh             Hints for named architecture
 hints/stellar.sh               Hints for named architecture
 hints/sunos_4_0.sh             Hints for named architecture
@@ -4251,19 +4317,19 @@ hints/t001.c                    Test case for gcc bug
 hints/ti1500.sh                        Hints for named architecture
 hints/ultrix_4.sh              Hints for named architecture
 hints/umips.sh                 Hints for named architecture
-hints/unicosmk.sh              Hints for named architecture
 hints/unicos.sh                        Hints for named architecture
+hints/unicosmk.sh              Hints for named architecture
 hints/unisysdynix.sh           Hints for named architecture
 hints/utekv.sh                 Hints for named architecture
 hints/uwin.sh                  Hints for named architecture
 hints/vos.sh                   Hints for named architecture
 hv.c                           Hash value code
-hv_func.h                      Hash value static inline function header
 hv.h                           Hash value header
+hv_func.h                      Hash value static inline function header
 inline.h                       Static inline functions
 INSTALL                                Detailed installation instructions
-installhtml                    Perl script to install html files for pods
 install_lib.pl                 functions shared between install* scripts
+installhtml                    Perl script to install html files for pods
 installman                     Perl script to install man pages for pods
 installperl                    Perl script to do "make install" dirty work
 INTERN.h                       Included before domestic .h files
@@ -4273,34 +4339,36 @@ iperlsys.h                      Perl's interface to the system
 keywords.c                     Perl_keyword(), generated by regen/keywords.pl
 keywords.h                     The keyword numbers
 l1_char_class_tab.h            256 word bit table of character classes (for handy.h)
+lib/_charnames.pm              Character names
 lib/AnyDBM_File.pm             Perl module to emulate dbmopen
 lib/AnyDBM_File.t              See if AnyDBM_File works
-lib/B/Deparse-core.t           See if B::Deparse knows when to use CORE::
 lib/B/Deparse.pm               Compiler Deparse backend
-lib/B/Deparse-subclass.t       See if B::Deparse can be subclassed
 lib/B/Deparse.t                        See if B::Deparse works
+lib/B/Deparse-core.t           See if B::Deparse knows when to use CORE::
+lib/B/Deparse-subclass.t       See if B::Deparse can be subclassed
+lib/B/Op_private.pm            Definitions of OP op_private flags
 lib/Benchmark.pm               Measure execution time
 lib/Benchmark.t                        See if Benchmark works
 lib/blib.pm                    For "use blib"
 lib/blib.t                     blib.pm test
-lib/B/Op_private.pm            Definitions of OP op_private flags
-lib/bytes_heavy.pl             Support routines for byte pragma
 lib/bytes.pm                   Pragma to enable byte operations
 lib/bytes.t                    bytes.pm test
-lib/_charnames.pm              Character names
+lib/bytes_heavy.pl             Support routines for byte pragma
 lib/charnames.pm               Character names
 lib/charnames.t                        See if character names work
 lib/Class/Struct.pm            Declare struct-like datatypes as Perl classes
 lib/Class/Struct.t             See if Class::Struct works
+lib/Config.t                   See if Config works
 lib/Config/Extensions.pm       Convenient hash lookup for built extensions
 lib/Config/Extensions.t                See if Config::Extensions works
-lib/Config.t                   See if Config works
 lib/CORE.pod                   document the CORE namespace
+lib/DB.pm                      Debugger API (draft)
+lib/DB.t                       See if DB works
+lib/DBM_Filter.pm              DBM Filter module
 lib/DBM_Filter/compress.pm     DBM Filter to compress keys/values
 lib/DBM_Filter/encode.pm       DBM Filter for encoding
 lib/DBM_Filter/int32.pm                DBM Filter for creating int32 keys/values
 lib/DBM_Filter/null.pm         DBM Filter for null termination
-lib/DBM_Filter.pm              DBM Filter module
 lib/DBM_Filter/t/01error.t     test DBM_Filter::null
 lib/DBM_Filter/t/02core.t      test DBM_Filter::null
 lib/DBM_Filter/t/compress.t    test DBM_Filter::compress
@@ -4310,8 +4378,6 @@ lib/DBM_Filter/t/null.t           test DBM_Filter::null
 lib/DBM_Filter/t/utf8.t                test DBM_Filter::utf8
 lib/DBM_Filter/utf8.pm         DBM Filter for UTF-8 Encoding
 lib/dbm_filter_util.pl         Utility functions used by DBM Filter tests
-lib/DB.pm                      Debugger API (draft)
-lib/DB.t                       See if DB works
 lib/deprecate.pm               A pragma for deprecating modules from the core.
 lib/diagnostics.pm             Print verbose diagnostics
 lib/diagnostics.t              See if diagnostics.pm works
@@ -4334,11 +4400,11 @@ lib/File/Compare.pm             Emulation of cmp command
 lib/File/Compare.t             See if File::Compare works
 lib/File/Copy.pm               Emulation of cp command
 lib/File/Copy.t                        See if File::Copy works
-lib/FileHandle.pm              Backward-compatible front end to IO extension
-lib/FileHandle.t               See if FileHandle works
-lib/File/stat-7896.t           A test for ID 20011110.104
 lib/File/stat.pm               By-name interface to Perl's builtin stat
 lib/File/stat.t                        See if File::stat works
+lib/File/stat-7896.t           A test for ID 20011110.104
+lib/FileHandle.pm              Backward-compatible front end to IO extension
+lib/FileHandle.t               See if FileHandle works
 lib/filetest.pm                        For "use filetest"
 lib/filetest.t                 See if filetest works
 lib/FindBin.pm                 Find name of currently executing program
@@ -4366,12 +4432,12 @@ lib/Net/servent.pm              By-name interface to Perl's builtin getserv*
 lib/Net/servent.t              See if Net::servtent works
 lib/open.pm                    Pragma to specify default I/O layers
 lib/open.t                     See if the open pragma works
+lib/overload.pm                        Module for overloading perl operators
+lib/overload.t                 See if operator overloading works
+lib/overload/numbers.pm                Helper for overloading pragma
 lib/overload64.t               See if operator overloading works with 64-bit ints
 lib/overloading.pm             Pragma to lexically control overloading
 lib/overloading.t              Tests for overloading.pm
-lib/overload/numbers.pm                Helper for overloading pragma
-lib/overload.pm                        Module for overloading perl operators
-lib/overload.t                 See if operator overloading works
 lib/perl5db.pl                 Perl debugging routines
 lib/perl5db.t                  Tests for the Perl debugger
 lib/perl5db/t/break-on-dot     Test script used by perl5db.t
@@ -4392,8 +4458,8 @@ lib/perl5db/t/rt-104168           Tests for the Perl debugger
 lib/perl5db/t/rt-121509-restart-after-chdir            Tests for the Perl debugger
 lib/perl5db/t/rt-61222         Tests for the Perl debugger
 lib/perl5db/t/rt-66110         Tests for the Perl debugger
-lib/perl5db/t/source-cmd-test-no-q.perldb              Tests for the Perl debugger
 lib/perl5db/t/source-cmd-test.perldb           Tests for the Perl debugger
+lib/perl5db/t/source-cmd-test-no-q.perldb              Tests for the Perl debugger
 lib/perl5db/t/symbol-table-bug Tests for the Perl debugger
 lib/perl5db/t/taint            Tests for the Perl debugger
 lib/perl5db/t/test-a-statement-1       Tests for the Perl debugger
@@ -4406,8 +4472,8 @@ lib/perl5db/t/test-m-statement-1  Tests for the Perl debugger
 lib/perl5db/t/test-passing-at-underscore-to-x-etc      Tests for the Perl debugger
 lib/perl5db/t/test-PrintRet-option-1   Tests for the Perl debugger
 lib/perl5db/t/test-r-statement Tests for the Perl debugger
-lib/perl5db/t/test-warnLevel-option-1  Tests for the Perl debugger
 lib/perl5db/t/test-w-statement-1       Tests for the Perl debugger
+lib/perl5db/t/test-warnLevel-option-1  Tests for the Perl debugger
 lib/perl5db/t/uncalled-subroutine      Tests for the Perl debugger
 lib/perl5db/t/with-subroutine          Tests for the Perl debugger
 lib/perlbug.t                  Tests for the Perl bug reporter
@@ -4433,12 +4499,12 @@ lib/Thread.t                    Thread extensions frontend tests
 lib/Tie/Array.pm               Base class for tied arrays
 lib/Tie/Array/push.t           Test for Tie::Array
 lib/Tie/Array/splice.t         Test for Tie::Array::SPLICE
-lib/Tie/Array/stdpush.t                Test for Tie::StdArray
 lib/Tie/Array/std.t            Test for Tie::StdArray
+lib/Tie/Array/stdpush.t                Test for Tie::StdArray
 lib/Tie/ExtraHash.t            Test for Tie::ExtraHash (in Tie/Hash.pm)
 lib/Tie/Handle.pm              Base class for tied handles
-lib/Tie/Handle/stdhandle_from_handle.t Test for Tie::StdHandle/Handle backwards compat
 lib/Tie/Handle/stdhandle.t     Test for Tie::StdHandle
+lib/Tie/Handle/stdhandle_from_handle.t Test for Tie::StdHandle/Handle backwards compat
 lib/Tie/Hash.pm                        Base class for tied hashes
 lib/Tie/Hash.t                 See if Tie::Hash works
 lib/Tie/Scalar.pm              Base class for tied scalars
@@ -4513,32 +4579,32 @@ lib/User/grent.pm               By-name interface to Perl's builtin getgr*
 lib/User/grent.t               See if User::grwent works
 lib/User/pwent.pm              By-name interface to Perl's builtin getpw*
 lib/User/pwent.t               See if User::pwent works
-lib/utf8_heavy.pl              Support routines for utf8 pragma
 lib/utf8.pm                    Pragma to control Unicode support
 lib/utf8.t                     See if utf8 operations work
-lib/vars_carp.t                        See if "use vars" doesn't load Carp.pm per default
+lib/utf8_heavy.pl              Support routines for utf8 pragma
 lib/vars.pm                    Declare pseudo-imported global variables
 lib/vars.t                     See if "use vars" works
+lib/vars_carp.t                        See if "use vars" doesn't load Carp.pm per default
 lib/vmsish.pm                  Control VMS-specific behavior of Perl core
 lib/vmsish.t                   Tests for vmsish.pm
 lib/warnings.pm                        For "use warnings"
-lib/warnings/register.pm       For "use warnings::register"
 lib/warnings.t                 See if warning controls work
+lib/warnings/register.pm       For "use warnings::register"
 locale.c                       locale-specific utility functions
+make_ext.pl                    Used by Makefile to execute extension Makefiles
+make_patchnum.pl               Script to generate git_version.h and lib/Config_git.pl files for all OS'es
 makedef.pl                     Create symbol export lists for linking
 makedepend.SH                  Precursor to makedepend
-make_ext.pl                    Used by Makefile to execute extension Makefiles
 Makefile.micro                 microperl Makefile
 Makefile.SH                    A script that generates Makefile
-make_patchnum.pl               Script to generate git_version.h and lib/Config_git.pl files for all OS'es
 malloc.c                       A version of malloc you might not want
 malloc_ctl.h                   A version of malloc you might not want
 MANIFEST                       This list of files
 mathoms.c                      A home for binary-compatible code artifacts
-metaconfig.h                   Control file for the metaconfig process
-metaconfig.SH                  Control file for the metaconfig process
 META.json                      Distribution meta-data in JSON
 META.yml                       Distribution meta-data in YAML
+metaconfig.h                   Control file for the metaconfig process
+metaconfig.SH                  Control file for the metaconfig process
 mg.c                           Magic code
 mg.h                           Magic header
 mg_names.inc                   Generated magic names used by dump.c
@@ -4559,10 +4625,10 @@ NetWare/CLIBsdio.h              NetWare port
 NetWare/CLIBstr.h              NetWare port
 NetWare/CLIBstuf.c             NetWare port
 NetWare/CLIBstuf.h             NetWare port
+NetWare/config.wc              NetWare port
 NetWare/config_h.PL            NetWare port
 NetWare/config_H.wc            NetWare port
 NetWare/config_sh.PL           NetWare port
-NetWare/config.wc              NetWare port
 NetWare/deb.h                  NetWare port
 NetWare/dl_netware.xs          NetWare port
 NetWare/intdef.h               NetWare port
@@ -4599,28 +4665,26 @@ NetWare/nwvmem.h                NetWare port
 NetWare/perllib.cpp            NetWare port
 NetWare/splittree.pl           NetWare port
 NetWare/sv_nw.c                        NetWare port
-NetWare/testnlm/echo/echo.c    NetWare port
-NetWare/testnlm/type/type.c    NetWare port
 NetWare/t/NWModify.pl          NetWare port
 NetWare/t/NWScripts.pl         NetWare port
 NetWare/t/Readme.txt           NetWare port
+NetWare/testnlm/echo/echo.c    NetWare port
+NetWare/testnlm/type/type.c    NetWare port
 NetWare/win32ish.h             NetWare port
 nostdio.h                      Cause compile error on stdio calls
 numeric.c                      Miscellaneous numeric conversion routines
 op.c                           Opcode syntax tree code
-opcode.h                       Automatically generated opcode header
 op.h                           Opcode syntax tree header
-opnames.h                      Automatically generated opcode header
 op_reg_common.h                        Common parts of op.h, regexp.h header
+opcode.h                       Automatically generated opcode header
+opnames.h                      Automatically generated opcode header
 os2/Changes                    Changelog for OS/2 port
 os2/diff.configure             Patches to Configure
-os2/dlfcn.h                    Addon for dl_open
 os2/dl_os2.c                   Addon for dl_open
+os2/dlfcn.h                    Addon for dl_open
 os2/Makefile.SHs               Shared library generation for OS/2
-os2/os2add.sym                 Overriding symbols to export
-os2/os2_base.t                 Additional tests for builtin methods
 os2/os2.c                      Additional code for OS/2
-os2/os2ish.h                   Header for OS/2
+os2/os2.sym                    Additional symbols to export
 os2/OS2/OS2-ExtAttr/Changes    EA access module
 os2/OS2/OS2-ExtAttr/ExtAttr.pm EA access module
 os2/OS2/OS2-ExtAttr/ExtAttr.xs EA access module
@@ -4641,8 +4705,8 @@ os2/OS2/OS2-Process/Process.pm    system() constants in a module
 os2/OS2/OS2-Process/Process.xs system() constants in a module
 os2/OS2/OS2-Process/t/os2_atoms.t      Test for OS2::Process
 os2/OS2/OS2-Process/t/os2_clipboard.t  Test for OS2::Process
-os2/OS2/OS2-Process/t/os2_process_kid.t        Tests
 os2/OS2/OS2-Process/t/os2_process.t    Tests
+os2/OS2/OS2-Process/t/os2_process_kid.t        Tests
 os2/OS2/OS2-Process/t/os2_process_text.t       Tests
 os2/OS2/OS2-REXX/Changes               DLL access module
 os2/OS2/OS2-REXX/DLL/Changes   DLL access module
@@ -4664,10 +4728,12 @@ os2/OS2/OS2-REXX/t/rx_tievar.t  DLL access module
 os2/OS2/OS2-REXX/t/rx_tieydb.t DLL access module
 os2/OS2/OS2-REXX/t/rx_varset.t DLL access module
 os2/OS2/OS2-REXX/t/rx_vrexx.t  DLL access module
+os2/OS2/typemap                        Common typemap for OS/2 types
+os2/os2_base.t                 Additional tests for builtin methods
 os2/os2_pipe.t                 Tests for pipe creation logic
-os2/os2.sym                    Additional symbols to export
+os2/os2add.sym                 Overriding symbols to export
+os2/os2ish.h                   Header for OS/2
 os2/os2thread.h                        pthread-like typedefs
-os2/OS2/typemap                        Common typemap for OS/2 types
 os2/perl2cmd.pl                        Corrects installed binaries under OS/2
 os2/perlrexx.c                 Support perl interpreter embedded in REXX
 os2/perlrexx.cmd               Test perl interpreter embedded in REXX
@@ -4678,15 +4744,15 @@ pad.c                           Scratchpad functions
 pad.h                          Scratchpad headers
 parser.h                       parser object header
 patchlevel.h                   The current patch level of perl
+perl.c                         main()
+perl.h                         Global declarations
 perlapi.c                      Perl API functions
 perlapi.h                      Perl API function declarations
-perl.c                         main()
 perldtrace.d                   D script for Perl probes
-perl.h                         Global declarations
 perlio.c                       C code for PerlIO abstraction
 perlio.h                       PerlIO abstraction
-perliol.h                      PerlIO Layer definition
 perlio.sym                     Symbols for PerlIO abstraction
+perliol.h                      PerlIO Layer definition
 perlsdio.h                     Fake stdio using perlio
 perlvars.h                     Global variables
 perly.act                      parser actions; derived from perly.y
@@ -4697,8 +4763,8 @@ perly.y                           Yacc grammar for perl
 plan9/aperl                    Shell to make Perl error messages Acme-friendly
 plan9/arpa/inet.h              Plan9 port: replacement C header file
 plan9/buildinfo                        Plan9 port: configuration information
-plan9/config_h.sample          Plan9 port: 5.8.0 sample config.h
 plan9/config.plan9             Plan9 port: config.h template
+plan9/config_h.sample          Plan9 port: 5.8.0 sample config.h
 plan9/config_sh.sample         Plan9 port: 5.8.0 sample config.sh
 plan9/exclude                  Plan9 port: tests to skip
 plan9/fndvers                  Plan9 port: update Perl version in config.plan9
@@ -4711,6 +4777,7 @@ plan9/setup.rc                    Plan9 port: script for easy build+install
 plan9/versnum                  Plan9 port: script to print version number
 pod/buildtoc                   Generate pod/perltoc.pod and pod/roffitall
 pod/Makefile.SH                        generate Makefile which makes pods into something else
+pod/perl.pod                   Perl overview (this section)
 pod/perl5004delta.pod          Perl changes in version 5.004
 pod/perl5005delta.pod          Perl changes in version 5.005
 pod/perl5100delta.pod          Perl changes in version 5.10.0
@@ -4744,6 +4811,7 @@ pod/perl5222delta.pod             Perl changes in version 5.22.2
 pod/perl5240delta.pod          Perl changes in version 5.24.0
 pod/perl5250delta.pod          Perl changes in version 5.25.0
 pod/perl5251delta.pod          Perl changes in version 5.25.1
+pod/perl5252delta.pod          Perl changes in version 5.25.2
 pod/perl561delta.pod           Perl changes in version 5.6.1
 pod/perl56delta.pod            Perl changes in version 5.6
 pod/perl581delta.pod           Perl changes in version 5.8.1
@@ -4795,33 +4863,32 @@ pod/perlipc.pod                 Perl interprocess communication
 pod/perllexwarn.pod            Perl warnings and their control
 pod/perllocale.pod             Perl locale support
 pod/perllol.pod                        Perl data structures: arrays of arrays
+pod/perlmod.pod                        Perl modules: how they work
 pod/perlmodinstall.pod         Perl modules: how to install from CPAN
 pod/perlmodlib.PL              Generate pod/perlmodlib.pod
-pod/perlmod.pod                        Perl modules: how they work
 pod/perlmodstyle.pod           Perl modules: how to write modules with style
 pod/perlmroapi.pod             Perl method resolution plugin interface
 pod/perlnewmod.pod             Perl modules: preparing a new module for distribution
 pod/perlnumber.pod             Perl number semantics
 pod/perlobj.pod                        Perl objects
 pod/perlootut.pod              Perl OO tutorial for beginners
-pod/perlopentut.pod            Perl open() tutorial
 pod/perlop.pod                 Perl operators and precedence
+pod/perlopentut.pod            Perl open() tutorial
 pod/perlpacktut.pod            Perl pack() and unpack() tutorial
 pod/perlperf.pod               Perl Performance and Optimization Techniques
-pod/perl.pod                   Perl overview (this section)
 pod/perlpod.pod                        Perl plain old documentation
 pod/perlpodspec.pod            Perl plain old documentation format specification
 pod/perlpodstyle.pod           Perl POD style guide
 pod/perlpolicy.pod             Perl development policies
 pod/perlport.pod               Perl portability guide
 pod/perlpragma.pod             Perl modules: writing a user pragma
+pod/perlre.pod                 Perl regular expressions, the rest of the story
 pod/perlreapi.pod              Perl regular expression plugin interface
 pod/perlrebackslash.pod                Perl regular expression backslash sequences
 pod/perlrecharclass.pod                Perl regular expression character classes
 pod/perlref.pod                        Perl references, the rest of the story
 pod/perlreftut.pod             Perl references short introduction
 pod/perlreguts.pod             Perl regular expression engine internals
-pod/perlre.pod                 Perl regular expressions, the rest of the story
 pod/perlrepository.pod         
 pod/perlrequick.pod            Perl regular expressions quick start
 pod/perlreref.pod              Perl regular expressions quick reference
@@ -4853,29 +4920,29 @@ Policy_sh.SH                    Hold site-wide preferences between Configure runs.
 Porting/acknowledgements.pl    Generate perldelta acknowledgements text
 Porting/add-package.pl         Add/Update CPAN modules that are part of Core
 Porting/bench.pl               Run benchmarks against t/perf/benchmarks
-Porting/bisect-example.sh      Example script to use with git bisect run
 Porting/bisect.pl              A tool to make bisecting easy
+Porting/bisect-example.sh      Example script to use with git bisect run
 Porting/bisect-runner.pl       Tool to be called by git bisect run
 Porting/bump-perl-version      bump the perl version in relevant files
+Porting/check-cpan-pollution   Check for commits that may wrongly touch CPAN distros
 Porting/check83.pl             Check whether we are 8.3-friendly
 Porting/checkansi.pl           Check source code for ANSI-C violations
 Porting/checkAUTHORS.pl                Check that the AUTHORS file is complete
 Porting/checkcfguse.pl         Check that config symbols are being used
 Porting/checkcfgvar.pl         Check that config scripts define all symbols
-Porting/check-cpan-pollution   Check for commits that may wrongly touch CPAN distros
 Porting/checkpodencoding.pl    Check POD encoding
 Porting/checkURL.pl            Check whether we have working URLs
 Porting/checkVERSION.pl                Check whether we have $VERSIONs
 Porting/cherrymaint            Command line tool for updating cherrymaint
 Porting/cmpVERSION.pl          Compare whether two trees have changed modules
+Porting/config.sh              Sample config.sh
 Porting/config_H               Sample config.h
 Porting/config_h.pl            Reorder config_h.SH after metaconfig
-Porting/config.sh              Sample config.sh
 Porting/core-cpan-diff         Compare core distros with their CPAN equivalents
 Porting/corecpan.pl            Reports outdated dual-lived modules
+Porting/corelist.pl            Generates data for Module::CoreList
 Porting/corelist-diff          Tool to produce corelist diffs
 Porting/corelist-perldelta.pl  Generates data perldelta from Module::CoreList
-Porting/corelist.pl            Generates data for Module::CoreList
 Porting/deparse-skips.txt      List of test files to ignore/skip for deparse tests.
 Porting/epigraphs.pod          the release epigraphs used over the years
 Porting/exec-bit.txt           List of files that get +x in release tarball
@@ -4892,12 +4959,12 @@ Porting/leakfinder.pl           Hacky script for finding memory leaks
 Porting/Maintainers            Program to pretty print info in Maintainers.pl
 Porting/Maintainers.pl         Information about maintainers
 Porting/Maintainers.pm         Library to pretty print info in Maintainers.pl
+Porting/make-rmg-checklist     Generates a checklist 4 the release manager
 Porting/make_dot_patch.pl      Make a .patch file from a git WD
-Porting/makemeta               Create the top-level META.yml
 Porting/make_modlib_cpan.pl    Generates the list of CPAN sites in perlmodlib
-Porting/makerel                        Release making utility
-Porting/make-rmg-checklist     Generates a checklist 4 the release manager
 Porting/make_snapshot.pl       Make a tgz snapshot of our tree with a .patch file in it
+Porting/makemeta               Create the top-level META.yml
+Porting/makerel                        Release making utility
 Porting/manicheck              Check against MANIFEST
 Porting/manisort               Sort the MANIFEST
 Porting/new-perldelta.pl       Generate a new perldelta
@@ -4916,13 +4983,13 @@ Porting/release_schedule.pod    Schedule for future releases
 Porting/rt_list_patches                A tool to help you apply patches from RT
 Porting/sort_perldiag.pl       Keep our diagnostics orderly
 Porting/sync-with-cpan         Sync with CPAN
-Porting/timecheck2.c           Test program for the 2038 fix
 Porting/timecheck.c            Test program for the 2038 fix
+Porting/timecheck2.c           Test program for the 2038 fix
 Porting/todo.pod               Perl things to do
 Porting/valgrindpp.pl          Summarize valgrind reports
 pp.c                           Push/Pop code
-pp_ctl.c                       Push/Pop code for control flow
 pp.h                           Push/Pop code defs
+pp_ctl.c                       Push/Pop code for control flow
 pp_hot.c                       Push/Pop code for heavily used opcodes
 pp_pack.c                      Push/Pop code for pack/unpack
 pp_proto.h                     C++ definitions for Push/Pop code
@@ -4974,10 +5041,11 @@ regcharclass.h                  Generated by regen/regcharclass.pl
 regcomp.c                      Regular expression compiler
 regcomp.h                      Private declarations for above
 regcomp.sym                    Data for regnodes.h
+regen.pl                       Run all scripts that (re)generate files
 regen/charset_translations.pl  Character set utilities
 regen/ebcdic.pl                        Generates ebcdic_tables.h
-regen/embed_lib.pl             Reads embed.fnc and regen/opcodes
 regen/embed.pl                 Produces {embed,embedvar,proto}.h
+regen/embed_lib.pl             Reads embed.fnc and regen/opcodes
 regen/feature.pl               Generates feature.pm
 regen/genpacksizetables.pl     Generate the size tables for pack/unpack
 regen/keywords.pl              Program to write keywords.h
@@ -4986,20 +5054,19 @@ regen/mg_vtable.pl              generate mg_vtable.h
 regen/miniperlmain.pl          generate miniperlmain.c
 regen/mk_invlists.pl           Generates charclass_invlists.h
 regen/mk_PL_charclass.pl       Populate the PL_charclass table
+regen/op_private               Definitions of bits in an OP's op_private field
 regen/opcode.pl                        Opcode header generator
 regen/opcodes                  Opcode data
-regen/op_private               Definitions of bits in an OP's op_private field
 regen/overload.pl              generate overload.h
-regen_perly.pl                 generate perly.{act,h,tab} from perly.y
-regen.pl                       Run all scripts that (re)generate files
 regen/reentr.pl                        Reentrant interfaces
-regen/regcharclass_multi_char_folds.pl Generate input for regcharclass.pl
 regen/regcharclass.pl          Generate regcharclass.h from inline data
+regen/regcharclass_multi_char_folds.pl Generate input for regcharclass.pl
 regen/regcomp.pl               Builder of regnodes.h
 regen/regen_lib.pl             Common file routines for generator scripts
 regen/uconfig_h.pl             generate uconfig.h (requires /bin/sh)
 regen/unicode_constants.pl     generate unicode_constants.h
 regen/warnings.pl              Program to write warnings.h and lib/warnings.pm
+regen_perly.pl                 generate perly.{act,h,tab} from perly.y
 regexec.c                      Regular expression evaluator
 regexp.h                       Public declarations for the above
 regnodes.h                     Description of nodes of RE engine
@@ -5025,10 +5092,10 @@ symbian/find_writeable_data.pl  Development utility
 symbian/hexdump.pl             Helper for sisify.pl updating
 symbian/install.cfg            Installation instructions
 symbian/makesis.pl             Installation file creator
-symbian/PerlAppAif.rss         Symbian app launcher code
 symbian/PerlApp.cpp            Symbian app launcher code
 symbian/PerlApp.h              Symbian app launcher header
 symbian/PerlApp.hrh            Symbian app launcher resource header
+symbian/PerlAppAif.rss         Symbian app launcher code
 symbian/PerlBase.cpp           Symbian Perl base class
 symbian/PerlBase.h             Symbian Perl base class header
 symbian/PerlBase.pod           Symbian Perl base class documentation
@@ -5050,16 +5117,15 @@ symbian/sanity.pl               Helper code for config.pl
 symbian/sdk.pl                 Helper code for config.pl
 symbian/sisify.pl              Packaging utility
 symbian/symbian_dll.cpp                The DLL stub for Symbian
-symbian/symbianish.h           Header for Symbian
 symbian/symbian_proto.h                Prototypes for Symbian
 symbian/symbian_stubs.c                Stub routines for Symbian
 symbian/symbian_stubs.h                Stub headers for Symbian
 symbian/symbian_utils.cpp      Helper routines for Symbian
+symbian/symbianish.h           Header for Symbian
 symbian/TODO                   Symbian things to do
 symbian/uid.pl                 Helper code for config.pl
 symbian/version.pl             Helper code for config.pl
 symbian/xsbuild.pl             Building extensions
-taint.c                                Tainting code
 t/base/cond.t                  See if conditionals work
 t/base/if.t                    See if if works
 t/base/lex.t                   See if lexical items work
@@ -5091,13 +5157,13 @@ t/comp/fold.t                   See if constant folding works
 t/comp/form_scope.t            See if format scoping works
 t/comp/hints.aux               Auxiliary file for %^H test
 t/comp/hints.t                 See if %^H works
-t/comp/line_debug_0.aux                Auxiliary file for @{"_<$file"} test
 t/comp/line_debug.t            See if @{"_<$file"} works
+t/comp/line_debug_0.aux                Auxiliary file for @{"_<$file"} test
 t/comp/multiline.t             See if multiline strings work
 t/comp/opsubs.t                        See if q() etc. are not parsed as functions
 t/comp/our.t                   Tests for our declaration
-t/comp/package_block.t         See if package block syntax works
 t/comp/package.t               See if packages work
+t/comp/package_block.t         See if package block syntax works
 t/comp/parser.t                        See if the parser works in edge cases
 t/comp/proto.t                 See if function prototypes work
 t/comp/redef.t                 See if we get correct warnings on redefined subs
@@ -5107,12 +5173,7 @@ t/comp/term.t                    See if more terms work
 t/comp/uproto.t                        See if the _ prototype works
 t/comp/use.t                   See if pragmata work
 t/comp/utf.t                   See if UTFs work
-TestInit.pm                    Preamble library for tests
 t/harness                      Finer diagnostics from test suite
-thread.h                       Threading header
-time64.c                       64 bit clean time.h (code)
-time64_config.h                        64 bit clean time.h (configuration)
-time64.h                       64 bit clean time.h (header)
 t/io/argv.t                    See if ARGV stuff works
 t/io/binmode.t                 See if binmode() works
 t/io/bom.t                     See if scripts can start with a byte order mark
@@ -5122,10 +5183,10 @@ t/io/crlf_through.t             See if pipe passes data intact with :crlf
 t/io/data.t                    See if DATA works
 t/io/defout.t                  See if PL_defoutgv works
 t/io/dup.t                     See if >& works right
-t/io/eintr_print.t             Test that print is not returning EINTR
 t/io/eintr.t                   See if code called during EINTR is safe
-t/io/errnosig.t                        Test case for restoration $! when leaving signal handlers
+t/io/eintr_print.t             Test that print is not returning EINTR
 t/io/errno.t                   See if $! is correctly set
+t/io/errnosig.t                        Test case for restoration $! when leaving signal handlers
 t/io/fflush.t                  See if auto-flush on fork/exec/system/qx works
 t/io/fs.t                      See if directory manipulations work
 t/io/inplace.t                 See if inplace editing works
@@ -5133,19 +5194,19 @@ t/io/iofile.t                   See if we can load IO::File on demand
 t/io/iprefix.t                 See if inplace editing works with prefixes
 t/io/layers.t                  See if PerlIO layers work
 t/io/nargv.t                   See if nested ARGV stuff works
-t/io/openpid.t                 See if open works for subprocesses
 t/io/open.t                    See if open works
+t/io/openpid.t                 See if open works for subprocesses
+t/io/perlio.t                  See if PerlIO works
 t/io/perlio_fail.t             See if bad layers fail
 t/io/perlio_leaks.t            See if PerlIO layers are leaking
 t/io/perlio_open.t             See if certain special forms of open work
-t/io/perlio.t                  See if PerlIO works
 t/io/pipe.t                    See if secure pipes work
 t/io/print.t                   See if print commands work
 t/io/pvbm.t                    See if PVBMs break IO commands
 t/io/read.t                    See if read works
 t/io/say.t                     See if say works
-t/io/semctl.t                  See if SysV semaphore semctl works
 t/io/sem.t                     See if SysV semaphores work
+t/io/semctl.t                  See if SysV semaphore semctl works
 t/io/shm.t                     See if SysV shared memory works
 t/io/socket.t                  See if socket functions work
 t/io/tell.t                    See if file seeking works
@@ -5157,23 +5218,23 @@ t/lib/Cname.pm                  Test charnames in regexes (op/pat.t)
 t/lib/common.pl                        Helper for lib/{warnings,feature}.t
 t/lib/commonsense.t            See if configuration meets basic needs
 t/lib/Count.pm                 Helper for t/op/method.t
+t/lib/croak.t                  Test calls to Perl_croak() in the C source.
 t/lib/croak/mg                 Test croak calls from mg.c
 t/lib/croak/op                 Test croak calls from op.c
 t/lib/croak/pp                 Test croak calls from pp.c
 t/lib/croak/pp_ctl             Test croak calls from pp_ctl.c
 t/lib/croak/pp_hot             Test croak calls from pp_hot.c
 t/lib/croak/pp_sys             Test croak calls from pp_sys.c
-t/lib/croak.t                  Test calls to Perl_croak() in the C source.
 t/lib/croak/toke               Test croak calls from toke.c
 t/lib/cygwin.t                 Builtin cygwin function tests
 t/lib/dbmt_common.pl           Common functionality for ?DBM_File tests
+t/lib/deprecate.t              Test deprecate.pm
 t/lib/deprecate/Deprecated.pm  Deprecated module to test deprecate.pm
 t/lib/deprecate/Optionally.pm  Optionally deprecated module to test deprecate.pm
-t/lib/deprecate.t              Test deprecate.pm
 t/lib/Devel/nodb.pm            Module for t/run/switchd.t
+t/lib/Devel/switchd.pm         Module for t/run/switchd.t
 t/lib/Devel/switchd_empty.pm   Module for t/run/switchd.t
 t/lib/Devel/switchd_goto.pm    Module for t/run/switchd.t
-t/lib/Devel/switchd.pm         Module for t/run/switchd.t
 t/lib/feature/bundle           Tests for feature bundles
 t/lib/feature/implicit         Tests for implicit loading of feature.pm
 t/lib/feature/nonesuch         Tests for enabling/disabling nonexistent feature
@@ -5195,8 +5256,8 @@ t/lib/strict/subs         Tests of "use strict 'subs'" for strict.t
 t/lib/strict/vars              Tests of "use strict 'vars'" for strict.t
 t/lib/subs/subs                        Tests of "use subs"
 t/lib/test_require.pm          A test file for t/op/inccode.t
-t/lib/test_use_14937.pm                A test pragma for t/comp/use.t
 t/lib/test_use.pm              A test pragma for t/comp/use.t
+t/lib/test_use_14937.pm                A test pragma for t/comp/use.t
 t/lib/universal.t              Tests for functions in universal.c
 t/lib/warnings/1global         Tests of global warnings for warnings.t
 t/lib/warnings/2use            Tests for "use warnings" for warnings.t
@@ -5234,6 +5295,7 @@ t/lib/warnings/universal  Tests for universal.c for warnings.t
 t/lib/warnings/utf8            Tests for utf8.c for warnings.t
 t/lib/warnings/util            Tests for util.c for warnings.t
 t/loc_tools.pl                 Common functions for finding platform's locales
+t/mro/basic.t                  mro tests
 t/mro/basic_01_c3.t            mro tests
 t/mro/basic_01_c3_utf8.t       utf8 mro tests
 t/mro/basic_01_dfs.t           mro tests
@@ -5254,7 +5316,6 @@ t/mro/basic_05_c3.t               mro tests
 t/mro/basic_05_c3_utf8.t       utf8 mro tests
 t/mro/basic_05_dfs.t           mro tests
 t/mro/basic_05_dfs_utf8.t      utf8 mro tests
-t/mro/basic.t                  mro tests
 t/mro/basic_utf8.t             utf8 mro tests
 t/mro/c3_with_overload.t       mro tests
 t/mro/c3_with_overload_utf8.t  utf8 mro tests
@@ -5307,7 +5368,6 @@ t/mro/vulcan_c3.t         mro tests
 t/mro/vulcan_c3_utf8.t         utf8 mro tests
 t/mro/vulcan_dfs.t             mro tests
 t/mro/vulcan_dfs_utf8.t                utf8 mro tests
-toke.c                         The tokener
 t/op/64bitint.t                        See if 64 bit integers work
 t/op/aassign.t                 test list assign
 t/op/alarm.t                   See if alarm works
@@ -5315,19 +5375,14 @@ t/op/anonconst.t                See if :const works
 t/op/anonsub.t                 See if anonymous subroutines work
 t/op/append.t                  See if . works
 t/op/args.t                    See if operations on @_ work
-t/op/array_base.t              Tests for the remnant of $[
 t/op/array.t                   See if array operations work
+t/op/array_base.t              Tests for the remnant of $[
 t/op/assignwarn.t              See if OP= operators warn correctly for undef targets
 t/op/attrhand.t                        See if attribute handlers work
 t/op/attrproto.t               See if the prototype attribute works
 t/op/attrs.t                   See if attributes on declarations work
 t/op/auto.t                    See if autoincrement et all work
 t/op/avhv.t                    See if pseudo-hashes work
-t/opbasic/arith.t                      See if arithmetic works
-t/opbasic/cmp.t                        See if the various string and numeric compare work
-t/opbasic/concat.t                     See if string concatenation works
-t/opbasic/magic_phase.t                See if ${^GLOBAL_PHASE} works
-t/opbasic/qq.t                 See if qq works
 t/op/bless.t                   See if bless works
 t/op/blocks.t                  See if BEGIN and friends work
 t/op/bop.t                     See if bitops work
@@ -5349,32 +5404,33 @@ t/op/cproto.t                   Check builtin prototypes
 t/op/crypt.t                   See if crypt works
 t/op/current_sub.t             __SUB__ tests
 t/op/dbm.t                     See if dbmopen/dbmclose work
+t/op/decl-refs.t               See if my \$foo works
 t/op/defined.t                 See if defined() edge cases work
 t/op/defins.t                  See if auto-insert of defined() works
 t/op/delete.t                  See if delete works
+t/op/die.t                     See if die works
 t/op/die_except.t              See if die/eval avoids $@ clobberage
 t/op/die_exit.t                        See if die and exit status interaction works
 t/op/die_keeperr.t             See if G_KEEPERR works for destructors
-t/op/die.t                     See if die works
 t/op/die_unwind.t              Check die/eval early-$@ backcompat hack
-t/op/dor.t                     See if defined-or (//) works
 t/op/do.t                      See if subroutines work
+t/op/dor.t                     See if defined-or (//) works
 t/op/dump.t                    See if dump works.
-t/op/each_array.t              See if array iterators work
 t/op/each.t                    See if hash iterators work
-t/op/evalbytes.t               See if evalbytes operator works
+t/op/each_array.t              See if array iterators work
 t/op/eval.t                    See if eval operator works
+t/op/evalbytes.t               See if evalbytes operator works
 t/op/exec.t                    See if exec, system and qx work
 t/op/exists_sub.t              See if exists(&sub) works
 t/op/exp.t                     See if math functions work
 t/op/fh.t                      See if filehandles work
 t/op/filehandle.t              Tests for http://rt.perl.org/rt3/Ticket/Display.html?id=72586
-t/op/filetest_stack_ok.t       See if file tests leave their argument on the stack
 t/op/filetest.t                        See if file tests work
+t/op/filetest_stack_ok.t       See if file tests leave their argument on the stack
 t/op/filetest_t.t              See if -t file test works
 t/op/flip.t                    See if range operator works
-t/op/fork.t                    See if fork works
 t/op/for.t                     See if for loops work
+t/op/fork.t                    See if fork works
 t/op/fresh_perl_utf8.t         UTF8 tests for pads and gvs
 t/op/getpid.t                  See if $$ and getppid work with threads
 t/op/getppid.t                 See if getppid works
@@ -5386,57 +5442,57 @@ t/op/grent.t                    See if getgr*() functions work
 t/op/grep.t                    See if grep() and map() work
 t/op/groups.t                  See if $( works
 t/op/gv.t                      See if typeglobs work
-t/op/hashassign.t              See if hash assignments work
-t/op/hash-rt85026.t            See if hash iteration/deletion works
 t/op/hash.t                    See if the complexity attackers are repelled
+t/op/hash-rt85026.t            See if hash iteration/deletion works
+t/op/hashassign.t              See if hash assignments work
 t/op/hashwarn.t                        See if warnings for bad hash assignments work
 t/op/heredoc.t                 See if heredoc edge and corner cases work
 t/op/hexfp.t                   See if hexadecimal float literals work
+t/op/inc.t                     See if inc/dec of integers near 32 bit limit work
 t/op/inccode.t                 See if coderefs work in @INC
 t/op/inccode-tie.t             See if tie to @INC works
 t/op/incfilter.t               See if the source filters in coderef-in-@INC work
-t/op/inc.t                     See if inc/dec of integers near 32 bit limit work
 t/op/index.t                   See if index works
 t/op/index_thr.t               See if index works in another thread
 t/op/infnan.t                  See if inf/nan work
 t/op/int.t                     See if int works
 t/op/join.t                    See if join works
-t/op/kill0_child               Process tree script that is kill()ed
 t/op/kill0.t                   See if kill works
+t/op/kill0_child               Process tree script that is kill()ed
 t/op/kvaslice.t                        See if index/value array slices work
 t/op/kvhslice.t                        See if key/value hash slices work
 t/op/lc.t                      See if lc, uc, lcfirst, ucfirst, quotemeta work
 t/op/leaky-magic.t             See whether vars' magic leaks into packages
 t/op/length.t                  See if length works
+t/op/lex.t                     Tests too complex for t/base/lex.t
 t/op/lex_assign.t              See if ops involving lexicals or pad temps work
 t/op/lexsub.t                  See if lexical subroutines work
-t/op/lex.t                     Tests too complex for t/base/lex.t
 t/op/lfs.t                     See if large files work for perlio
 t/op/list.t                    See if lists and list slices work
-t/op/localref.t                        See if local ${deref} works
 t/op/local.t                   See if local works
+t/op/localref.t                        See if local ${deref} works
 t/op/lock.t                    Tests for lock args & retval (no threads)
 t/op/loopctl.t                 See if next/last/redo work
 t/op/lop.t                     See if logical operators work
 t/op/lvref.t                   See if aliasing via references works
-t/op/magic-27839.t             Test for #27839, skipped for minitest
 t/op/magic.t                   See if magic variables work
+t/op/magic-27839.t             Test for #27839, skipped for minitest
 t/op/method.t                  See if method calls work
 t/op/mkdir.t                   See if mkdir works
 t/op/multideref.t              See if "$a[0]{foo}[$i]{$k}" etc works
-t/op/mydef.t                   See if "my $_" works
-t/op/my_stash.t                        See if my Package works
 t/op/my.t                      See if lexical scoping works
+t/op/my_stash.t                        See if my Package works
+t/op/mydef.t                   See if "my $_" works
 t/op/negate.t                  See if unary minus works
 t/op/not.t                     See if not works
 t/op/numconvert.t              See if accessing fields does not change numeric values
 t/op/oct.t                     See if oct and hex work
-t/op/ord.t                     See if ord works
 t/op/or.t                      See if || works in weird situations
+t/op/ord.t                     See if ord works
 t/op/overload_integer.t                See if overload::constant for integer works after "use".
 t/op/override.t                        See if operator overriding works
-t/op/packagev.t                        See if package VERSION work
 t/op/pack.t                    See if pack and unpack work
+t/op/packagev.t                        See if package VERSION work
 t/op/pos.t                     See if pos works
 t/op/postfixderef.t            See if ->$* ->@[ et al work
 t/op/pow.t                     See if ** works
@@ -5448,9 +5504,9 @@ t/op/qr.t                 See if qr works
 t/op/quotemeta.t               See if quotemeta works
 t/op/rand.t                    See if rand works
 t/op/range.t                   See if .. works
+t/op/read.t                    See if read() works
 t/op/readdir.t                 See if readdir() works
 t/op/readline.t                        See if <> / readline / rcatline work
-t/op/read.t                    See if read() works
 t/op/recurse.t                 See if deep recursion works
 t/op/ref.t                     See if refs and objects work
 t/op/repeat.t                  See if x operator works
@@ -5473,34 +5529,34 @@ t/op/sort.t                     See if sort works
 t/op/splice.t                  See if splice works
 t/op/split.t                   See if split works
 t/op/split_unicode.t           Test split /\s/ and Unicode
-t/op/sprintf2.t                        See if sprintf works
 t/op/sprintf.t                 See if sprintf works
+t/op/sprintf2.t                        See if sprintf works
 t/op/srand.t                   See if srand works
 t/op/sselect.t                 See if 4 argument select works
 t/op/stash.t                   See if %:: stashes work
-t/op/state.t                   See if state variables work
 t/op/stat.t                    See if stat works
+t/op/state.t                   See if state variables work
 t/op/study.t                   See if study works
 t/op/studytied.t               See if study works with tied scalars
+t/op/sub.t                     See if subroutines work
 t/op/sub_lval.t                        See if lvalue subroutines work
 t/op/substr.t                  See if substr works
 t/op/substr_thr.t              See if substr works in another thread
-t/op/sub.t                     See if subroutines work
 t/op/svleak.pl                 Test file for svleak.t
 t/op/svleak.t                  See if stuff leaks SVs
 t/op/switch.t                  See if switches (given/when) work
 t/op/symbolcache.t             See if undef/delete works on stashes with functions
 t/op/sysio.t                   See if sysread and syswrite work
 t/op/taint.t                   See if tainting works
-t/op/threads_create.pl         Ancillary file for t/op/threads.t
-t/op/threads-dirh.t            Test interaction of threads and dir handles
 t/op/threads.t                 Misc. tests for perl features with threads
-t/op/tiearray.t                        See if tie for arrays works
+t/op/threads-dirh.t            Test interaction of threads and dir handles
+t/op/threads_create.pl         Ancillary file for t/op/threads.t
+t/op/tie.t                     See if tie/untie functions work
 t/op/tie_fetch_count.t         See if FETCH is only called once on tied variables
+t/op/tiearray.t                        See if tie for arrays works
 t/op/tiehandle.t               See if tie for handles works
-t/op/tie.t                     See if tie/untie functions work
-t/op/time_loop.t               Test that very large values don't hang gmtime and localtime.
 t/op/time.t                    See if time functions work
+t/op/time_loop.t               Test that very large values don't hang gmtime and localtime.
 t/op/tr.t                      See if tr works
 t/op/undef.t                   See if undef works
 t/op/universal.t               See if UNIVERSAL class works
@@ -5520,6 +5576,11 @@ t/op/warn.t                      See if warn works
 t/op/while.t                   See if while loops work
 t/op/write.t                   See if write works (formats work)
 t/op/yadayada.t                        See if ... works
+t/opbasic/arith.t                      See if arithmetic works
+t/opbasic/cmp.t                        See if the various string and numeric compare work
+t/opbasic/concat.t                     See if string concatenation works
+t/opbasic/magic_phase.t                See if ${^GLOBAL_PHASE} works
+t/opbasic/qq.t                 See if qq works
 t/perf/benchmarks              snippets of benchmarking/profiling code
 t/perf/benchmarks.t            test t/perf/benchmarks syntax
 t/perf/opcount.t               See if optimised subs have the right op counts
@@ -5551,19 +5612,20 @@ t/porting/maintainers.t         Test that Porting/Maintainers.pl is up to date
 t/porting/manifest.t           Test that this MANIFEST file is well formed
 t/porting/pending-author.t     Check if any pending commit would break tests
 t/porting/perlfunc.t           Test that Functions_pm.PL can parse perlfunc.pod
-t/porting/podcheck.t           Test the POD of shipped modules is well formed
 t/porting/pod_rules.t          Check that various pod lists are consistent
-t/porting/readme.t             Check that all files in Porting/ are mentioned in Porting/README.pod
+t/porting/podcheck.t           Test the POD of shipped modules is well formed
 t/porting/re_context.t         Check assumptions made by save_re_context()
+t/porting/readme.t             Check that all files in Porting/ are mentioned in Porting/README.pod
 t/porting/regen.t              Check that regen.pl doesn't need running
 t/porting/ss_dup.t             Check that sv.c:ss_dup handle everything
 t/porting/test_bootstrap.t     Test that the instructions for test bootstrapping aren't accidentally overlooked.
 t/porting/utils.t              Check that utility scripts still compile
-t/README                       Instructions for regression tests
+t/re/anyof.t                   See if bracketed char classes [...] compile properly
 t/re/charset.t                 See if regex modifiers like /d, /u work properly
 t/re/fold_grind.t              See if case folding works properly
 t/re/no_utf8_pm.t              Verify utf8.pm doesn't get loaded unless required
 t/re/overload.t                Test against string corruption in pattern matches on overloaded objects
+t/re/pat.t                     See if esoteric patterns work
 t/re/pat_advanced.t            See if advanced esoteric patterns work
 t/re/pat_advanced_thr.t                See if advanced esoteric patterns work in another thread
 t/re/pat_psycho.t              See if insane esoteric and slow patterns work
@@ -5574,30 +5636,19 @@ t/re/pat_rt_report.t            See if esoteric patterns from rt reports work
 t/re/pat_rt_report_thr.t       See if esoteric patterns from rt reports work in another thread
 t/re/pat_special_cc.t          See if special charclasses (\s \w \d) work the same as (\s and [\s])
 t/re/pat_special_cc_thr.t      See if special charclasses (\s \w \d) work the same as (\s and [\s]) under threads
-t/re/pat.t                     See if esoteric patterns work
 t/re/pat_thr.t                 See if esoteric patterns work in another thread
 t/re/pos.t                     Ensure pos() gets set properly after pre-match failures in pp_match
+t/re/qr.t                      See if qr works
 t/re/qr-72922.t                        Test for bug #72922
 t/re/qr_gc.t                   See if qr doesn't leak
 t/re/qrstack.t                 See if qr expands the stack properly
-t/re/qr.t                      See if qr works
+t/re/re_tests                  Regular expressions for regexp.t
 t/re/recompile.t               See if pattern caching/recompilation works
 t/re/reg_60508.t               See if bug #60508 is fixed
 t/re/reg_email.t               See if regex recursion works by parsing email addresses
 t/re/reg_email_thr.t           See if regex recursion works by parsing email addresses in another thread
-t/re/reg_eval_scope.t          Test scoping issues with (?{ }) and (??{ })
 t/re/reg_eval.t                        Test again regexp state corruption in (?{ }) and (??{ })
-t/re/regexp_noamp.t            See if regular expressions work with optimizations
-t/re/regexp_notrie.t           See if regular expressions work without trie optimisation
-t/re/regexp_qr_embed.t         See if regular expressions work with embedded qr//
-t/re/regexp_qr_embed_thr.t     See if regular expressions work with embedded qr// in another thread
-t/re/regexp_qr.t               See if regular expressions work as qr//
-t/re/regexp.t                  See if regular expressions work
-t/re/regexp_trielist.t         See if regular expressions work with trie optimisation
-t/re/regexp_unicode_prop.t     See if unicode properties work in regular expressions as expected
-t/re/regexp_unicode_prop_thr.t See if unicode properties work in regular expressions as expected under threads
-t/re/regex_sets_compat.t       Test (?[ ]) is compatible with old [ ]
-t/re/regex_sets.t              Test (?[ ])
+t/re/reg_eval_scope.t          Test scoping issues with (?{ }) and (??{ })
 t/re/reg_fold.t                        See if case folding works properly
 t/re/reg_mesg.t                        See if one can get regular expression errors
 t/re/reg_namedcapture.t                Make sure glob assignment doesn't break named capture
@@ -5605,16 +5656,27 @@ t/re/reg_nc_tie.t               Test the tied methods of Tie::Hash::NamedCapture
 t/re/reg_nocapture.t           Test the /n flag for regexps
 t/re/reg_pmod.t                        See if regexp /p modifier works as expected
 t/re/reg_posixcc.t             See if posix character classes behave consistently
-t/re/re_tests                  Regular expressions for regexp.t
+t/re/regex_sets.t              Test (?[ ])
+t/re/regex_sets_compat.t       Test (?[ ]) is compatible with old [ ]
+t/re/regexp.t                  See if regular expressions work
+t/re/regexp_noamp.t            See if regular expressions work with optimizations
+t/re/regexp_notrie.t           See if regular expressions work without trie optimisation
+t/re/regexp_qr.t               See if regular expressions work as qr//
+t/re/regexp_qr_embed.t         See if regular expressions work with embedded qr//
+t/re/regexp_qr_embed_thr.t     See if regular expressions work with embedded qr// in another thread
+t/re/regexp_trielist.t         See if regular expressions work with trie optimisation
+t/re/regexp_unicode_prop.t     See if unicode properties work in regular expressions as expected
+t/re/regexp_unicode_prop_thr.t See if unicode properties work in regular expressions as expected under threads
 t/re/rt122747.t                        Test rt122747 assert faile (requires DEBUGGING)
 t/re/rxcode.t                  See if /(?{ code })/ works
 t/re/speed.t                   See if optimisations are keeping things fast
 t/re/speed_thr.t               ditto under threads
-t/re/subst_amp.t               See if $&-related substitution works
 t/re/subst.t                   See if substitution works
-t/re/substT.t                  See if substitution works with -T
+t/re/subst_amp.t               See if $&-related substitution works
 t/re/subst_wamp.t              See if substitution works with $& present
+t/re/substT.t                  See if substitution works with -T
 t/re/uniprops.t                        Test unicode \p{} regex constructs
+t/README                       Instructions for regression tests
 t/run/cloexec.t                        Test close-on-exec.
 t/run/dtrace.pl                        For dtrace.t
 t/run/dtrace.t                 Test for DTrace probes
@@ -5630,26 +5692,26 @@ t/run/script.t                  See if script invocation works
 t/run/switch0.t                        Test the -0 switch
 t/run/switcha.t                        Test the -a switch
 t/run/switchC.t                        Test the -C switch
-t/run/switchd-78586.t          See whether bug 78586 is fixed
 t/run/switchd.t                        Test the -d switch
+t/run/switchd-78586.t          See whether bug 78586 is fixed
 t/run/switchDx.t               Test the -D switch
 t/run/switches.t               Tests for the other switches (-0, -l, -c, -s, -M, -m, -V, -v, -h, -z, -i)
+t/run/switchF.t                        Test the -F switch
 t/run/switchF1.t               Pathological tests for the -F switch
 t/run/switchF2.t               Pathological tests for the -F switch
-t/run/switchF.t                        Test the -F switch
 t/run/switchI.t                        Test the -I switch
 t/run/switchM.t                        Test the -M switch
 t/run/switchn.t                        Test the -n switch
 t/run/switchp.t                        Test the -p switch
 t/run/switcht.t                        Test the -t switch
-t/run/switchx2.aux             Data for switchx.t
-t/run/switchx3.aux             Data for switchx.t
 t/run/switchx.aux              Data for switchx.t
 t/run/switchx.t                        Test the -x switch
+t/run/switchx2.aux             Data for switchx.t
+t/run/switchx3.aux             Data for switchx.t
 t/TEST                         The regression tester
 t/test.pl                      Simple testing library
-t/test_pl/can_isa_ok.t         Tests for the simple testing library
 t/test_pl/_num_to_alpha.t      Tests for the simple testing library 
+t/test_pl/can_isa_ok.t         Tests for the simple testing library
 t/test_pl/plan_skip_all.t      Tests for the simple testing library
 t/test_pl/tempfile.t           Tests for the simple testing library
 t/thread_it.pl                 Run regression tests in a new thread
@@ -5659,7 +5721,6 @@ t/uni/cache.t                     See if Unicode swash caching works
 t/uni/caller.t                 See if Unicode doesn't get mangled in caller()
 t/uni/case.pl                  See if Unicode casing works
 t/uni/chomp.t                  See if Unicode chomp works
-t/uni/chr.t                    See if Unicode chr works
 t/uni/class.t                  See if Unicode classes work (\p)
 t/uni/eval.t                   See if Unicode hints don't affect eval()
 t/uni/fold.t                   See if Unicode folding works
@@ -5682,9 +5743,6 @@ t/uni/sprintf.t                   See if Unicode sprintf works
 t/uni/stash.t                  See if Unicode stashes work
 t/uni/tie.t                    See if Unicode tie works
 t/uni/title.t                  See if Unicode casing works
-t/uni/tr_7jis.t                        See if Unicode tr/// in 7jis works
-t/uni/tr_eucjp.t               See if Unicode tr/// in eucjp works
-t/uni/tr_sjis.t                        See if Unicode tr/// in sjis works
 t/uni/tr_utf8.t                        See if Unicode tr/// in utf8 works
 t/uni/universal.t              See if Unicode in calls to UNIVERSAL works
 t/uni/upper.t                  See if Unicode casing works
@@ -5697,9 +5755,16 @@ t/win32/runenv.t         Test if Win* perl honors its env variables
 t/win32/signal.t               Test Win32 signal emulation
 t/win32/system.t               See if system works in Win*
 t/win32/system_tests           Test runner for system.t
-uconfig64.sh                   Configuration script for microperl for LP64
+taint.c                                Tainting code
+TestInit.pm                    Preamble library for tests
+thread.h                       Threading header
+time64.c                       64 bit clean time.h (code)
+time64.h                       64 bit clean time.h (header)
+time64_config.h                        64 bit clean time.h (configuration)
+toke.c                         The tokener
 uconfig.h                      Configuration header for microperl
 uconfig.sh                     Configuration script for microperl
+uconfig64.sh                   Configuration script for microperl for LP64
 unicode_constants.h            compile-time macros for Unicode code points
 universal.c                    The default UNIVERSAL package methods
 unixish.h                      Defines that are assumed on Unix
@@ -5708,6 +5773,7 @@ utf8.h                            Unicode header
 utfebcdic.h                    Unicode on EBCDIC (UTF-EBCDIC, tr16) header
 util.c                         Utility routines
 util.h                         Dummy header
+utils.lst                      Lists utilities bundled with Perl
 utils/c2ph.PL                  program to translate dbx stabs to perl
 utils/corelist.PL              Module::CoreList
 utils/cpan.PL                  easily interact with CPAN from the command line
@@ -5718,7 +5784,6 @@ utils/h2xs.PL                     Program to make .xs files from C header files
 utils/instmodsh.PL             Give information about installed extensions
 utils/json_pp.PL               JSON::PP command line utility
 utils/libnetcfg.PL             libnet
-utils.lst                      Lists utilities bundled with Perl
 utils/Makefile.PL              Extract the utility scripts
 utils/perlbug.PL               A simple tool to submit a bug report
 utils/perldoc.PL               A simple tool to find & display perl's documentation
@@ -5727,16 +5792,16 @@ utils/piconv.PL                 iconv(1), reinvented in perl
 utils/pl2pm.PL                 A pl to pm translator
 utils/pod2html.PL              Translator to turn pod into HTML
 utils/prove.PL                 The prove harness utility
+utils/ptar.PL                  The ptar utility
 utils/ptardiff.PL              The ptardiff utility
 utils/ptargrep.PL              The ptargrep utility
-utils/ptar.PL                  The ptar utility
 utils/shasum.PL                        filter for computing SHA digests (analogous to md5sum)
 utils/splain.PL                        Stand-alone version of diagnostics.pm
 utils/xsubpp.PL                        External subroutine preprocessor
 utils/zipdetails.PL                    display the internal structure of zip files
 vms/descrip_mms.template       Template MM[SK] description file for build
-vms/genopt.com                 hack to write options files in case of broken makes
 vms/gen_shrfls.pl              generate options files and glue for shareable image
+vms/genopt.com                 hack to write options files in case of broken makes
 vms/make_command.com           record MM[SK] command used to build Perl
 vms/mms2make.pl                        convert descrip.mms to make syntax
 vms/munchconfig.c              performs shell $var substitution for VMS
@@ -5761,20 +5826,20 @@ win32/bin/pl2bat.pl             wrap perl scripts into batch files
 win32/bin/runperl.pl           run perl script via batch file namesake
 win32/bin/search.pl            Win32 port
 win32/ce-helpers/cecopy-lib.pl WinCE port
-win32/ce-helpers/compile-all.bat       WinCE port
-win32/ce-helpers/compile.bat   WinCE port
 win32/ce-helpers/comp.pl       WinCE port
+win32/ce-helpers/compile.bat   WinCE port
+win32/ce-helpers/compile-all.bat       WinCE port
 win32/ce-helpers/makedist.pl   WinCE port
 win32/ce-helpers/registry.bat  WinCE port
 win32/ce-helpers/sdsdkenv.bat  WinCE port
 win32/config.ce                        WinCE port
 win32/config.gc                        Win32 base line config.sh (MinGW build)
+win32/config.vc                        Win32 base line config.sh (Visual C++ build)
 win32/config_H.ce              WinCE port
 win32/config_H.gc              Win32 config header (MinGW build)
 win32/config_h.PL              Perl code to convert Win32 config.sh to config.h
 win32/config_H.vc              Win32 config header (Visual C++ build)
 win32/config_sh.PL             Perl code to update Win32 config.sh from Makefile
-win32/config.vc                        Win32 base line config.sh (Visual C++ build)
 win32/create_perllibst_h.pl    creates perllibst.h file for inclusion from perllib.c
 win32/distclean.bat            Remove _ALL_ files not listed here in MANIFEST
 win32/fcrypt.c                 crypt() implementation
@@ -5789,6 +5854,7 @@ win32/list_static_libs.pl prints libraries for static linking
 win32/Makefile                 Win32 makefile for NMAKE (Visual C++ build)
 win32/Makefile.ce              WinCE port
 win32/makefile.mk              Win32 makefile for DMAKE (BC++, VC++ builds)
+win32/perl.rc                  WinCE port
 win32/perlexe.ico              perlexe.ico image file
 win32/perlexe.manifest         Assembly manifest file
 win32/perlexe.rc               associated perl binary with icon
@@ -5796,14 +5862,13 @@ win32/perlglob.c                Win32 port
 win32/perlhost.h               Perl "host" implementation
 win32/perllib.c                        Win32 port
 win32/perlmaince.c             WinCE port
-win32/perl.rc                  WinCE port
 win32/pod.mak                  Win32 port
 win32/runperl.c                        Win32 port
 win32/vdir.h                   Perl "host" virtual directory manager for CE
 win32/vmem.h                   Perl "host" memory manager for CE
 win32/win32.c                  Win32 port
-win32/win32ceio.c              Win32/WinCE PerlIO layer support
 win32/win32.h                  Win32 port
+win32/win32ceio.c              Win32/WinCE PerlIO layer support
 win32/win32io.c                        Win32 PerlIO layer support
 win32/win32iop.h               Win32 port
 win32/win32iop-o.h             WinCE port
index 44ff645..4c2497a 100644 (file)
--- a/META.json
+++ b/META.json
          "url" : "http://perl5.git.perl.org/"
       }
    },
-   "version" : "5.025002",
+   "version" : "5.025003",
    "x_serialization_backend" : "JSON::PP version 2.27400"
 }
index 7eecc96..9c8ad97 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -111,5 +111,5 @@ resources:
   homepage: http://www.perl.org/
   license: http://dev.perl.org/licenses/
   repository: http://perl5.git.perl.org/
-version: '5.025002'
+version: '5.025003'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
index 5c28589..84d06ca 100755 (executable)
@@ -522,7 +522,7 @@ miniperl_objs = $(miniperl_objs_nodt) $(DTRACE_MINI_O)
 perllib_objs  = $(perllib_objs_nodt) $(DTRACE_PERLLIB_O)
 perlmain_objs = perlmain$(OBJ_EXT) $(DTRACE_MAIN_O)
 
-perltoc_pod_prereqs = extra.pods pod/perl5252delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
+perltoc_pod_prereqs = extra.pods pod/perl5253delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod
 generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs)
 generated_headers = uudmap.h bitcount.h mg_data.h
 
@@ -1085,9 +1085,9 @@ pod/perlintern.pod: $(MINIPERL_EXE) autodoc.pl embed.fnc
 pod/perlmodlib.pod: $(MINIPERL_EXE) pod/perlmodlib.PL MANIFEST
        $(MINIPERL) pod/perlmodlib.PL -q
 
-pod/perl5252delta.pod: pod/perldelta.pod
-       $(RMS) pod/perl5252delta.pod
-       $(LNS) perldelta.pod pod/perl5252delta.pod
+pod/perl5253delta.pod: pod/perldelta.pod
+       $(RMS) pod/perl5253delta.pod
+       $(LNS) perldelta.pod pod/perl5253delta.pod
 
 extra.pods: $(MINIPERL_EXE)
        -@test ! -f extra.pods || rm -f `cat extra.pods`
index e0f0eed..1d7ee3a 100644 (file)
@@ -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.25.2 for NetWare"
+MODULE_DESC     = "Perl 5.25.3 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.25.2
+INST_VER       = \5.25.3
 
 #
 # Comment this out if you DON'T want your perl installation to have
index e2f4d96..3846db8 100644 (file)
  *     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.25.2\\lib\\NetWare-x86-multi-thread"              /**/
+#define ARCHLIB "c:\\perl\\5.25.3\\lib\\NetWare-x86-multi-thread"              /**/
 /*#define ARCHLIB_EXP ""       /**/
 
 /* ARCHNAME:
  *     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.25.2\\bin\\NetWare-x86-multi-thread"  /**/
-#define BIN_EXP "c:\\perl\\5.25.2\\bin\\NetWare-x86-multi-thread"      /**/
+#define BIN "c:\\perl\\5.25.3\\bin\\NetWare-x86-multi-thread"  /**/
+#define BIN_EXP "c:\\perl\\5.25.3\\bin\\NetWare-x86-multi-thread"      /**/
 
 /* BYTEORDER:
  *     This symbol holds the hexadecimal constant defined in byteorder,
  *     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.25.2\\lib\\NetWare-x86-multi-thread"               /**/
+#define SITEARCH "c:\\perl\\site\\5.25.3\\lib\\NetWare-x86-multi-thread"               /**/
 /*#define SITEARCH_EXP ""      /**/
 
 /* SITELIB:
  *     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.25.2\\lib"          /**/
+#define SITELIB "c:\\perl\\site\\5.25.3\\lib"          /**/
 /*#define SITELIB_EXP ""       /**/
 #define SITELIB_STEM ""                /**/
 
index d130d6c..b617a1a 100755 (executable)
@@ -184,7 +184,7 @@ use File::Glob qw(:case);
     },
 
     'bignum' => {
-        'DISTRIBUTION' => 'PJACKLAM/bignum-0.42.tar.gz',
+        'DISTRIBUTION' => 'PJACKLAM/bignum-0.43.tar.gz',
         'FILES'        => q[cpan/bignum],
         'EXCLUDED'     => [
             qr{^inc/Module/},
@@ -248,7 +248,7 @@ use File::Glob qw(:case);
     },
 
     'CPAN' => {
-        'DISTRIBUTION' => 'ANDK/CPAN-2.14-TRIAL.tar.gz',
+        'DISTRIBUTION' => 'ANDK/CPAN-2.14.tar.gz',
         'FILES'        => q[cpan/CPAN],
         'EXCLUDED'     => [
             qr{^distroprefs/},
@@ -323,7 +323,7 @@ use File::Glob qw(:case);
     },
 
     'Data::Dumper' => {
-        'DISTRIBUTION' => 'SMUELLER/Data-Dumper-2.154.tar.gz',
+        'DISTRIBUTION' => 'SMUELLER/Data-Dumper-2.161.tar.gz',
         'FILES'        => q[dist/Data-Dumper],
     },
 
@@ -340,7 +340,7 @@ use File::Glob qw(:case);
     },
 
     'Devel::PPPort' => {
-        'DISTRIBUTION' => 'WOLFSAGE/Devel-PPPort-3.32.tar.gz',
+        'DISTRIBUTION' => 'WOLFSAGE/Devel-PPPort-3.35.tar.gz',
         # RJBS has asked MHX to have UPSTREAM be 'blead'
         # (i.e. move this from cpan/ to dist/)
         'FILES'        => q[cpan/Devel-PPPort],
@@ -385,11 +385,18 @@ use File::Glob qw(:case);
     },
 
     'Encode' => {
-        'DISTRIBUTION' => 'DANKOGAI/Encode-2.80.tar.gz',
+        'DISTRIBUTION' => 'DANKOGAI/Encode-2.84.tar.gz',
         'FILES'        => q[cpan/Encode],
         CUSTOMIZED     => [
-            qw( encoding.pm ),
-            'Byte/Makefile.PL',
+            qw( encoding.pm
+                Byte/Makefile.PL
+                t/enc_data.t
+                t/enc_eucjp.t
+                t/enc_module.t
+                t/enc_utf8.t
+                t/encoding.t
+                t/jperl.t
+                ),
         ],
     },
 
@@ -474,7 +481,7 @@ use File::Glob qw(:case);
             'README.packaging',
             'lib/ExtUtils/MakeMaker/version/vpp.pm',
         ],
-        'CUSTOMIZED' => [ qw( t/basic.t ) ],
+        'CUSTOMIZED' => [ qw( t/basic.t t/lib/MakeMaker/Test/Setup/XS.pm ) ],
     },
 
     'ExtUtils::Manifest' => {
@@ -564,7 +571,7 @@ use File::Glob qw(:case);
     },
 
     'Getopt::Long' => {
-        'DISTRIBUTION' => 'JV/Getopt-Long-2.49.tar.gz',
+        'DISTRIBUTION' => 'JV/Getopt-Long-2.49.1.tar.gz',
         'FILES'        => q[cpan/Getopt-Long],
         'EXCLUDED'     => [
             qr{^examples/},
@@ -666,7 +673,7 @@ use File::Glob qw(:case);
     },
 
     'libnet' => {
-        'DISTRIBUTION' => 'SHAY/libnet-3.08.tar.gz',
+        'DISTRIBUTION' => 'SHAY/libnet-3.09.tar.gz',
         'FILES'        => q[cpan/libnet],
         'EXCLUDED'     => [
             qw( Configure
@@ -696,7 +703,7 @@ use File::Glob qw(:case);
     },
 
     'Locale::Maketext' => {
-        'DISTRIBUTION' => 'TODDR/Locale-Maketext-1.26.tar.gz',
+        'DISTRIBUTION' => 'TODDR/Locale-Maketext-1.27.tar.gz',
         'FILES'        => q[dist/Locale-Maketext],
         'EXCLUDED'     => [
             qw(
@@ -713,7 +720,7 @@ use File::Glob qw(:case);
     },
 
     'Math::BigInt' => {
-        'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-1.999715.tar.gz',
+        'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-1.999726.tar.gz',
         'FILES'        => q[cpan/Math-BigInt],
         'EXCLUDED'     => [
             qr{^inc/},
@@ -728,7 +735,7 @@ use File::Glob qw(:case);
     },
 
     'Math::BigInt::FastCalc' => {
-        'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-FastCalc-0.40.tar.gz',
+        'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-FastCalc-0.42.tar.gz',
         'FILES'        => q[cpan/Math-BigInt-FastCalc],
         'EXCLUDED'     => [
             qr{^inc/},
@@ -751,19 +758,15 @@ use File::Glob qw(:case);
     },
 
     'Math::BigRat' => {
-        'DISTRIBUTION' => 'PJACKLAM/Math-BigRat-0.260802.tar.gz',
+        'DISTRIBUTION' => 'PJACKLAM/Math-BigRat-0.260804.tar.gz',
         'FILES'        => q[cpan/Math-BigRat],
         'EXCLUDED'     => [
             qr{^inc/},
+            qr{^t/author-},
             qw( t/00sig.t
                 t/01load.t
                 t/02pod.t
                 t/03podcov.t
-                t/blog-mbr.t
-                ),
-        ],
-        'CUSTOMIZED'   => [
-            qw( lib/Math/BigRat.pm
                 ),
         ],
     },
@@ -791,7 +794,7 @@ use File::Glob qw(:case);
     },
 
     'Module::CoreList' => {
-        'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20160520.tar.gz',
+        'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20160620.tar.gz',
         'FILES'        => q[dist/Module-CoreList],
     },
 
@@ -819,6 +822,9 @@ use File::Glob qw(:case);
             qr{weaver.ini},
             qr{^xt},
         ],
+        # https://rt.perl.org/Ticket/Display.html?id=128160
+       # https://github.com/Perl-Toolchain-Gang/Module-Metadata/commit/59b3f5b45ff862a1a422a409518255736fe81b66
+        'CUSTOMIZED'   => [ qw[ t/extract-package.t t/metadata.t ] ],
     },
 
     'Net::Ping' => {
@@ -843,7 +849,7 @@ use File::Glob qw(:case);
     },
 
     'Parse::CPAN::Meta' => {
-        'DISTRIBUTION' => 'DAGOLDEN/Parse-CPAN-Meta-1.4417.tar.gz',
+        'DISTRIBUTION' => 'DAGOLDEN/Parse-CPAN-Meta-1.4422.tar.gz',
         'FILES'        => q[cpan/Parse-CPAN-Meta],
         'EXCLUDED'     => [
             qw[t/00-report-prereqs.dd],
@@ -862,7 +868,7 @@ use File::Glob qw(:case);
     },
 
     'Perl::OSType' => {
-        'DISTRIBUTION' => 'DAGOLDEN/Perl-OSType-1.009.tar.gz',
+        'DISTRIBUTION' => 'DAGOLDEN/Perl-OSType-1.010.tar.gz',
         'FILES'        => q[cpan/Perl-OSType],
         'EXCLUDED'     => [qw(tidyall.ini), qr/^xt/, qr{^t/00-}],
     },
@@ -886,6 +892,12 @@ use File::Glob qw(:case);
     'Pod::Checker' => {
         'DISTRIBUTION' => 'MAREKR/Pod-Checker-1.73.tar.gz',
         'FILES'        => q[cpan/Pod-Checker],
+        'CUSTOMIZED'   => [ qw[
+            t/pod/contains_bad_pod.xr
+            t/pod/selfcheck.t
+            t/pod/testcmp.pl
+            t/pod/testpchk.pl
+        ] ],
     },
 
     'Pod::Escapes' => {
@@ -933,7 +945,7 @@ use File::Glob qw(:case);
         'MAP' => {
             ''                 => 'cpan/podlators/',
             # this file lives outside the cpan/ directory
-            'pod/perlpodstyle' => 'pod/perlpodstyle.pod',
+            'pod/perlpodstyle.pod' => 'pod/perlpodstyle.pod',
         },
     },
 
@@ -1054,21 +1066,13 @@ use File::Glob qw(:case);
     },
 
     'Test::Simple' => {
-        'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302026.tar.gz',
+        'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302045.tar.gz',
         'FILES'        => q[cpan/Test-Simple],
         'EXCLUDED'     => [
-            qr{^t/xt},
-            qr{^xt},
-            qw( .perlcriticrc
-                .perltidyrc
-                perltidyrc
-                dist.ini
-                examples/indent.pl
-                examples/subtest.t
-                examples/tools.t
-                examples/tools.t
+            qr{^examples/},
+            qr{^xt/},
+            qw( perltidyrc
                 t/00compile.t
-                t/xxx-changes_updated.t
                 t/00-report.t
                 t/zzz-check-breaks.t
                 ),
@@ -1174,7 +1178,7 @@ use File::Glob qw(:case);
     },
 
     'Time::HiRes' => {
-        'DISTRIBUTION' => 'JHI/Time-HiRes-1.9733.tar.gz',
+        'DISTRIBUTION' => 'JHI/Time-HiRes-1.9739.tar.gz',
         'FILES'        => q[dist/Time-HiRes],
     },
 
@@ -1218,7 +1222,7 @@ use File::Glob qw(:case);
     },
 
     'version' => {
-        'DISTRIBUTION' => 'JPEACOCK/version-0.9916.tar.gz',
+        'DISTRIBUTION' => 'JPEACOCK/version-0.9917.tar.gz',
         'FILES'        => q[cpan/version vutil.c vutil.h vxs.inc],
         'EXCLUDED' => [
             qr{^vutil/lib/},
@@ -1227,7 +1231,7 @@ use File::Glob qw(:case);
             'vutil/vxs.xs',
             't/00impl-pp.t',
             't/survey_locales',
-            'lib/version/vpp.pm',
+            'vperl/vpp.pm',
         ],
 
         # When adding the CPAN-distributed files for version.pm, it is necessary
@@ -1239,7 +1243,6 @@ use File::Glob qw(:case);
         ],
 
         'MAP' => {
-            'vperl/'         => 'cpan/version/lib/version/',
             'vutil/'         => '',
             ''               => 'cpan/version/',
         },
@@ -1268,7 +1271,7 @@ use File::Glob qw(:case);
     },
 
     'XSLoader' => {
-        'DISTRIBUTION' => 'SAPER/XSLoader-0.16.tar.gz',
+        'DISTRIBUTION' => 'SAPER/XSLoader-0.22.tar.gz',
         'FILES'        => q[dist/XSLoader],
         'EXCLUDED'     => [
             qr{^eg/},
index df96265..5609a92 100644 (file)
@@ -39,12 +39,12 @@ alignbytes='8'
 ansi2knr=''
 aphostname='/bin/hostname'
 api_revision='5'
-api_subversion='2'
+api_subversion='3'
 api_version='25'
-api_versionstring='5.25.2'
+api_versionstring='5.25.3'
 ar='ar'
-archlib='/tmp/mblead/lib/perl5/5.25.2/darwin-2level'
-archlibexp='/tmp/mblead/lib/perl5/5.25.2/darwin-2level'
+archlib='/tmp/mblead/lib/perl5/5.25.3/darwin-2level'
+archlibexp='/tmp/mblead/lib/perl5/5.25.3/darwin-2level'
 archname64=''
 archname='darwin-2level'
 archobjs=''
@@ -831,7 +831,7 @@ incpath=''
 incpth='/usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include /usr/include'
 inews=''
 initialinstalllocation='/tmp/mblead/bin'
-installarchlib='/tmp/mblead/lib/perl5/5.25.2/darwin-2level'
+installarchlib='/tmp/mblead/lib/perl5/5.25.3/darwin-2level'
 installbin='/tmp/mblead/bin'
 installhtml1dir=''
 installhtml3dir=''
@@ -839,13 +839,13 @@ installman1dir='/tmp/mblead/man/man1'
 installman3dir='/tmp/mblead/man/man3'
 installprefix='/tmp/mblead'
 installprefixexp='/tmp/mblead'
-installprivlib='/tmp/mblead/lib/perl5/5.25.2'
+installprivlib='/tmp/mblead/lib/perl5/5.25.3'
 installscript='/tmp/mblead/bin'
-installsitearch='/tmp/mblead/lib/perl5/site_perl/5.25.2/darwin-2level'
+installsitearch='/tmp/mblead/lib/perl5/site_perl/5.25.3/darwin-2level'
 installsitebin='/tmp/mblead/bin'
 installsitehtml1dir=''
 installsitehtml3dir=''
-installsitelib='/tmp/mblead/lib/perl5/site_perl/5.25.2'
+installsitelib='/tmp/mblead/lib/perl5/site_perl/5.25.3'
 installsiteman1dir='/tmp/mblead/man/man1'
 installsiteman3dir='/tmp/mblead/man/man3'
 installsitescript='/tmp/mblead/bin'
@@ -970,7 +970,7 @@ perl_patchlevel=''
 perl_static_inline='static __inline__'
 perladmin='aaron@daybreak.nonet'
 perllibs='-lpthread -ldl -lm -lutil -lc'
-perlpath='/tmp/mblead/bin/perl5.25.2'
+perlpath='/tmp/mblead/bin/perl5.25.3'
 pg='pg'
 phostname='hostname'
 pidtype='pid_t'
@@ -979,8 +979,8 @@ pmake=''
 pr=''
 prefix='/tmp/mblead'
 prefixexp='/tmp/mblead'
-privlib='/tmp/mblead/lib/perl5/5.25.2'
-privlibexp='/tmp/mblead/lib/perl5/5.25.2'
+privlib='/tmp/mblead/lib/perl5/5.25.3'
+privlibexp='/tmp/mblead/lib/perl5/5.25.3'
 procselfexe=''
 prototype='define'
 ptrsize='8'
@@ -1046,17 +1046,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, 6, 0'
 sig_size='33'
 signal_t='void'
-sitearch='/tmp/mblead/lib/perl5/site_perl/5.25.2/darwin-2level'
-sitearchexp='/tmp/mblead/lib/perl5/site_perl/5.25.2/darwin-2level'
+sitearch='/tmp/mblead/lib/perl5/site_perl/5.25.3/darwin-2level'
+sitearchexp='/tmp/mblead/lib/perl5/site_perl/5.25.3/darwin-2level'
 sitebin='/tmp/mblead/bin'
 sitebinexp='/tmp/mblead/bin'
 sitehtml1dir=''
 sitehtml1direxp=''
 sitehtml3dir=''
 sitehtml3direxp=''
-sitelib='/tmp/mblead/lib/perl5/site_perl/5.25.2'
+sitelib='/tmp/mblead/lib/perl5/site_perl/5.25.3'
 sitelib_stem='/tmp/mblead/lib/perl5/site_perl'
-sitelibexp='/tmp/mblead/lib/perl5/site_perl/5.25.2'
+sitelibexp='/tmp/mblead/lib/perl5/site_perl/5.25.3'
 siteman1dir='/tmp/mblead/man/man1'
 siteman1direxp='/tmp/mblead/man/man1'
 siteman3dir='/tmp/mblead/man/man3'
@@ -1082,7 +1082,7 @@ src='.'
 ssizetype='ssize_t'
 st_ino_sign='1'
 st_ino_size='8'
-startperl='#!/tmp/mblead/bin/perl5.25.2'
+startperl='#!/tmp/mblead/bin/perl5.25.3'
 startsh='#!/bin/sh'
 static_ext=' '
 stdchar='char'
@@ -1095,7 +1095,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/usr/include/string.h'
 submit=''
-subversion='2'
+subversion='3'
 sysman='/usr/share/man/man1'
 sysroot=''
 tail=''
@@ -1194,8 +1194,8 @@ vendorprefix=''
 vendorprefixexp=''
 vendorscript=''
 vendorscriptexp=''
-version='5.25.2'
-version_patchlevel_string='version 25 subversion 2'
+version='5.25.3'
+version_patchlevel_string='version 25 subversion 3'
 versiononly='define'
 vi=''
 xlibpth='/usr/lib/386 /lib/386'
@@ -1205,9 +1205,9 @@ zcat=''
 zip='zip'
 PERL_REVISION=5
 PERL_VERSION=25
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
 PERL_API_REVISION=5
 PERL_API_VERSION=25
-PERL_API_SUBVERSION=2
+PERL_API_SUBVERSION=3
 PERL_PATCHLEVEL=''
 PERL_CONFIG_SH=true
index a5b6d78..b90afc7 100644 (file)
  *     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 "/pro/lib/perl5/5.25.2/i686-linux-64int-ld"            /**/
-#define ARCHLIB_EXP "/pro/lib/perl5/5.25.2/i686-linux-64int-ld"                /**/
+#define ARCHLIB "/pro/lib/perl5/5.25.3/i686-linux-64int-ld"            /**/
+#define ARCHLIB_EXP "/pro/lib/perl5/5.25.3/i686-linux-64int-ld"                /**/
 
 /* ARCHNAME:
  *     This symbol holds a string representing the architecture name.
  *     This symbol contains the ~name expanded version of PRIVLIB, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define PRIVLIB "/pro/lib/perl5/5.25.2"                /**/
-#define PRIVLIB_EXP "/pro/lib/perl5/5.25.2"            /**/
+#define PRIVLIB "/pro/lib/perl5/5.25.3"                /**/
+#define PRIVLIB_EXP "/pro/lib/perl5/5.25.3"            /**/
 
 /* PTRSIZE:
  *     This symbol contains the size of a pointer, so that the C preprocessor
  *     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 "/pro/lib/perl5/site_perl/5.25.2/i686-linux-64int-ld"         /**/
-#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.25.2/i686-linux-64int-ld"             /**/
+#define SITEARCH "/pro/lib/perl5/site_perl/5.25.3/i686-linux-64int-ld"         /**/
+#define SITEARCH_EXP "/pro/lib/perl5/site_perl/5.25.3/i686-linux-64int-ld"             /**/
 
 /* SITELIB:
  *     This symbol contains the name of the private library for this package.
  *     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 "/pro/lib/perl5/site_perl/5.25.2"              /**/
-#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.25.2"          /**/
+#define SITELIB "/pro/lib/perl5/site_perl/5.25.3"              /**/
+#define SITELIB_EXP "/pro/lib/perl5/site_perl/5.25.3"          /**/
 #define SITELIB_STEM "/pro/lib/perl5/site_perl"                /**/
 
 /* SSize_t:
  *     script to make sure (one hopes) that it runs with perl and not
  *     some shell.
  */
-#define STARTPERL "#!/pro/bin/perl5.25.2"              /**/
+#define STARTPERL "#!/pro/bin/perl5.25.3"              /**/
 
 /* HAS_STDIO_STREAM_ARRAY:
  *     This symbol, if defined, tells that there is an array
index 48b91f7..beac792 100644 (file)
@@ -17,6 +17,19 @@ Consult your favorite dictionary for details.
 
 =head1 EPIGRAPHS
 
+=head2 v5.25.2 - Dan le Sac Vs Scroobius Pip "Waiting For The Beat To Kick In"
+
+L<Announced on 2016-06-20 by Matthew Horsfall|http://www.nntp.perl.org/group/perl.perl5.porters/2016/06/msg237274.html>
+
+  Waiting for the beat to kick in
+  But it never does
+  Waiting for my feet to grow wings
+  That lift me above
+  All of these tiresome things
+  That we know and love
+  Waiting for the beat to kick in
+  But it never does
+
 =head2 v5.25.1 - Eli Pariser, "The Filter Bubble"
 
 L<Announced on 2016-05-20 by Sawyer X|http://www.nntp.perl.org/group/perl.perl5.porters/2016/05/msg236566.html>
@@ -49,6 +62,30 @@ L<Announced on 2016-05-09 by Ricardo Signes|http://www.nntp.perl.org/group/perl.
   To find that the utmost reward
     Of daring should be still to dare.
 
+=head2 v5.24.1-RC1 - Dante Alighieri, trans. Dorothy L. Sayers, "The Divine Comedy", Cantica I: Hell, Canto XX
+
+L<Announced on 2016-07-17 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2016/07/msg238072.html>
+
+  New punishments behoves me sing in this
+    Twentieth canto of my first canticle,
+    Which tells of spirits sunk in the Abyss.
+
+  I now stood ready to observe the full
+    Extent of the new chasm thus laid bare,
+    Drenched as it was in tears most miserable.
+
+  Through the round vale I saw folk drawing near,
+    Weeping and silent, and at such slow pace
+    As Litany processions keep, up here.
+
+  And presently, when I had dropped my gaze
+    Lower than the head, I saw them strangely wried
+    'Twixt collar-bone and chin, so that the face
+
+  Of each was turned towards his own backside,
+    And backwards must they needs creep with their feet,
+    All power of looking forward being denied.
+
 =head2 v5.24.0 - Robert Frost, "The Black Cottage"
 
 L<Announced on 2016-05-09 by Ricardo Signes|http://www.nntp.perl.org/group/perl.perl5.porters/2016/05/msg236242.html>
@@ -425,6 +462,55 @@ L<Announced on 2015-06-20 by Ricardo Signes|http://www.nntp.perl.org/group/perl.
   They sing while you slave and I just get bored
   I ain't gonna work on Maggie's farm no more
 
+=head2 v5.22.3-RC1 - Dante Alighieri, trans. Dorothy L. Sayers, "The Divine Comedy", Cantica I: Hell, Canto XII
+
+L<Announced on 2016-07-17 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2016/07/msg238071.html>
+
+  The place we came to, to descend the brink from,
+    Was sheer crag; and there was a Thing there - making,
+    All told, a prospect any eye would shrink from.
+
+  Like the great landslide that rushed downward, shaking
+    The bank of Adige on this side Trent,
+    (Whether through faulty shoring or the earth's quaking)
+
+  So that the rock, down from the summit rent
+    Far as the plain, lies strewn, and one might crawl
+    From top to bottom by that unsure descent,
+
+  Such was the precipice; and there we spied,
+    Topping the cleft that split the rocky wall,
+    That which was wombed in the false heifer's side,
+
+  The infamy of Crete, stretched out a-sprawl;
+    And seeing us, he gnawed himself, like one
+    Inly devoured with spite and burning gall.
+
+=head2 v5.22.2 - Gaston Leroux, trans. Mireille Ribière, "The Phantom of the Opera"
+
+L<Announced on 2016-04-29 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2016/04/msg236120.html>
+
+A silence; and then: 'If, in just two minutes' time by my watch--and a
+splendid watch it is--you have not turned the scorpion, mademoiselle, I
+shall turn the grasshopper... and the grasshopper, remember, _leaps
+straight up into the air!_'
+The silence that ensued was terrifying, worse than any we had
+experienced before.  I knew that when Erik spoke with that quiet,
+gentle, slightly weary voice, it meant that he had reached the end of
+his tether: that he was capable of the most abominable crimes or the
+most selfless devotion; that the slightest irritation might unleash a
+storm.
+Realizing that our fate was out of our hands, the Viscount fell to his
+knees and prayed.  As for me, I pressed both hands to my chest, for my
+heart was pounding so fiercely that I thought it would burst.  We were
+intensely aware of the excruciating dilemma Christine Daaé faced in
+those final seconds.  We understood why she hesitated to turn the
+scorpion.  What if the scorpion, rather than the grasshopper, were to
+set off the explosion?  What if Erik was simply intent on destroying
+everything, regardless?
+At last he spoke: 'The two minutes are up,' he said in a soft, angelic
+voice.  'Goodbye, mademoiselle.  Off you go, little grasshopper!'
+
 =head2 v5.22.2-RC1 - Gaston Leroux, trans. Mireille Ribière, "The Phantom of the Opera"
 
 L<Announced on 2016-04-10 by Steve Hay|http://www.nntp.perl.org/group/perl.perl5.porters/2016/04/msg235732.html>
index 6cf7d92..72cbb9c 100644 (file)
@@ -14,6 +14,7 @@ $| = 1;
 
 # Get command line options
 use Getopt::Long;
+require "Porting/pod_lib.pl";
 my $outfile;
 my $check_only = 0;
 my $quiet = 0;
@@ -30,13 +31,10 @@ my @manifest = <$IN>;
 close($IN) or die($!);
 chomp(@manifest);
 
-# Sort by dictionary order (ignore-case and
-#   consider whitespace and alphanumeric only)
-my @sorted = sort {
-                      (my $aa = $a) =~ s/[^\s\da-zA-Z]//g;
-                      (my $bb = $b) =~ s/[^\s\da-zA-Z]//g;
-                      uc($aa) cmp uc($bb)
-                  } @manifest;
+my %seen= ( '' => 1 ); # filter out blank lines
+my @sorted = grep { !$seen{$_}++ }
+             sort_manifest(@manifest)
+;
 
 # Check if the file is sorted or not
 my $exit_code = 0;
index fd4825b..3cbf8cf 100644 (file)
@@ -378,7 +378,7 @@ here.
 
 XXX Generate this with:
 
-  perl Porting/acknowledgements.pl v5.25.2..HEAD
+  perl Porting/acknowledgements.pl v5.25.3..HEAD
 
 =head1 Reporting Bugs
 
index 6eaacde..4ad204c 100644 (file)
@@ -663,6 +663,35 @@ sub get_pod_metadata {
     return \%state;
 }
 
+# Try to get a sane sort. case insensitive, more or less
+# sorted such that path components are compared independently,
+# and so that lib/Foo/Bar sorts before lib/Foo-Alpha/Baz
+# and so that lib/Foo/Bar.pm sorts before lib/Foo/Bar/Alpha.pm
+# and so that configure and Configure sort together.
+sub sort_manifest {
+    return
+    # case insensitive sorting of directory components independently.
+    map { $_->[0] } # extract the full line
+    sort {
+        $a->[1] cmp $b->[1] || # sort in order of munged filename
+        $a->[0] cmp $b->[0]    # then by the exact text in full line
+    }
+    map {
+        # split out the filename and the description
+        my ($f) = split /\s+/, $_, 2;
+        # lc the filename so Configure and configure sort together in the list
+        my $m= lc $f; # $m for munged
+        # replace slashes by nulls, this makes short directory names sort before
+        # longer ones, such as "foo/" sorting before "foo-bar/"
+        $m =~ s!/!\0!g;
+        # replace the extension (only one) by null null extension.
+        # this puts any foo/blah.ext before any files in foo/blah/
+        $m =~ s!(\.[^.]+\z)!\0\0$1!;
+        # return the original string, and the munged filename
+        [ $_, $m ];
+    } @_;
+}
+
 1;
 
 # ex: set ts=8 sts=4 sw=4 et:
index 0d837bf..af5550e 100644 (file)
@@ -140,14 +140,15 @@ sub do_manifest {
     my @manifest =
         grep {! m!^pod/[^. \t]+\.pod.*!}
             grep {! m!^README\.(\S+)! || $state->{ignore}{$1}} split "\n", $prev;
-    join "\n", (
-                # Dictionary order - fold and handle non-word chars as nothing
-                map  { $_->[0] }
-                sort { $a->[1] cmp $b->[1] || $a->[0] cmp $b->[0] }
-                map  { my $f = lc $_; $f =~ s/[^a-z0-9\s]//g; [ $_, $f ] }
-                @manifest,
-                &generate_manifest_pod(),
-                &generate_manifest_readme()), '';
+    # NOTE - the sort code here is shared with Porting/manisort currently.
+    # If you change one, change the other. Or refactor them. :-)
+    join "\n",  sort_manifest(
+                    @manifest,
+                    &generate_manifest_pod(),
+                    &generate_manifest_readme()
+                ),
+                '', # elegant way to add a newline to the end
+    ;
 }
 
 sub do_nmake {
index c1fb1e7..89d3b9a 100644 (file)
@@ -24,7 +24,7 @@ https://metacpan.org/pod/release/[AUTHOR]/perl-5.[VERSION.SUBVERSION]/pod/perlde
 [ACKNOWLEDGEMENTS SECTION FROM PERLDELTA]
 
 We expect to release version [NEXT BLEAD VERSION.SUBVERSION] on [FUTURE
-DATE].  The next major stable release of Perl 5, version 24.0, should
-appear in May 2016.
+DATE].  The next major stable release of Perl 5, version 26.0, should
+appear in May 2017.
 
 [YOUR SALUTATION HERE]
index a81e174..56b8847 100644 (file)
@@ -1385,18 +1385,6 @@ F<perlhist.pod> on blead.  e.g.
 
     5.8.9         2008-Dec-14
 
-=head3 bump RT version number
-
-Log into http://rt.perl.org/ and check whether the new version is in the RT
-fields C<Perl Version> and C<Fixed In>. The easiest way to determine this is to
-open up any ticket for modification and check the drop downs next to the
-C<Perl Version> and C<Fixed In> labels.
-
-Here, try this link: L<https://rt.perl.org/Ticket/Modify.html?id=10000>
-
-If the new version is not listed there, send an email to C<perlbug-admin at
-perl.org> requesting this.
-
 =head3 Relax!
 
 I<You MUST RETIRE to your preferred PUB, CAFE or SEASIDE VILLA for some
index 2bc09f5..fb1c608 100644 (file)
@@ -23,14 +23,14 @@ Code freezes (which happen in the 5.25.X series)
 =head2 Perl 5.24
 
   2016-05-09  5.24.0 ✓        Ricardo Signes
-  2016-07-??  5.24.1          ??
+  2016-07-25  5.24.1          Steve Hay
 
 =head2 Perl 5.22
 
   2015-06-01  5.22.0 ✓        Ricardo Signes
   2015-12-13  5.22.1 ✓        Steve Hay
   2016-04-29  5.22.2 ✓        Steve Hay
-  2016-??-??  5.22.3          ??
+  2016-07-25  5.22.3          Steve Hay
 
 =head1 DEVELOPMENT RELEASE SCHEDULE
 
@@ -50,14 +50,14 @@ you should reset the version numbers to the next blead series.
 
   2016-04-08  5.25.0 ✓        Ricardo Signes
   2016-05-20  5.25.1 ✓        Sawyer X
-  2016-06-20  5.25.2          Matthew Horsfall
+  2016-06-20  5.25.2         Matthew Horsfall
   2016-07-20  5.25.3          Steve Hay
   2016-08-20  5.25.4          BinGOs
   2016-09-20  5.25.5          Stevan Little
-  2016-10-20  5.25.6          Sawyer X
+  2016-10-20  5.25.6          Chad Granum
   2016-11-20  5.25.7          Aaron Crane
-  2016-12-20  5.25.8          ?
-  2017-01-20  5.25.9          ?
+  2016-12-20  5.25.8          Sawyer X
+  2017-01-20  5.25.9          Abigail
   2017-02-20  5.25.10         Renée Bäcker
 
 (RC0 for 5.26.0 will be released once we think that all the blockers have been
index f0f01cb..b0ca21f 100644 (file)
@@ -485,7 +485,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.25.2.
+options would be nice for perl 5.25.3.
 
 =head2 Profile Perl - am I hot or not?
 
@@ -1205,7 +1205,7 @@ 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.25.2"
+of 5.25.3"
 
 =head2 make ithreads more robust
 
index 8296add..a6a0e19 100644 (file)
@@ -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.25.2/BePC-haiku/CORE/libperl.so .
+  cd /boot/common/lib; ln -s perl5/5.25.3/BePC-haiku/CORE/libperl.so .
 
-Replace C<5.25.2> with your respective version of Perl.
+Replace C<5.25.3> with your respective version of Perl.
 
 =head1 KNOWN PROBLEMS
 
index 63cf0fd..4dba4f0 100644 (file)
@@ -10,9 +10,9 @@ perlmacosx - Perl under Mac OS X
 
 This document briefly describes Perl under Mac OS X.
 
-  curl -O http://www.cpan.org/src/perl-5.25.2.tar.gz
-  tar -xzf perl-5.25.2.tar.gz
-  cd perl-5.25.2
+  curl -O http://www.cpan.org/src/perl-5.25.3.tar.gz
+  tar -xzf perl-5.25.3.tar.gz
+  cd perl-5.25.3
   ./Configure -des -Dprefix=/usr/local/
   make
   make test
@@ -20,7 +20,7 @@ This document briefly describes Perl under Mac OS X.
 
 =head1 DESCRIPTION
 
-The latest Perl release (5.25.2 as of this writing) builds without changes
+The latest Perl release (5.25.3 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',
index 80581bd..b33ca6e 100644 (file)
@@ -619,7 +619,7 @@ C<set PERLLIB_PREFIX> in F<Config.sys>, see L</"C<PERLLIB_PREFIX>">.
 
 =item Additional Perl modules
 
-  unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.25.2/
+  unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.25.3/
 
 Same remark as above applies.  Additionally, if this directory is not
 one of directories on @INC (and @INC is influenced by C<PERLLIB_PREFIX>), you
index dbd6a8b..232a5af 100644 (file)
@@ -142,11 +142,11 @@ You may need to set up a foreign symbol for the unpacking utility of
 choice.  Once you have done so, use a command like the following to
 unpack the archive:
 
-    vmstar -xvf perl-5^.25^.2.tar
+    vmstar -xvf perl-5^.25^.3.tar
 
 Then set default to the top-level source directory like so:
 
-    set default [.perl-5^.25^.2]
+    set default [.perl-5^.25^.3]
 
 and proceed with configuration as described in the next section.
 
index 17e0c6f..a748d00 100644 (file)
@@ -43,7 +43,7 @@ static const UV ASCII_invlist[] = { /* for ASCII/Latin1 */
 };
 
 static const UV Cased_invlist[] = { /* for ASCII/Latin1 */
-       263,    /* Number of elements */
+       271,    /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -112,6 +112,8 @@ static const UV Cased_invlist[] = { /* for ASCII/Latin1 */
        0x13F6,
        0x13F8,
        0x13FE,
+       0x1C80,
+       0x1C89,
        0x1D00,
        0x1DC0,
        0x1E00,
@@ -217,7 +219,7 @@ static const UV Cased_invlist[] = { /* for ASCII/Latin1 */
        0xA78B,
        0xA78F,
        0xA790,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F8,
@@ -238,6 +240,10 @@ static const UV Cased_invlist[] = { /* for ASCII/Latin1 */
        0xFF5B,
        0x10400,
        0x10450,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10C80,
        0x10CB3,
        0x10CC0,
@@ -304,6 +310,8 @@ static const UV Cased_invlist[] = { /* for ASCII/Latin1 */
        0x1D7C3,
        0x1D7C4,
        0x1D7CC,
+       0x1E900,
+       0x1E944,
        0x1F130,
        0x1F14A,
        0x1F150,
@@ -369,7 +377,7 @@ static const UV NonL1_Perl_Non_Final_Folds_invlist[] = { /* for ASCII/Latin1 */
 };
 
 static const UV _Perl_Any_Folds_invlist[] = { /* for ASCII/Latin1 */
-       247,    /* Number of elements */
+       253,    /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -419,8 +427,6 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for ASCII/Latin1 */
        0x265,
        0x267,
        0x268,
-       0x26A,
-       0x26B,
        0x26D,
        0x26F,
        0x270,
@@ -500,6 +506,8 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for ASCII/Latin1 */
        0x13F6,
        0x13F8,
        0x13FE,
+       0x1C80,
+       0x1C89,
        0x1D79,
        0x1D7A,
        0x1D7D,
@@ -597,7 +605,7 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for ASCII/Latin1 */
        0xA790,
        0xA794,
        0xA796,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xAB53,
@@ -614,12 +622,18 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for ASCII/Latin1 */
        0xFF5B,
        0x10400,
        0x10450,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10C80,
        0x10CB3,
        0x10CC0,
        0x10CF3,
        0x118A0,
-       0x118E0
+       0x118E0,
+       0x1E900,
+       0x1E944
 };
 
 static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for ASCII/Latin1 */
@@ -693,7 +707,7 @@ static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for ASCII/Latin1 */
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
-       1502,   /* Number of elements */
+       1615,   /* Number of elements */
        148565664, /* Version and data structure type */
        0,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -760,6 +774,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
        0x82E,
        0x859,
        0x85C,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x903,
        0x904,
@@ -908,6 +924,7 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
        0xD4A,
        0xD4D,
        0xD4E,
+       0xD4F,
        0xD57,
        0xD58,
        0xD62,
@@ -1016,6 +1033,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
        0x180B,
        0x180E,
        0x180F,
+       0x1885,
+       0x1887,
        0x18A9,
        0x18AA,
        0x1920,
@@ -1102,10 +1121,11 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
        0x1CFA,
        0x1DC0,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1E00,
        0x200B,
        0x200C,
+       0x200D,
        0x200E,
        0x2010,
        0x2028,
@@ -1114,6 +1134,14 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
        0x2070,
        0x20D0,
        0x20F1,
+       0x261D,
+       0x261E,
+       0x26F9,
+       0x26FA,
+       0x270A,
+       0x270E,
+       0x2764,
+       0x2765,
        0x2CEF,
        0x2CF2,
        0x2D7F,
@@ -1146,7 +1174,7 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
        0xA882,
        0xA8B4,
        0xA8C4,
-       0xA8C5,
+       0xA8C6,
        0xA8E0,
        0xA8F2,
        0xA926,
@@ -2073,6 +2101,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
        0x111B6,
        0x111BF,
        0x111C1,
+       0x111C2,
+       0x111C4,
        0x111CA,
        0x111CD,
        0x1122C,
@@ -2082,6 +2112,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
        0x11235,
        0x11236,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x112DF,
        0x112E0,
        0x112E3,
@@ -2108,6 +2140,13 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11435,
+       0x11438,
+       0x11440,
+       0x11442,
+       0x11445,
+       0x11446,
+       0x11447,
        0x114B0,
        0x114B1,
        0x114B3,
@@ -2152,6 +2191,22 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
        0x11726,
        0x11727,
        0x1172C,
+       0x11C2F,
+       0x11C30,
+       0x11C37,
+       0x11C38,
+       0x11C3E,
+       0x11C3F,
+       0x11C40,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CAA,
+       0x11CB1,
+       0x11CB2,
+       0x11CB4,
+       0x11CB5,
+       0x11CB7,
        0x16AF0,
        0x16AF5,
        0x16B30,
@@ -2191,11 +2246,83 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E8D0,
        0x1E8D7,
+       0x1E944,
+       0x1E94B,
        0x1F1E6,
        0x1F200,
+       0x1F385,
+       0x1F386,
+       0x1F3C3,
+       0x1F3C5,
+       0x1F3CA,
+       0x1F3CC,
+       0x1F3FB,
+       0x1F400,
+       0x1F442,
+       0x1F444,
+       0x1F446,
+       0x1F451,
+       0x1F466,
+       0x1F46A,
+       0x1F46E,
+       0x1F46F,
+       0x1F470,
+       0x1F479,
+       0x1F47C,
+       0x1F47D,
+       0x1F481,
+       0x1F484,
+       0x1F485,
+       0x1F488,
+       0x1F48B,
+       0x1F48C,
+       0x1F4AA,
+       0x1F4AB,
+       0x1F575,
+       0x1F576,
+       0x1F57A,
+       0x1F57B,
+       0x1F590,
+       0x1F591,
+       0x1F595,
+       0x1F597,
+       0x1F5E8,
+       0x1F5E9,
+       0x1F645,
+       0x1F648,
+       0x1F64B,
+       0x1F650,
+       0x1F6A3,
+       0x1F6A4,
+       0x1F6B4,
+       0x1F6B7,
+       0x1F6C0,
+       0x1F6C1,
+       0x1F918,
+       0x1F91F,
+       0x1F926,
+       0x1F927,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93A,
+       0x1F93C,
+       0x1F93F,
        0xE0000,
+       0xE0020,
+       0xE0080,
        0xE0100,
        0xE01F0,
        0xE1000
@@ -2205,23 +2332,28 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define GCB_ENUM_COUNT 14
+#define GCB_ENUM_COUNT 19
 
 typedef enum {
        GCB_Other = 0,
        GCB_CR = 1,
        GCB_Control = 2,
-       GCB_Extend = 3,
-       GCB_L = 4,
-       GCB_LF = 5,
-       GCB_LV = 6,
-       GCB_LVT = 7,
-       GCB_Prepend = 8,
-       GCB_Regional_Indicator = 9,
-       GCB_SpacingMark = 10,
-       GCB_T = 11,
-       GCB_V = 12,
-       GCB_EDGE = 13
+       GCB_E_Base = 3,
+       GCB_E_Base_GAZ = 4,
+       GCB_E_Modifier = 5,
+       GCB_Extend = 6,
+       GCB_Glue_After_Zwj = 7,
+       GCB_L = 8,
+       GCB_LF = 9,
+       GCB_LV = 10,
+       GCB_LVT = 11,
+       GCB_Prepend = 12,
+       GCB_Regional_Indicator = 13,
+       GCB_SpacingMark = 14,
+       GCB_T = 15,
+       GCB_V = 16,
+       GCB_ZWJ = 17,
+       GCB_EDGE = 18
 } GCB_enum;
 
 static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
@@ -2249,7 +2381,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
-       GCB_Control,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -2260,7 +2392,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
-       GCB_Control,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -2268,7 +2400,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
-       GCB_Control,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -2289,6 +2421,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
+       GCB_Prepend,
+       GCB_Extend,
        GCB_SpacingMark,
        GCB_Other,
        GCB_Extend,
@@ -2435,6 +2569,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_Other,
        GCB_SpacingMark,
        GCB_Extend,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -2547,6 +2682,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
        GCB_SpacingMark,
        GCB_Extend,
        GCB_SpacingMark,
@@ -2634,6 +2771,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_Other,
        GCB_Control,
        GCB_Extend,
+       GCB_ZWJ,
        GCB_Control,
        GCB_Other,
        GCB_Control,
@@ -2642,6 +2780,14 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_Glue_After_Zwj,
+       GCB_Other,
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
@@ -3584,7 +3730,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_SpacingMark,
        GCB_Extend,
        GCB_Other,
-       GCB_Control,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -3601,6 +3747,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_Extend,
        GCB_SpacingMark,
        GCB_Other,
+       GCB_Prepend,
+       GCB_Other,
        GCB_Extend,
        GCB_Other,
        GCB_SpacingMark,
@@ -3611,6 +3759,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
        GCB_SpacingMark,
        GCB_Extend,
        GCB_Other,
@@ -3636,6 +3786,13 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_Other,
        GCB_Extend,
        GCB_SpacingMark,
        GCB_Extend,
@@ -3680,6 +3837,22 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_SpacingMark,
        GCB_Extend,
        GCB_Other,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_Other,
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
@@ -3721,8 +3894,80 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
        GCB_Regional_Indicator,
        GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Modifier,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base_GAZ,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_Glue_After_Zwj,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_Glue_After_Zwj,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_Control,
+       GCB_Extend,
        GCB_Control,
        GCB_Extend,
        GCB_Control,
@@ -3734,7 +3979,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
 #if defined(PERL_IN_UTF8_C)
 
 static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
-       1317,   /* Number of elements */
+       1367,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -3839,6 +4084,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
        0x85C,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x964,
        0x966,
@@ -4017,7 +4266,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
        0xC64,
        0xC66,
        0xC70,
-       0xC81,
+       0xC80,
        0xC84,
        0xC85,
        0xC8D,
@@ -4059,7 +4308,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
        0xD49,
        0xD4A,
        0xD4F,
-       0xD57,
+       0xD54,
        0xD58,
        0xD5F,
        0xD64,
@@ -4295,6 +4544,8 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
        0x1C4A,
        0x1C4D,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CD0,
        0x1CD3,
        0x1CD4,
@@ -4303,7 +4554,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
        0x1CFA,
        0x1D00,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1F16,
        0x1F18,
        0x1F1E,
@@ -4472,7 +4723,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -4480,7 +4731,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
        0xA840,
        0xA874,
        0xA880,
-       0xA8C5,
+       0xA8C6,
        0xA8D0,
        0xA8DA,
        0xA8E0,
@@ -4657,6 +4908,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -4761,6 +5016,8 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
        0x11212,
        0x11213,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -4805,6 +5062,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x1144B,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114C6,
        0x114C7,
@@ -4839,6 +5100,20 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C41,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -4875,6 +5150,12 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
        0x16F7F,
        0x16F8F,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -4973,10 +5254,24 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8D0,
        0x1E8D7,
+       0x1E900,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -5058,7 +5353,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */
 };
 
 static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */
-       1129,   /* Number of elements */
+       1161,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -5163,6 +5458,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */
        0x859,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
        0x904,
        0x93A,
        0x93D,
@@ -5291,6 +5588,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */
        0xC5B,
        0xC60,
        0xC62,
+       0xC80,
+       0xC81,
        0xC85,
        0xC8D,
        0xC8E,
@@ -5319,6 +5618,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */
        0xD3E,
        0xD4E,
        0xD4F,
+       0xD54,
+       0xD57,
        0xD5F,
        0xD62,
        0xD7A,
@@ -5513,6 +5814,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */
        0x1C50,
        0x1C5A,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CE9,
        0x1CED,
        0x1CEE,
@@ -5680,7 +5983,7 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -5867,6 +6170,10 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */
        0x103D6,
        0x10400,
        0x1049E,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -5989,6 +6296,10 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */
        0x11351,
        0x1135D,
        0x11362,
+       0x11400,
+       0x11435,
+       0x11447,
+       0x1144B,
        0x11480,
        0x114B0,
        0x114C4,
@@ -6013,6 +6324,14 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C2F,
+       0x11C40,
+       0x11C41,
+       0x11C72,
+       0x11C90,
        0x12000,
        0x1239A,
        0x12400,
@@ -6043,6 +6362,12 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */
        0x16F51,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -6115,6 +6440,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */
        0x1D7CC,
        0x1E800,
        0x1E8C5,
+       0x1E900,
+       0x1E944,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -6198,7 +6525,7 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
-       2156,   /* Number of elements */
+       2267,   /* Number of elements */
        148565664, /* Version and data structure type */
        0,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -6344,6 +6671,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x82E,
        0x859,
        0x85C,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x904,
        0x93A,
@@ -6641,6 +6970,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x180F,
        0x1810,
        0x181A,
+       0x1885,
+       0x1887,
        0x18A9,
        0x18AA,
        0x1920,
@@ -6705,7 +7036,7 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x1CFA,
        0x1DC0,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1E00,
        0x1FFD,
        0x1FFE,
@@ -6714,6 +7045,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x2008,
        0x200B,
        0x200C,
+       0x200D,
+       0x200E,
        0x2010,
        0x2011,
        0x2012,
@@ -6796,6 +7129,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x2618,
        0x2619,
        0x261A,
+       0x261D,
+       0x261E,
        0x2620,
        0x2639,
        0x263C,
@@ -6822,15 +7157,19 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x26F1,
        0x26F6,
        0x26F7,
+       0x26F9,
+       0x26FA,
        0x26FB,
        0x26FD,
        0x2705,
        0x2708,
+       0x270A,
        0x270E,
        0x275B,
        0x2761,
        0x2762,
        0x2764,
+       0x2765,
        0x2768,
        0x2769,
        0x276A,
@@ -6935,6 +7274,7 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x2E40,
        0x2E42,
        0x2E43,
+       0x2E45,
        0x2E80,
        0x2E9A,
        0x2E9B,
@@ -7085,7 +7425,7 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0xA880,
        0xA882,
        0xA8B4,
-       0xA8C5,
+       0xA8C6,
        0xA8CE,
        0xA8D0,
        0xA8DA,
@@ -8060,6 +8400,15 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0xFF71,
        0xFF9E,
        0xFFA0,
+       0xFFBF,
+       0xFFC2,
+       0xFFC8,
+       0xFFCA,
+       0xFFD0,
+       0xFFD2,
+       0xFFD8,
+       0xFFDA,
+       0xFFDD,
        0xFFE0,
        0xFFE1,
        0xFFE2,
@@ -8152,6 +8501,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x1123A,
        0x1123B,
        0x1123D,
+       0x1123E,
+       0x1123F,
        0x112A9,
        0x112AA,
        0x112DF,
@@ -8176,6 +8527,14 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11435,
+       0x11447,
+       0x1144B,
+       0x1144F,
+       0x11450,
+       0x1145A,
+       0x1145B,
+       0x1145C,
        0x114B0,
        0x114C4,
        0x114D0,
@@ -8196,6 +8555,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x11643,
        0x11650,
        0x1165A,
+       0x11660,
+       0x1166D,
        0x116AB,
        0x116B8,
        0x116C0,
@@ -8208,6 +8569,21 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x1173F,
        0x118E0,
        0x118EA,
+       0x11C2F,
+       0x11C37,
+       0x11C38,
+       0x11C40,
+       0x11C41,
+       0x11C46,
+       0x11C50,
+       0x11C5A,
+       0x11C70,
+       0x11C71,
+       0x11C72,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12470,
        0x12475,
        0x13258,
@@ -8244,6 +8620,12 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x16F7F,
        0x16F8F,
        0x16F93,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC9D,
@@ -8276,44 +8658,73 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E8D0,
        0x1E8D7,
+       0x1E944,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
+       0x1E95E,
+       0x1E960,
        0x1F000,
-       0x1F02C,
-       0x1F030,
-       0x1F094,
-       0x1F0A0,
-       0x1F0AF,
-       0x1F0B1,
-       0x1F0C0,
-       0x1F0C1,
-       0x1F0D0,
-       0x1F0D1,
-       0x1F0F6,
+       0x1F100,
+       0x1F10D,
+       0x1F110,
+       0x1F12F,
+       0x1F130,
+       0x1F16C,
+       0x1F170,
+       0x1F1AD,
        0x1F1E6,
        0x1F200,
-       0x1F203,
-       0x1F210,
-       0x1F23B,
-       0x1F240,
-       0x1F249,
-       0x1F250,
-       0x1F252,
-       0x1F300,
+       0x1F385,
+       0x1F386,
        0x1F39C,
        0x1F39E,
        0x1F3B5,
        0x1F3B7,
        0x1F3BC,
        0x1F3BD,
+       0x1F3C3,
+       0x1F3C5,
+       0x1F3CA,
+       0x1F3CC,
        0x1F3FB,
        0x1F400,
+       0x1F442,
+       0x1F444,
+       0x1F446,
+       0x1F451,
+       0x1F466,
+       0x1F46A,
+       0x1F46E,
+       0x1F46F,
+       0x1F470,
+       0x1F479,
+       0x1F47C,
+       0x1F47D,
+       0x1F481,
+       0x1F484,
+       0x1F485,
+       0x1F488,
        0x1F4A0,
        0x1F4A1,
        0x1F4A2,
        0x1F4A3,
        0x1F4A4,
        0x1F4A5,
+       0x1F4AA,
+       0x1F4AB,
        0x1F4AF,
        0x1F4B0,
        0x1F4B1,
@@ -8324,30 +8735,57 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
        0x1F525,
        0x1F532,
        0x1F54A,
+       0x1F575,
+       0x1F576,
        0x1F57A,
        0x1F57B,
-       0x1F5A4,
-       0x1F5A5,
+       0x1F590,
+       0x1F591,
+       0x1F595,
+       0x1F597,
        0x1F5D4,
        0x1F5DC,
        0x1F5F4,
        0x1F5FA,
+       0x1F645,
+       0x1F648,
+       0x1F64B,
        0x1F650,
        0x1F676,
        0x1F679,
        0x1F67C,
        0x1F680,
-       0x1F6D1,
-       0x1F6E0,
-       0x1F6ED,
-       0x1F6F0,
-       0x1F6F4,
-       0x1F910,
-       0x1F919,
-       0x1F980,
-       0x1F985,
-       0x1F9C0,
-       0x1F9C1,
+       0x1F6A3,
+       0x1F6A4,
+       0x1F6B4,
+       0x1F6B7,
+       0x1F6C0,
+       0x1F6C1,
+       0x1F700,
+       0x1F774,
+       0x1F780,
+       0x1F7D5,
+       0x1F800,
+       0x1F80C,
+       0x1F810,
+       0x1F848,
+       0x1F850,
+       0x1F85A,
+       0x1F860,
+       0x1F888,
+       0x1F890,
+       0x1F8AE,
+       0x1F918,
+       0x1F91F,
+       0x1F926,
+       0x1F927,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93A,
+       0x1F93C,
+       0x1F93F,
+       0x1FFFE,
        0x20000,
        0x2FFFE,
        0x30000,
@@ -8364,7 +8802,7 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define LB_ENUM_COUNT 36
+#define LB_ENUM_COUNT 39
 
 typedef enum {
        LB_Alphabetic = 0,
@@ -8377,32 +8815,35 @@ typedef enum {
        LB_Close_Punctuation = 7,
        LB_Combining_Mark = 8,
        LB_Contingent_Break = 9,
-       LB_Exclamation = 10,
-       LB_Glue = 11,
-       LB_H2 = 12,
-       LB_H3 = 13,
-       LB_Hebrew_Letter = 14,
-       LB_Hyphen = 15,
-       LB_Ideographic = 16,
-       LB_Infix_Numeric = 17,
-       LB_Inseparable = 18,
-       LB_JL = 19,
-       LB_JT = 20,
-       LB_JV = 21,
-       LB_Line_Feed = 22,
-       LB_Mandatory_Break = 23,
-       LB_Next_Line = 24,
-       LB_Nonstarter = 25,
-       LB_Numeric = 26,
-       LB_Open_Punctuation = 27,
-       LB_Postfix_Numeric = 28,
-       LB_Prefix_Numeric = 29,
-       LB_Quotation = 30,
-       LB_Regional_Indicator = 31,
-       LB_Space = 32,
-       LB_Word_Joiner = 33,
-       LB_ZWSpace = 34,
-       LB_EDGE = 35
+       LB_E_Base = 10,
+       LB_E_Modifier = 11,
+       LB_Exclamation = 12,
+       LB_Glue = 13,
+       LB_H2 = 14,
+       LB_H3 = 15,
+       LB_Hebrew_Letter = 16,
+       LB_Hyphen = 17,
+       LB_Ideographic = 18,
+       LB_Infix_Numeric = 19,
+       LB_Inseparable = 20,
+       LB_JL = 21,
+       LB_JT = 22,
+       LB_JV = 23,
+       LB_Line_Feed = 24,
+       LB_Mandatory_Break = 25,
+       LB_Next_Line = 26,
+       LB_Nonstarter = 27,
+       LB_Numeric = 28,
+       LB_Open_Punctuation = 29,
+       LB_Postfix_Numeric = 30,
+       LB_Prefix_Numeric = 31,
+       LB_Quotation = 32,
+       LB_Regional_Indicator = 33,
+       LB_Space = 34,
+       LB_Word_Joiner = 35,
+       LB_ZWJ = 36,
+       LB_ZWSpace = 37,
+       LB_EDGE = 38
 } LB_enum;
 
 static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
@@ -8557,6 +8998,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Combining_Mark,
        LB_Alphabetic,
        LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
        LB_Break_After,
        LB_Numeric,
        LB_Alphabetic,
@@ -8851,6 +9294,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
        LB_Exclamation,
        LB_Numeric,
        LB_Alphabetic,
@@ -8918,6 +9363,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Break_After,
        LB_ZWSpace,
        LB_Combining_Mark,
+       LB_ZWJ,
+       LB_Combining_Mark,
        LB_Break_After,
        LB_Glue,
        LB_Break_After,
@@ -9000,6 +9447,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -9026,14 +9475,18 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
        LB_Alphabetic,
        LB_Quotation,
        LB_Alphabetic,
        LB_Exclamation,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Open_Punctuation,
        LB_Close_Punctuation,
@@ -9138,6 +9591,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Alphabetic,
        LB_Break_After,
        LB_Open_Punctuation,
+       LB_Break_After,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -10259,10 +10713,19 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Open_Punctuation,
        LB_Close_Punctuation,
        LB_Nonstarter,
-       LB_Alphabetic,
+       LB_Ideographic,
        LB_Nonstarter,
-       LB_Alphabetic,
+       LB_Ideographic,
        LB_Nonstarter,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Postfix_Numeric,
        LB_Prefix_Numeric,
@@ -10356,6 +10819,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Alphabetic,
        LB_Break_After,
        LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
        LB_Break_After,
        LB_Alphabetic,
        LB_Combining_Mark,
@@ -10382,6 +10847,14 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
+       LB_Break_After,
+       LB_Alphabetic,
+       LB_Numeric,
+       LB_Alphabetic,
+       LB_Break_After,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
        LB_Numeric,
        LB_Alphabetic,
        LB_Combining_Mark,
@@ -10400,6 +10873,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Alphabetic,
        LB_Numeric,
        LB_Alphabetic,
+       LB_Break_Before,
+       LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
        LB_Numeric,
@@ -10412,6 +10887,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Alphabetic,
        LB_Numeric,
        LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Break_After,
+       LB_Alphabetic,
+       LB_Numeric,
+       LB_Alphabetic,
+       LB_Break_Before,
+       LB_Exclamation,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
        LB_Break_After,
        LB_Alphabetic,
        LB_Open_Punctuation,
@@ -10448,6 +10938,12 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
+       LB_Nonstarter,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Combining_Mark,
@@ -10482,9 +10978,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
-       LB_Ideographic,
+       LB_Combining_Mark,
        LB_Alphabetic,
-       LB_Ideographic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Numeric,
+       LB_Alphabetic,
+       LB_Open_Punctuation,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -10494,9 +11002,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
+       LB_Ideographic,
        LB_Regional_Indicator,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
@@ -10504,17 +11013,27 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Modifier,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
@@ -10522,6 +11041,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -10532,15 +11053,36 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
        LB_Alphabetic,
        LB_Quotation,
        LB_Nonstarter,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -10551,6 +11093,16 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -10569,7 +11121,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
-       2896,   /* Number of elements */
+       2957,   /* Number of elements */
        148565664, /* Version and data structure type */
        0,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -11276,6 +11828,10 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0x85C,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x904,
        0x93A,
@@ -11480,6 +12036,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0xC64,
        0xC66,
        0xC70,
+       0xC80,
        0xC81,
        0xC84,
        0xC85,
@@ -11527,6 +12084,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0xD4A,
        0xD4E,
        0xD4F,
+       0xD54,
        0xD57,
        0xD58,
        0xD5F,
@@ -11766,6 +12324,8 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0x1820,
        0x1878,
        0x1880,
+       0x1885,
+       0x1887,
        0x18A9,
        0x18AA,
        0x18AB,
@@ -11839,6 +12399,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0x1C5A,
        0x1C7E,
        0x1C80,
+       0x1C89,
        0x1CD0,
        0x1CD3,
        0x1CD4,
@@ -11853,7 +12414,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0x1D00,
        0x1DC0,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1E00,
        0x1E01,
        0x1E02,
@@ -12697,7 +13258,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0xA7A8,
        0xA7A9,
        0xA7AA,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B5,
        0xA7B6,
@@ -12721,7 +13282,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0xA880,
        0xA882,
        0xA8B4,
-       0xA8C5,
+       0xA8C6,
        0xA8CE,
        0xA8D0,
        0xA8DA,
@@ -12969,6 +13530,10 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -13103,6 +13668,8 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0x1123A,
        0x1123B,
        0x1123D,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -13152,6 +13719,13 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x11435,
+       0x11447,
+       0x1144B,
+       0x1144D,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114B0,
        0x114C4,
@@ -13200,6 +13774,23 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C2F,
+       0x11C37,
+       0x11C38,
+       0x11C40,
+       0x11C41,
+       0x11C43,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -13244,6 +13835,12 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0x16F8F,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -13375,10 +13972,26 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8D0,
        0x1E8D7,
+       0x1E900,
+       0x1E922,
+       0x1E944,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -14200,6 +14813,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
        SB_Other,
        SB_OLetter,
        SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_Extend,
+       SB_Format,
        SB_Extend,
        SB_OLetter,
        SB_Extend,
@@ -14404,6 +15021,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
        SB_Other,
        SB_Numeric,
        SB_Other,
+       SB_OLetter,
        SB_Extend,
        SB_Other,
        SB_OLetter,
@@ -14451,6 +15069,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
        SB_Extend,
        SB_OLetter,
        SB_Other,
+       SB_OLetter,
        SB_Extend,
        SB_Other,
        SB_OLetter,
@@ -14692,6 +15311,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
        SB_OLetter,
        SB_Extend,
        SB_OLetter,
+       SB_Extend,
+       SB_OLetter,
        SB_Other,
        SB_OLetter,
        SB_Other,
@@ -14762,6 +15383,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
        SB_Numeric,
        SB_OLetter,
        SB_STerm,
+       SB_Lower,
        SB_Other,
        SB_Extend,
        SB_Other,
@@ -15893,6 +16515,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
        SB_Other,
        SB_Numeric,
        SB_Other,
+       SB_Upper,
+       SB_Other,
+       SB_Lower,
+       SB_Other,
        SB_OLetter,
        SB_Other,
        SB_OLetter,
@@ -16027,6 +16653,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
        SB_Other,
        SB_STerm,
        SB_Other,
+       SB_Extend,
+       SB_Other,
        SB_OLetter,
        SB_Other,
        SB_OLetter,
@@ -16079,6 +16707,13 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
        SB_OLetter,
        SB_Extend,
        SB_OLetter,
+       SB_STerm,
+       SB_Other,
+       SB_Numeric,
+       SB_Other,
+       SB_OLetter,
+       SB_Extend,
+       SB_OLetter,
        SB_Other,
        SB_OLetter,
        SB_Other,
@@ -16127,6 +16762,23 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
        SB_OLetter,
        SB_Other,
        SB_OLetter,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_OLetter,
+       SB_STerm,
+       SB_Other,
+       SB_Numeric,
+       SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_OLetter,
        SB_Other,
        SB_OLetter,
        SB_Other,
@@ -16178,6 +16830,12 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
        SB_Other,
        SB_OLetter,
        SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_OLetter,
+       SB_Other,
        SB_Extend,
        SB_STerm,
        SB_Format,
@@ -16299,10 +16957,26 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
        SB_Other,
        SB_Extend,
        SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
        SB_OLetter,
        SB_Other,
        SB_Extend,
        SB_Other,
+       SB_Upper,
+       SB_Lower,
+       SB_Extend,
+       SB_Other,
+       SB_Numeric,
+       SB_Other,
        SB_OLetter,
        SB_Other,
        SB_OLetter,
@@ -16389,7 +17063,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
        SB_Other,
        SB_Format,
        SB_Other,
-       SB_Format,
+       SB_Extend,
        SB_Other,
        SB_Extend,
        SB_Other
@@ -16400,7 +17074,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
-       1535,   /* Number of elements */
+       1657,   /* Number of elements */
        148565664, /* Version and data structure type */
        0,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -16575,6 +17249,10 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0x85C,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x904,
        0x93A,
@@ -16779,6 +17457,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0xC64,
        0xC66,
        0xC70,
+       0xC80,
        0xC81,
        0xC84,
        0xC85,
@@ -16826,6 +17505,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0xD4A,
        0xD4E,
        0xD4F,
+       0xD54,
        0xD57,
        0xD58,
        0xD5F,
@@ -17013,6 +17693,8 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0x1820,
        0x1878,
        0x1880,
+       0x1885,
+       0x1887,
        0x18A9,
        0x18AA,
        0x18AB,
@@ -17068,6 +17750,8 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0x1C50,
        0x1C5A,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CD0,
        0x1CD3,
        0x1CD4,
@@ -17082,7 +17766,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0x1D00,
        0x1DC0,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1E00,
        0x1F16,
        0x1F18,
@@ -17124,6 +17808,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0x2000,
        0x200B,
        0x200C,
+       0x200D,
        0x200E,
        0x2010,
        0x2018,
@@ -17184,6 +17869,14 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0x2189,
        0x24B6,
        0x24EA,
+       0x261D,
+       0x261E,
+       0x26F9,
+       0x26FA,
+       0x270A,
+       0x270E,
+       0x2764,
+       0x2765,
        0x2C00,
        0x2C2F,
        0x2C30,
@@ -17281,7 +17974,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -17298,7 +17991,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0xA880,
        0xA882,
        0xA8B4,
-       0xA8C5,
+       0xA8C6,
        0xA8D0,
        0xA8DA,
        0xA8E0,
@@ -17508,6 +18201,10 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -17629,6 +18326,8 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0x11213,
        0x1122C,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -17677,6 +18376,12 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x11435,
+       0x11447,
+       0x1144B,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114B0,
        0x114C4,
@@ -17716,6 +18421,22 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C2F,
+       0x11C37,
+       0x11C38,
+       0x11C40,
+       0x11C41,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -17755,6 +18476,8 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0x16F8F,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
        0x1B000,
        0x1B001,
        0x1BC00,
@@ -17855,10 +18578,25 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8D0,
        0x1E8D7,
+       0x1E900,
+       0x1E944,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -17933,6 +18671,64 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
        0x1F18A,
        0x1F1E6,
        0x1F200,
+       0x1F385,
+       0x1F386,
+       0x1F3C3,
+       0x1F3C5,
+       0x1F3CA,
+       0x1F3CC,
+       0x1F3FB,
+       0x1F400,
+       0x1F442,
+       0x1F444,
+       0x1F446,
+       0x1F451,
+       0x1F466,
+       0x1F46A,
+       0x1F46E,
+       0x1F46F,
+       0x1F470,
+       0x1F479,
+       0x1F47C,
+       0x1F47D,
+       0x1F481,
+       0x1F484,
+       0x1F485,
+       0x1F488,
+       0x1F48B,
+       0x1F48C,
+       0x1F4AA,
+       0x1F4AB,
+       0x1F575,
+       0x1F576,
+       0x1F57A,
+       0x1F57B,
+       0x1F590,
+       0x1F591,
+       0x1F595,
+       0x1F597,
+       0x1F5E8,
+       0x1F5E9,
+       0x1F645,
+       0x1F648,
+       0x1F64B,
+       0x1F650,
+       0x1F6A3,
+       0x1F6A4,
+       0x1F6B4,
+       0x1F6B7,
+       0x1F6C0,
+       0x1F6C1,
+       0x1F918,
+       0x1F91F,
+       0x1F926,
+       0x1F927,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93A,
+       0x1F93C,
+       0x1F93F,
        0xE0001,
        0xE0002,
        0xE0020,
@@ -17945,29 +18741,34 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define WB_ENUM_COUNT 20
+#define WB_ENUM_COUNT 25
 
 typedef enum {
        WB_Other = 0,
        WB_ALetter = 1,
        WB_CR = 2,
        WB_Double_Quote = 3,
-       WB_Extend = 4,
-       WB_ExtendNumLet = 5,
-       WB_Format = 6,
-       WB_Hebrew_Letter = 7,
-       WB_Katakana = 8,
-       WB_LF = 9,
-       WB_MidLetter = 10,
-       WB_MidNum = 11,
-       WB_MidNumLet = 12,
-       WB_Newline = 13,
-       WB_Numeric = 14,
-       WB_Perl_Tailored_HSpace = 15,
-       WB_Regional_Indicator = 16,
-       WB_Single_Quote = 17,
-       WB_EDGE = 18,
-       WB_UNKNOWN = 19
+       WB_E_Base = 4,
+       WB_E_Base_GAZ = 5,
+       WB_E_Modifier = 6,
+       WB_Extend = 7,
+       WB_ExtendNumLet = 8,
+       WB_Format = 9,
+       WB_Glue_After_Zwj = 10,
+       WB_Hebrew_Letter = 11,
+       WB_Katakana = 12,
+       WB_LF = 13,
+       WB_MidLetter = 14,
+       WB_MidNum = 15,
+       WB_MidNumLet = 16,
+       WB_Newline = 17,
+       WB_Numeric = 18,
+       WB_Perl_Tailored_HSpace = 19,
+       WB_Regional_Indicator = 20,
+       WB_Single_Quote = 21,
+       WB_ZWJ = 22,
+       WB_EDGE = 23,
+       WB_UNKNOWN = 24
 } WB_enum;
 
 static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
@@ -18142,6 +18943,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_Other,
        WB_ALetter,
        WB_Other,
+       WB_ALetter,
+       WB_Other,
+       WB_Extend,
+       WB_Format,
        WB_Extend,
        WB_ALetter,
        WB_Extend,
@@ -18346,6 +19151,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_Other,
        WB_Numeric,
        WB_Other,
+       WB_ALetter,
        WB_Extend,
        WB_Other,
        WB_ALetter,
@@ -18393,6 +19199,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_Extend,
        WB_ALetter,
        WB_Other,
+       WB_ALetter,
        WB_Extend,
        WB_Other,
        WB_ALetter,
@@ -18582,6 +19389,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_ALetter,
        WB_Extend,
        WB_ALetter,
+       WB_Extend,
+       WB_ALetter,
        WB_Other,
        WB_ALetter,
        WB_Other,
@@ -18635,6 +19444,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_Numeric,
        WB_ALetter,
        WB_Other,
+       WB_ALetter,
+       WB_Other,
        WB_Extend,
        WB_Other,
        WB_Extend,
@@ -18691,6 +19502,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_Perl_Tailored_HSpace,
        WB_Other,
        WB_Extend,
+       WB_ZWJ,
        WB_Format,
        WB_Other,
        WB_MidNumLet,
@@ -18700,7 +19512,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_MidLetter,
        WB_Newline,
        WB_Format,
-       WB_Perl_Tailored_HSpace,
+       WB_ExtendNumLet,
        WB_Other,
        WB_ExtendNumLet,
        WB_Other,
@@ -18751,6 +19563,14 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_Other,
        WB_ALetter,
        WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_Glue_After_Zwj,
+       WB_Other,
        WB_ALetter,
        WB_Other,
        WB_ALetter,
@@ -19114,6 +19934,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_ALetter,
        WB_Other,
        WB_ALetter,
+       WB_Other,
+       WB_ALetter,
+       WB_Other,
+       WB_ALetter,
        WB_Extend,
        WB_Other,
        WB_Extend,
@@ -19196,6 +20020,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_ALetter,
        WB_Extend,
        WB_Other,
+       WB_Extend,
+       WB_Other,
        WB_ALetter,
        WB_Other,
        WB_ALetter,
@@ -19248,6 +20074,12 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_Extend,
        WB_ALetter,
        WB_Other,
+       WB_Numeric,
+       WB_Other,
+       WB_ALetter,
+       WB_Extend,
+       WB_ALetter,
+       WB_Other,
        WB_ALetter,
        WB_Other,
        WB_Numeric,
@@ -19286,6 +20118,22 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_ALetter,
        WB_Other,
        WB_ALetter,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_ALetter,
+       WB_Other,
+       WB_Numeric,
+       WB_Other,
+       WB_ALetter,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_ALetter,
+       WB_Other,
+       WB_ALetter,
        WB_Other,
        WB_ALetter,
        WB_Other,
@@ -19322,6 +20170,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_Extend,
        WB_ALetter,
        WB_Other,
+       WB_ALetter,
+       WB_Other,
        WB_Katakana,
        WB_Other,
        WB_ALetter,
@@ -19422,11 +20272,26 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_Other,
        WB_Extend,
        WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
        WB_ALetter,
        WB_Other,
        WB_Extend,
        WB_Other,
        WB_ALetter,
+       WB_Extend,
+       WB_Other,
+       WB_Numeric,
+       WB_Other,
+       WB_ALetter,
        WB_Other,
        WB_ALetter,
        WB_Other,
@@ -19500,11 +20365,69 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
        WB_Other,
        WB_Regional_Indicator,
        WB_Other,
-       WB_Format,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Modifier,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base_GAZ,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_Glue_After_Zwj,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_Glue_After_Zwj,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
        WB_Other,
        WB_Format,
        WB_Other,
        WB_Extend,
+       WB_Other,
+       WB_Extend,
        WB_Other
 };
 
@@ -19569,7 +20492,7 @@ static const UV XPerlSpace_invlist[] = { /* for ASCII/Latin1 */
 };
 
 static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
-       1297,   /* Number of elements */
+       1357,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -19678,6 +20601,10 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
        0x859,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E0,
        0x8E3,
        0x8EA,
        0x8F0,
@@ -19864,7 +20791,7 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
        0xC64,
        0xC66,
        0xC70,
-       0xC81,
+       0xC80,
        0xC84,
        0xC85,
        0xC8D,
@@ -19908,7 +20835,7 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
        0xD4D,
        0xD4E,
        0xD4F,
-       0xD57,
+       0xD54,
        0xD58,
        0xD5F,
        0xD64,
@@ -20152,6 +21079,8 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
        0x1C4A,
        0x1C4D,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CE9,
        0x1CED,
        0x1CEE,
@@ -20325,7 +21254,7 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -20340,6 +21269,8 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
        0xA874,
        0xA880,
        0xA8C4,
+       0xA8C5,
+       0xA8C6,
        0xA8D0,
        0xA8DA,
        0xA8F2,
@@ -20498,6 +21429,10 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -20600,6 +21535,8 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
        0x11235,
        0x11237,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -20640,6 +21577,14 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
        0x11358,
        0x1135D,
        0x11364,
+       0x11400,
+       0x11442,
+       0x11443,
+       0x11446,
+       0x11447,
+       0x1144B,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114C2,
        0x114C4,
@@ -20678,6 +21623,22 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C3F,
+       0x11C40,
+       0x11C41,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -20712,6 +21673,12 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
        0x16F7F,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -20786,8 +21753,24 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
        0x1D7CC,
        0x1D7CE,
        0x1D800,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
+       0x1E900,
+       0x1E944,
+       0x1E947,
+       0x1E948,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -20873,7 +21856,7 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */
 };
 
 static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
-       1235,   /* Number of elements */
+       1289,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -20982,6 +21965,10 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
        0x859,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E0,
        0x8E3,
        0x8EA,
        0x8F0,
@@ -21158,7 +22145,7 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
        0xC5B,
        0xC60,
        0xC64,
-       0xC81,
+       0xC80,
        0xC84,
        0xC85,
        0xC8D,
@@ -21200,7 +22187,7 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
        0xD4D,
        0xD4E,
        0xD4F,
-       0xD57,
+       0xD54,
        0xD58,
        0xD5F,
        0xD64,
@@ -21422,6 +22409,8 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
        0x1C50,
        0x1C5A,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CE9,
        0x1CED,
        0x1CEE,
@@ -21597,7 +22586,7 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -21612,6 +22601,8 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
        0xA874,
        0xA880,
        0xA8C4,
+       0xA8C5,
+       0xA8C6,
        0xA8F2,
        0xA8F8,
        0xA8FB,
@@ -21762,6 +22753,10 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
        0x103D6,
        0x10400,
        0x1049E,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -21858,6 +22853,8 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
        0x11235,
        0x11237,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -21896,6 +22893,12 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
        0x11358,
        0x1135D,
        0x11364,
+       0x11400,
+       0x11442,
+       0x11443,
+       0x11446,
+       0x11447,
+       0x1144B,
        0x11480,
        0x114C2,
        0x114C4,
@@ -21926,6 +22929,20 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C3F,
+       0x11C40,
+       0x11C41,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -21956,6 +22973,12 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
        0x16F7F,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -22028,8 +23051,22 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */
        0x1D7C3,
        0x1D7C4,
        0x1D7CC,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
+       0x1E900,
+       0x1E944,
+       0x1E947,
+       0x1E948,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -22150,7 +23187,7 @@ static const UV XPosixCntrl_invlist[] = { /* for ASCII/Latin1 */
 };
 
 static const UV XPosixDigit_invlist[] = { /* for ASCII/Latin1 */
-       103,    /* Number of elements */
+       109,    /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -22241,6 +23278,8 @@ static const UV XPosixDigit_invlist[] = { /* for ASCII/Latin1 */
        0x111DA,
        0x112F0,
        0x112FA,
+       0x11450,
+       0x1145A,
        0x114D0,
        0x114DA,
        0x11650,
@@ -22251,16 +23290,20 @@ static const UV XPosixDigit_invlist[] = { /* for ASCII/Latin1 */
        0x1173A,
        0x118E0,
        0x118EA,
+       0x11C50,
+       0x11C5A,
        0x16A60,
        0x16A6A,
        0x16B50,
        0x16B5A,
        0x1D7CE,
-       0x1D800
+       0x1D800,
+       0x1E950,
+       0x1E95A
 };
 
 static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
-       1237,   /* Number of elements */
+       1287,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -22315,7 +23358,9 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x85F,
        0x8A0,
        0x8B5,
-       0x8E3,
+       0x8B6,
+       0x8BE,
+       0x8D4,
        0x984,
        0x985,
        0x98D,
@@ -22488,8 +23533,6 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0xC66,
        0xC70,
        0xC78,
-       0xC80,
-       0xC81,
        0xC84,
        0xC85,
        0xC8D,
@@ -22530,14 +23573,10 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0xD46,
        0xD49,
        0xD4A,
-       0xD4F,
-       0xD57,
-       0xD58,
-       0xD5F,
+       0xD50,
+       0xD54,
        0xD64,
        0xD66,
-       0xD76,
-       0xD79,
        0xD80,
        0xD82,
        0xD84,
@@ -22740,7 +23779,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x1C3B,
        0x1C4A,
        0x1C4D,
-       0x1C80,
+       0x1C89,
        0x1CC0,
        0x1CC8,
        0x1CD0,
@@ -22749,7 +23788,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x1CFA,
        0x1D00,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1F16,
        0x1F18,
        0x1F1E,
@@ -22802,7 +23841,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x2100,
        0x218C,
        0x2190,
-       0x23FB,
+       0x23FF,
        0x2400,
        0x2427,
        0x2440,
@@ -22854,7 +23893,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x2DD8,
        0x2DDF,
        0x2DE0,
-       0x2E43,
+       0x2E45,
        0x2E80,
        0x2E9A,
        0x2E9B,
@@ -22894,7 +23933,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0xA640,
        0xA6F8,
        0xA700,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -22904,7 +23943,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0xA840,
        0xA878,
        0xA880,
-       0xA8C5,
+       0xA8C6,
        0xA8CE,
        0xA8DA,
        0xA8E0,
@@ -23028,7 +24067,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x10107,
        0x10134,
        0x10137,
-       0x1018D,
+       0x1018F,
        0x10190,
        0x1019C,
        0x101A0,
@@ -23057,6 +24096,10 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -23168,7 +24211,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x11200,
        0x11212,
        0x11213,
-       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -23213,6 +24256,12 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x1145A,
+       0x1145B,
+       0x1145C,
+       0x1145D,
+       0x1145E,
        0x11480,
        0x114C8,
        0x114D0,
@@ -23225,6 +24274,8 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x11645,
        0x11650,
        0x1165A,
+       0x11660,
+       0x1166D,
        0x11680,
        0x116B8,
        0x116C0,
@@ -23241,6 +24292,20 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C46,
+       0x11C50,
+       0x11C6D,
+       0x11C70,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -23281,6 +24346,12 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x16F7F,
        0x16F8F,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -23351,10 +24422,26 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8C7,
        0x1E8D7,
+       0x1E900,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
+       0x1E95E,
+       0x1E960,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -23442,25 +24529,21 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x1F130,
        0x1F16C,
        0x1F170,
-       0x1F19B,
+       0x1F1AD,
        0x1F1E6,
        0x1F203,
        0x1F210,
-       0x1F23B,
+       0x1F23C,
        0x1F240,
        0x1F249,
        0x1F250,
        0x1F252,
        0x1F300,
-       0x1F57A,
-       0x1F57B,
-       0x1F5A4,
-       0x1F5A5,
-       0x1F6D1,
+       0x1F6D3,
        0x1F6E0,
        0x1F6ED,
        0x1F6F0,
-       0x1F6F4,
+       0x1F6F7,
        0x1F700,
        0x1F774,
        0x1F780,
@@ -23476,9 +24559,19 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
        0x1F890,
        0x1F8AE,
        0x1F910,
-       0x1F919,
+       0x1F91F,
+       0x1F920,
+       0x1F928,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93F,
+       0x1F940,
+       0x1F94C,
+       0x1F950,
+       0x1F95F,
        0x1F980,
-       0x1F985,
+       0x1F992,
        0x1F9C0,
        0x1F9C1,
        0x20000,
@@ -23504,7 +24597,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */
 };
 
 static const UV XPosixLower_invlist[] = { /* for ASCII/Latin1 */
-       1275,   /* Number of elements */
+       1281,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -24061,6 +25154,8 @@ static const UV XPosixLower_invlist[] = { /* for ASCII/Latin1 */
        0x588,
        0x13F8,
        0x13FE,
+       0x1C80,
+       0x1C89,
        0x1D00,
        0x1DC0,
        0x1E01,
@@ -24723,6 +25818,8 @@ static const UV XPosixLower_invlist[] = { /* for ASCII/Latin1 */
        0xFF5B,
        0x10428,
        0x10450,
+       0x104D8,
+       0x104FC,
        0x10CC0,
        0x10CF3,
        0x118C0,
@@ -24782,11 +25879,13 @@ static const UV XPosixLower_invlist[] = { /* for ASCII/Latin1 */
        0x1D7C4,
        0x1D7CA,
        0x1D7CB,
-       0x1D7CC
+       0x1D7CC,
+       0x1E922,
+       0x1E944
 };
 
 static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
-       1231,   /* Number of elements */
+       1281,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -24841,7 +25940,9 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x85F,
        0x8A0,
        0x8B5,
-       0x8E3,
+       0x8B6,
+       0x8BE,
+       0x8D4,
        0x984,
        0x985,
        0x98D,
@@ -25014,8 +26115,6 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0xC66,
        0xC70,
        0xC78,
-       0xC80,
-       0xC81,
        0xC84,
        0xC85,
        0xC8D,
@@ -25056,14 +26155,10 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0xD46,
        0xD49,
        0xD4A,
-       0xD4F,
-       0xD57,
-       0xD58,
-       0xD5F,
+       0xD50,
+       0xD54,
        0xD64,
        0xD66,
-       0xD76,
-       0xD79,
        0xD80,
        0xD82,
        0xD84,
@@ -25264,7 +26359,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x1C3B,
        0x1C4A,
        0x1C4D,
-       0x1C80,
+       0x1C89,
        0x1CC0,
        0x1CC8,
        0x1CD0,
@@ -25273,7 +26368,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x1CFA,
        0x1D00,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1F16,
        0x1F18,
        0x1F1E,
@@ -25322,7 +26417,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x2100,
        0x218C,
        0x2190,
-       0x23FB,
+       0x23FF,
        0x2400,
        0x2427,
        0x2440,
@@ -25374,7 +26469,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x2DD8,
        0x2DDF,
        0x2DE0,
-       0x2E43,
+       0x2E45,
        0x2E80,
        0x2E9A,
        0x2E9B,
@@ -25414,7 +26509,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0xA640,
        0xA6F8,
        0xA700,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -25424,7 +26519,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0xA840,
        0xA878,
        0xA880,
-       0xA8C5,
+       0xA8C6,
        0xA8CE,
        0xA8DA,
        0xA8E0,
@@ -25548,7 +26643,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x10107,
        0x10134,
        0x10137,
-       0x1018D,
+       0x1018F,
        0x10190,
        0x1019C,
        0x101A0,
@@ -25577,6 +26672,10 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -25688,7 +26787,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x11200,
        0x11212,
        0x11213,
-       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -25733,6 +26832,12 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x1145A,
+       0x1145B,
+       0x1145C,
+       0x1145D,
+       0x1145E,
        0x11480,
        0x114C8,
        0x114D0,
@@ -25745,6 +26850,8 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x11645,
        0x11650,
        0x1165A,
+       0x11660,
+       0x1166D,
        0x11680,
        0x116B8,
        0x116C0,
@@ -25761,6 +26868,20 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C46,
+       0x11C50,
+       0x11C6D,
+       0x11C70,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -25801,6 +26922,12 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x16F7F,
        0x16F8F,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -25871,10 +26998,26 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8C7,
        0x1E8D7,
+       0x1E900,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
+       0x1E95E,
+       0x1E960,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -25962,25 +27105,21 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x1F130,
        0x1F16C,
        0x1F170,
-       0x1F19B,
+       0x1F1AD,
        0x1F1E6,
        0x1F203,
        0x1F210,
-       0x1F23B,
+       0x1F23C,
        0x1F240,
        0x1F249,
        0x1F250,
        0x1F252,
        0x1F300,
-       0x1F57A,
-       0x1F57B,
-       0x1F5A4,
-       0x1F5A5,
-       0x1F6D1,
+       0x1F6D3,
        0x1F6E0,
        0x1F6ED,
        0x1F6F0,
-       0x1F6F4,
+       0x1F6F7,
        0x1F700,
        0x1F774,
        0x1F780,
@@ -25996,9 +27135,19 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
        0x1F890,
        0x1F8AE,
        0x1F910,
-       0x1F919,
+       0x1F91F,
+       0x1F920,
+       0x1F928,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93F,
+       0x1F940,
+       0x1F94C,
+       0x1F950,
+       0x1F95F,
        0x1F980,
-       0x1F985,
+       0x1F992,
        0x1F9C0,
        0x1F9C1,
        0x20000,
@@ -26024,7 +27173,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */
 };
 
 static const UV XPosixPunct_invlist[] = { /* for ASCII/Latin1 */
-       313,    /* Number of elements */
+       327,    /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -26190,7 +27339,7 @@ static const UV XPosixPunct_invlist[] = { /* for ASCII/Latin1 */
        0x2E00,
        0x2E2F,
        0x2E30,
-       0x2E43,
+       0x2E45,
        0x3001,
        0x3004,
        0x3008,
@@ -26319,14 +27468,26 @@ static const UV XPosixPunct_invlist[] = { /* for ASCII/Latin1 */
        0x1123E,
        0x112A9,
        0x112AA,
+       0x1144B,
+       0x11450,
+       0x1145B,
+       0x1145C,
+       0x1145D,
+       0x1145E,
        0x114C6,
        0x114C7,
        0x115C1,
        0x115D8,
        0x11641,
        0x11644,
+       0x11660,
+       0x1166D,
        0x1173C,
        0x1173F,
+       0x11C41,
+       0x11C46,
+       0x11C70,
+       0x11C72,
        0x12470,
        0x12475,
        0x16A6E,
@@ -26340,7 +27501,9 @@ static const UV XPosixPunct_invlist[] = { /* for ASCII/Latin1 */
        0x1BC9F,
        0x1BCA0,
        0x1DA87,
-       0x1DA8C
+       0x1DA8C,
+       0x1E95E,
+       0x1E960
 };
 
 static const UV XPosixSpace_invlist[] = { /* for ASCII/Latin1 */
@@ -26372,7 +27535,7 @@ static const UV XPosixSpace_invlist[] = { /* for ASCII/Latin1 */
 };
 
 static const UV XPosixUpper_invlist[] = { /* for ASCII/Latin1 */
-       1261,   /* Number of elements */
+       1265,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -27556,7 +28719,7 @@ static const UV XPosixUpper_invlist[] = { /* for ASCII/Latin1 */
        0xA7A8,
        0xA7A9,
        0xA7AA,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B5,
        0xA7B6,
@@ -27565,6 +28728,8 @@ static const UV XPosixUpper_invlist[] = { /* for ASCII/Latin1 */
        0xFF3B,
        0x10400,
        0x10428,
+       0x104B0,
+       0x104D4,
        0x10C80,
        0x10CB3,
        0x118A0,
@@ -27631,6 +28796,8 @@ static const UV XPosixUpper_invlist[] = { /* for ASCII/Latin1 */
        0x1D7A9,
        0x1D7CA,
        0x1D7CB,
+       0x1E900,
+       0x1E922,
        0x1F130,
        0x1F14A,
        0x1F150,
@@ -27640,7 +28807,7 @@ static const UV XPosixUpper_invlist[] = { /* for ASCII/Latin1 */
 };
 
 static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
-       1311,   /* Number of elements */
+       1361,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -27743,6 +28910,10 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
        0x85C,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x964,
        0x966,
@@ -27921,7 +29092,7 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
        0xC64,
        0xC66,
        0xC70,
-       0xC81,
+       0xC80,
        0xC84,
        0xC85,
        0xC8D,
@@ -27963,7 +29134,7 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
        0xD49,
        0xD4A,
        0xD4F,
-       0xD57,
+       0xD54,
        0xD58,
        0xD5F,
        0xD64,
@@ -28199,6 +29370,8 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
        0x1C4A,
        0x1C4D,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CD0,
        0x1CD3,
        0x1CD4,
@@ -28207,7 +29380,7 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
        0x1CFA,
        0x1D00,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1F16,
        0x1F18,
        0x1F1E,
@@ -28378,7 +29551,7 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -28386,7 +29559,7 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
        0xA840,
        0xA874,
        0xA880,
-       0xA8C5,
+       0xA8C6,
        0xA8D0,
        0xA8DA,
        0xA8E0,
@@ -28551,6 +29724,10 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -28655,6 +29832,8 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
        0x11212,
        0x11213,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -28699,6 +29878,10 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x1144B,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114C6,
        0x114C7,
@@ -28733,6 +29916,20 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C41,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -28769,6 +29966,12 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
        0x16F7F,
        0x16F8F,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -28867,10 +30070,24 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8D0,
        0x1E8D7,
+       0x1E900,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -29050,7 +30267,7 @@ static const UV ASCII_invlist[] = { /* for EBCDIC 1047 */
 };
 
 static const UV Cased_invlist[] = { /* for EBCDIC 1047 */
-       289,    /* Number of elements */
+       297,    /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -29145,6 +30362,8 @@ static const UV Cased_invlist[] = { /* for EBCDIC 1047 */
        0x13F6,
        0x13F8,
        0x13FE,
+       0x1C80,
+       0x1C89,
        0x1D00,
        0x1DC0,
        0x1E00,
@@ -29250,7 +30469,7 @@ static const UV Cased_invlist[] = { /* for EBCDIC 1047 */
        0xA78B,
        0xA78F,
        0xA790,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F8,
@@ -29271,6 +30490,10 @@ static const UV Cased_invlist[] = { /* for EBCDIC 1047 */
        0xFF5B,
        0x10400,
        0x10450,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10C80,
        0x10CB3,
        0x10CC0,
@@ -29337,6 +30560,8 @@ static const UV Cased_invlist[] = { /* for EBCDIC 1047 */
        0x1D7C3,
        0x1D7C4,
        0x1D7CC,
+       0x1E900,
+       0x1E944,
        0x1F130,
        0x1F14A,
        0x1F150,
@@ -29402,7 +30627,7 @@ static const UV NonL1_Perl_Non_Final_Folds_invlist[] = { /* for EBCDIC 1047 */
 };
 
 static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 1047 */
-       279,    /* Number of elements */
+       285,    /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -29484,8 +30709,6 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 1047 */
        0x265,
        0x267,
        0x268,
-       0x26A,
-       0x26B,
        0x26D,
        0x26F,
        0x270,
@@ -29565,6 +30788,8 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 1047 */
        0x13F6,
        0x13F8,
        0x13FE,
+       0x1C80,
+       0x1C89,
        0x1D79,
        0x1D7A,
        0x1D7D,
@@ -29662,7 +30887,7 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 1047 */
        0xA790,
        0xA794,
        0xA796,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xAB53,
@@ -29679,12 +30904,18 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 1047 */
        0xFF5B,
        0x10400,
        0x10450,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10C80,
        0x10CB3,
        0x10CC0,
        0x10CF3,
        0x118A0,
-       0x118E0
+       0x118E0,
+       0x1E900,
+       0x1E944
 };
 
 static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for EBCDIC 1047 */
@@ -29758,7 +30989,7 @@ static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for EBCDIC 1047 */
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
-       1502,   /* Number of elements */
+       1615,   /* Number of elements */
        148565664, /* Version and data structure type */
        0,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -29825,6 +31056,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
        0x82E,
        0x859,
        0x85C,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x903,
        0x904,
@@ -29973,6 +31206,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
        0xD4A,
        0xD4D,
        0xD4E,
+       0xD4F,
        0xD57,
        0xD58,
        0xD62,
@@ -30081,6 +31315,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
        0x180B,
        0x180E,
        0x180F,
+       0x1885,
+       0x1887,
        0x18A9,
        0x18AA,
        0x1920,
@@ -30167,10 +31403,11 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
        0x1CFA,
        0x1DC0,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1E00,
        0x200B,
        0x200C,
+       0x200D,
        0x200E,
        0x2010,
        0x2028,
@@ -30179,6 +31416,14 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
        0x2070,
        0x20D0,
        0x20F1,
+       0x261D,
+       0x261E,
+       0x26F9,
+       0x26FA,
+       0x270A,
+       0x270E,
+       0x2764,
+       0x2765,
        0x2CEF,
        0x2CF2,
        0x2D7F,
@@ -30211,7 +31456,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
        0xA882,
        0xA8B4,
        0xA8C4,
-       0xA8C5,
+       0xA8C6,
        0xA8E0,
        0xA8F2,
        0xA926,
@@ -31138,6 +32383,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
        0x111B6,
        0x111BF,
        0x111C1,
+       0x111C2,
+       0x111C4,
        0x111CA,
        0x111CD,
        0x1122C,
@@ -31147,6 +32394,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
        0x11235,
        0x11236,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x112DF,
        0x112E0,
        0x112E3,
@@ -31173,6 +32422,13 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11435,
+       0x11438,
+       0x11440,
+       0x11442,
+       0x11445,
+       0x11446,
+       0x11447,
        0x114B0,
        0x114B1,
        0x114B3,
@@ -31217,6 +32473,22 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
        0x11726,
        0x11727,
        0x1172C,
+       0x11C2F,
+       0x11C30,
+       0x11C37,
+       0x11C38,
+       0x11C3E,
+       0x11C3F,
+       0x11C40,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CAA,
+       0x11CB1,
+       0x11CB2,
+       0x11CB4,
+       0x11CB5,
+       0x11CB7,
        0x16AF0,
        0x16AF5,
        0x16B30,
@@ -31256,11 +32528,83 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E8D0,
        0x1E8D7,
+       0x1E944,
+       0x1E94B,
        0x1F1E6,
        0x1F200,
+       0x1F385,
+       0x1F386,
+       0x1F3C3,
+       0x1F3C5,
+       0x1F3CA,
+       0x1F3CC,
+       0x1F3FB,
+       0x1F400,
+       0x1F442,
+       0x1F444,
+       0x1F446,
+       0x1F451,
+       0x1F466,
+       0x1F46A,
+       0x1F46E,
+       0x1F46F,
+       0x1F470,
+       0x1F479,
+       0x1F47C,
+       0x1F47D,
+       0x1F481,
+       0x1F484,
+       0x1F485,
+       0x1F488,
+       0x1F48B,
+       0x1F48C,
+       0x1F4AA,
+       0x1F4AB,
+       0x1F575,
+       0x1F576,
+       0x1F57A,
+       0x1F57B,
+       0x1F590,
+       0x1F591,
+       0x1F595,
+       0x1F597,
+       0x1F5E8,
+       0x1F5E9,
+       0x1F645,
+       0x1F648,
+       0x1F64B,
+       0x1F650,
+       0x1F6A3,
+       0x1F6A4,
+       0x1F6B4,
+       0x1F6B7,
+       0x1F6C0,
+       0x1F6C1,
+       0x1F918,
+       0x1F91F,
+       0x1F926,
+       0x1F927,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93A,
+       0x1F93C,
+       0x1F93F,
        0xE0000,
+       0xE0020,
+       0xE0080,
        0xE0100,
        0xE01F0,
        0xE1000
@@ -31270,23 +32614,28 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define GCB_ENUM_COUNT 14
+#define GCB_ENUM_COUNT 19
 
 typedef enum {
        GCB_Other = 0,
        GCB_CR = 1,
        GCB_Control = 2,
-       GCB_Extend = 3,
-       GCB_L = 4,
-       GCB_LF = 5,
-       GCB_LV = 6,
-       GCB_LVT = 7,
-       GCB_Prepend = 8,
-       GCB_Regional_Indicator = 9,
-       GCB_SpacingMark = 10,
-       GCB_T = 11,
-       GCB_V = 12,
-       GCB_EDGE = 13
+       GCB_E_Base = 3,
+       GCB_E_Base_GAZ = 4,
+       GCB_E_Modifier = 5,
+       GCB_Extend = 6,
+       GCB_Glue_After_Zwj = 7,
+       GCB_L = 8,
+       GCB_LF = 9,
+       GCB_LV = 10,
+       GCB_LVT = 11,
+       GCB_Prepend = 12,
+       GCB_Regional_Indicator = 13,
+       GCB_SpacingMark = 14,
+       GCB_T = 15,
+       GCB_V = 16,
+       GCB_ZWJ = 17,
+       GCB_EDGE = 18
 } GCB_enum;
 
 static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
@@ -31314,7 +32663,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
-       GCB_Control,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -31325,7 +32674,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
-       GCB_Control,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -31333,7 +32682,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
-       GCB_Control,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -31354,6 +32703,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
+       GCB_Prepend,
+       GCB_Extend,
        GCB_SpacingMark,
        GCB_Other,
        GCB_Extend,
@@ -31500,6 +32851,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_Other,
        GCB_SpacingMark,
        GCB_Extend,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -31612,6 +32964,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
        GCB_SpacingMark,
        GCB_Extend,
        GCB_SpacingMark,
@@ -31699,6 +33053,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_Other,
        GCB_Control,
        GCB_Extend,
+       GCB_ZWJ,
        GCB_Control,
        GCB_Other,
        GCB_Control,
@@ -31707,6 +33062,14 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_Glue_After_Zwj,
+       GCB_Other,
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
@@ -32649,7 +34012,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_SpacingMark,
        GCB_Extend,
        GCB_Other,
-       GCB_Control,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -32666,6 +34029,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_Extend,
        GCB_SpacingMark,
        GCB_Other,
+       GCB_Prepend,
+       GCB_Other,
        GCB_Extend,
        GCB_Other,
        GCB_SpacingMark,
@@ -32676,6 +34041,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
        GCB_SpacingMark,
        GCB_Extend,
        GCB_Other,
@@ -32701,6 +34068,13 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_Other,
        GCB_Extend,
        GCB_SpacingMark,
        GCB_Extend,
@@ -32745,6 +34119,22 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_SpacingMark,
        GCB_Extend,
        GCB_Other,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_Other,
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
@@ -32786,8 +34176,80 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
        GCB_Regional_Indicator,
        GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Modifier,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base_GAZ,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_Glue_After_Zwj,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_Glue_After_Zwj,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_Control,
+       GCB_Extend,
        GCB_Control,
        GCB_Extend,
        GCB_Control,
@@ -32799,7 +34261,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
 #if defined(PERL_IN_UTF8_C)
 
 static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
-       1341,   /* Number of elements */
+       1391,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -32928,6 +34390,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
        0x85C,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x964,
        0x966,
@@ -33106,7 +34572,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
        0xC64,
        0xC66,
        0xC70,
-       0xC81,
+       0xC80,
        0xC84,
        0xC85,
        0xC8D,
@@ -33148,7 +34614,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
        0xD49,
        0xD4A,
        0xD4F,
-       0xD57,
+       0xD54,
        0xD58,
        0xD5F,
        0xD64,
@@ -33384,6 +34850,8 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
        0x1C4A,
        0x1C4D,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CD0,
        0x1CD3,
        0x1CD4,
@@ -33392,7 +34860,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
        0x1CFA,
        0x1D00,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1F16,
        0x1F18,
        0x1F1E,
@@ -33561,7 +35029,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -33569,7 +35037,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
        0xA840,
        0xA874,
        0xA880,
-       0xA8C5,
+       0xA8C6,
        0xA8D0,
        0xA8DA,
        0xA8E0,
@@ -33746,6 +35214,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -33850,6 +35322,8 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
        0x11212,
        0x11213,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -33894,6 +35368,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x1144B,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114C6,
        0x114C7,
@@ -33928,6 +35406,20 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C41,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -33964,6 +35456,12 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
        0x16F7F,
        0x16F8F,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -34062,10 +35560,24 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8D0,
        0x1E8D7,
+       0x1E900,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -34147,7 +35659,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */
 };
 
 static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */
-       1155,   /* Number of elements */
+       1187,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -34278,6 +35790,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */
        0x859,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
        0x904,
        0x93A,
        0x93D,
@@ -34406,6 +35920,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */
        0xC5B,
        0xC60,
        0xC62,
+       0xC80,
+       0xC81,
        0xC85,
        0xC8D,
        0xC8E,
@@ -34434,6 +35950,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */
        0xD3E,
        0xD4E,
        0xD4F,
+       0xD54,
+       0xD57,
        0xD5F,
        0xD62,
        0xD7A,
@@ -34628,6 +36146,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */
        0x1C50,
        0x1C5A,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CE9,
        0x1CED,
        0x1CEE,
@@ -34795,7 +36315,7 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -34982,6 +36502,10 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */
        0x103D6,
        0x10400,
        0x1049E,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -35104,6 +36628,10 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */
        0x11351,
        0x1135D,
        0x11362,
+       0x11400,
+       0x11435,
+       0x11447,
+       0x1144B,
        0x11480,
        0x114B0,
        0x114C4,
@@ -35128,6 +36656,14 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C2F,
+       0x11C40,
+       0x11C41,
+       0x11C72,
+       0x11C90,
        0x12000,
        0x1239A,
        0x12400,
@@ -35158,6 +36694,12 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */
        0x16F51,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -35230,6 +36772,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */
        0x1D7CC,
        0x1E800,
        0x1E8C5,
+       0x1E900,
+       0x1E944,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -35313,7 +36857,7 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
-       2168,   /* Number of elements */
+       2279,   /* Number of elements */
        148565664, /* Version and data structure type */
        0,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -35471,6 +37015,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x82E,
        0x859,
        0x85C,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x904,
        0x93A,
@@ -35768,6 +37314,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x180F,
        0x1810,
        0x181A,
+       0x1885,
+       0x1887,
        0x18A9,
        0x18AA,
        0x1920,
@@ -35832,7 +37380,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x1CFA,
        0x1DC0,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1E00,
        0x1FFD,
        0x1FFE,
@@ -35841,6 +37389,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x2008,
        0x200B,
        0x200C,
+       0x200D,
+       0x200E,
        0x2010,
        0x2011,
        0x2012,
@@ -35923,6 +37473,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x2618,
        0x2619,
        0x261A,
+       0x261D,
+       0x261E,
        0x2620,
        0x2639,
        0x263C,
@@ -35949,15 +37501,19 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x26F1,
        0x26F6,
        0x26F7,
+       0x26F9,
+       0x26FA,
        0x26FB,
        0x26FD,
        0x2705,
        0x2708,
+       0x270A,
        0x270E,
        0x275B,
        0x2761,
        0x2762,
        0x2764,
+       0x2765,
        0x2768,
        0x2769,
        0x276A,
@@ -36062,6 +37618,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x2E40,
        0x2E42,
        0x2E43,
+       0x2E45,
        0x2E80,
        0x2E9A,
        0x2E9B,
@@ -36212,7 +37769,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0xA880,
        0xA882,
        0xA8B4,
-       0xA8C5,
+       0xA8C6,
        0xA8CE,
        0xA8D0,
        0xA8DA,
@@ -37187,6 +38744,15 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0xFF71,
        0xFF9E,
        0xFFA0,
+       0xFFBF,
+       0xFFC2,
+       0xFFC8,
+       0xFFCA,
+       0xFFD0,
+       0xFFD2,
+       0xFFD8,
+       0xFFDA,
+       0xFFDD,
        0xFFE0,
        0xFFE1,
        0xFFE2,
@@ -37279,6 +38845,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x1123A,
        0x1123B,
        0x1123D,
+       0x1123E,
+       0x1123F,
        0x112A9,
        0x112AA,
        0x112DF,
@@ -37303,6 +38871,14 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11435,
+       0x11447,
+       0x1144B,
+       0x1144F,
+       0x11450,
+       0x1145A,
+       0x1145B,
+       0x1145C,
        0x114B0,
        0x114C4,
        0x114D0,
@@ -37323,6 +38899,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x11643,
        0x11650,
        0x1165A,
+       0x11660,
+       0x1166D,
        0x116AB,
        0x116B8,
        0x116C0,
@@ -37335,6 +38913,21 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x1173F,
        0x118E0,
        0x118EA,
+       0x11C2F,
+       0x11C37,
+       0x11C38,
+       0x11C40,
+       0x11C41,
+       0x11C46,
+       0x11C50,
+       0x11C5A,
+       0x11C70,
+       0x11C71,
+       0x11C72,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12470,
        0x12475,
        0x13258,
@@ -37371,6 +38964,12 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x16F7F,
        0x16F8F,
        0x16F93,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC9D,
@@ -37403,44 +39002,73 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E8D0,
        0x1E8D7,
+       0x1E944,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
+       0x1E95E,
+       0x1E960,
        0x1F000,
-       0x1F02C,
-       0x1F030,
-       0x1F094,
-       0x1F0A0,
-       0x1F0AF,
-       0x1F0B1,
-       0x1F0C0,
-       0x1F0C1,
-       0x1F0D0,
-       0x1F0D1,
-       0x1F0F6,
+       0x1F100,
+       0x1F10D,
+       0x1F110,
+       0x1F12F,
+       0x1F130,
+       0x1F16C,
+       0x1F170,
+       0x1F1AD,
        0x1F1E6,
        0x1F200,
-       0x1F203,
-       0x1F210,
-       0x1F23B,
-       0x1F240,
-       0x1F249,
-       0x1F250,
-       0x1F252,
-       0x1F300,
+       0x1F385,
+       0x1F386,
        0x1F39C,
        0x1F39E,
        0x1F3B5,
        0x1F3B7,
        0x1F3BC,
        0x1F3BD,
+       0x1F3C3,
+       0x1F3C5,
+       0x1F3CA,
+       0x1F3CC,
        0x1F3FB,
        0x1F400,
+       0x1F442,
+       0x1F444,
+       0x1F446,
+       0x1F451,
+       0x1F466,
+       0x1F46A,
+       0x1F46E,
+       0x1F46F,
+       0x1F470,
+       0x1F479,
+       0x1F47C,
+       0x1F47D,
+       0x1F481,
+       0x1F484,
+       0x1F485,
+       0x1F488,
        0x1F4A0,
        0x1F4A1,
        0x1F4A2,
        0x1F4A3,
        0x1F4A4,
        0x1F4A5,
+       0x1F4AA,
+       0x1F4AB,
        0x1F4AF,
        0x1F4B0,
        0x1F4B1,
@@ -37451,30 +39079,57 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
        0x1F525,
        0x1F532,
        0x1F54A,
+       0x1F575,
+       0x1F576,
        0x1F57A,
        0x1F57B,
-       0x1F5A4,
-       0x1F5A5,
+       0x1F590,
+       0x1F591,
+       0x1F595,
+       0x1F597,
        0x1F5D4,
        0x1F5DC,
        0x1F5F4,
        0x1F5FA,
+       0x1F645,
+       0x1F648,
+       0x1F64B,
        0x1F650,
        0x1F676,
        0x1F679,
        0x1F67C,
        0x1F680,
-       0x1F6D1,
-       0x1F6E0,
-       0x1F6ED,
-       0x1F6F0,
-       0x1F6F4,
-       0x1F910,
-       0x1F919,
-       0x1F980,
-       0x1F985,
-       0x1F9C0,
-       0x1F9C1,
+       0x1F6A3,
+       0x1F6A4,
+       0x1F6B4,
+       0x1F6B7,
+       0x1F6C0,
+       0x1F6C1,
+       0x1F700,
+       0x1F774,
+       0x1F780,
+       0x1F7D5,
+       0x1F800,
+       0x1F80C,
+       0x1F810,
+       0x1F848,
+       0x1F850,
+       0x1F85A,
+       0x1F860,
+       0x1F888,
+       0x1F890,
+       0x1F8AE,
+       0x1F918,
+       0x1F91F,
+       0x1F926,
+       0x1F927,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93A,
+       0x1F93C,
+       0x1F93F,
+       0x1FFFE,
        0x20000,
        0x2FFFE,
        0x30000,
@@ -37491,7 +39146,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define LB_ENUM_COUNT 36
+#define LB_ENUM_COUNT 39
 
 typedef enum {
        LB_Alphabetic = 0,
@@ -37504,32 +39159,35 @@ typedef enum {
        LB_Close_Punctuation = 7,
        LB_Combining_Mark = 8,
        LB_Contingent_Break = 9,
-       LB_Exclamation = 10,
-       LB_Glue = 11,
-       LB_H2 = 12,
-       LB_H3 = 13,
-       LB_Hebrew_Letter = 14,
-       LB_Hyphen = 15,
-       LB_Ideographic = 16,
-       LB_Infix_Numeric = 17,
-       LB_Inseparable = 18,
-       LB_JL = 19,
-       LB_JT = 20,
-       LB_JV = 21,
-       LB_Line_Feed = 22,
-       LB_Mandatory_Break = 23,
-       LB_Next_Line = 24,
-       LB_Nonstarter = 25,
-       LB_Numeric = 26,
-       LB_Open_Punctuation = 27,
-       LB_Postfix_Numeric = 28,
-       LB_Prefix_Numeric = 29,
-       LB_Quotation = 30,
-       LB_Regional_Indicator = 31,
-       LB_Space = 32,
-       LB_Word_Joiner = 33,
-       LB_ZWSpace = 34,
-       LB_EDGE = 35
+       LB_E_Base = 10,
+       LB_E_Modifier = 11,
+       LB_Exclamation = 12,
+       LB_Glue = 13,
+       LB_H2 = 14,
+       LB_H3 = 15,
+       LB_Hebrew_Letter = 16,
+       LB_Hyphen = 17,
+       LB_Ideographic = 18,
+       LB_Infix_Numeric = 19,
+       LB_Inseparable = 20,
+       LB_JL = 21,
+       LB_JT = 22,
+       LB_JV = 23,
+       LB_Line_Feed = 24,
+       LB_Mandatory_Break = 25,
+       LB_Next_Line = 26,
+       LB_Nonstarter = 27,
+       LB_Numeric = 28,
+       LB_Open_Punctuation = 29,
+       LB_Postfix_Numeric = 30,
+       LB_Prefix_Numeric = 31,
+       LB_Quotation = 32,
+       LB_Regional_Indicator = 33,
+       LB_Space = 34,
+       LB_Word_Joiner = 35,
+       LB_ZWJ = 36,
+       LB_ZWSpace = 37,
+       LB_EDGE = 38
 } LB_enum;
 
 static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
@@ -37696,6 +39354,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Combining_Mark,
        LB_Alphabetic,
        LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
        LB_Break_After,
        LB_Numeric,
        LB_Alphabetic,
@@ -37990,6 +39650,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
        LB_Exclamation,
        LB_Numeric,
        LB_Alphabetic,
@@ -38057,6 +39719,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Break_After,
        LB_ZWSpace,
        LB_Combining_Mark,
+       LB_ZWJ,
+       LB_Combining_Mark,
        LB_Break_After,
        LB_Glue,
        LB_Break_After,
@@ -38139,6 +39803,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -38165,14 +39831,18 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
        LB_Alphabetic,
        LB_Quotation,
        LB_Alphabetic,
        LB_Exclamation,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Open_Punctuation,
        LB_Close_Punctuation,
@@ -38277,6 +39947,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Alphabetic,
        LB_Break_After,
        LB_Open_Punctuation,
+       LB_Break_After,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -39398,10 +41069,19 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Open_Punctuation,
        LB_Close_Punctuation,
        LB_Nonstarter,
-       LB_Alphabetic,
+       LB_Ideographic,
        LB_Nonstarter,
-       LB_Alphabetic,
+       LB_Ideographic,
        LB_Nonstarter,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Postfix_Numeric,
        LB_Prefix_Numeric,
@@ -39495,6 +41175,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Alphabetic,
        LB_Break_After,
        LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
        LB_Break_After,
        LB_Alphabetic,
        LB_Combining_Mark,
@@ -39521,6 +41203,14 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
+       LB_Break_After,
+       LB_Alphabetic,
+       LB_Numeric,
+       LB_Alphabetic,
+       LB_Break_After,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
        LB_Numeric,
        LB_Alphabetic,
        LB_Combining_Mark,
@@ -39539,6 +41229,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Alphabetic,
        LB_Numeric,
        LB_Alphabetic,
+       LB_Break_Before,
+       LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
        LB_Numeric,
@@ -39551,6 +41243,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Alphabetic,
        LB_Numeric,
        LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Break_After,
+       LB_Alphabetic,
+       LB_Numeric,
+       LB_Alphabetic,
+       LB_Break_Before,
+       LB_Exclamation,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
        LB_Break_After,
        LB_Alphabetic,
        LB_Open_Punctuation,
@@ -39587,6 +41294,12 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
+       LB_Nonstarter,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Combining_Mark,
@@ -39621,9 +41334,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
-       LB_Ideographic,
+       LB_Combining_Mark,
        LB_Alphabetic,
-       LB_Ideographic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Numeric,
+       LB_Alphabetic,
+       LB_Open_Punctuation,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -39633,9 +41358,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
+       LB_Ideographic,
        LB_Regional_Indicator,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
@@ -39643,17 +41369,27 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Modifier,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
@@ -39661,6 +41397,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -39671,15 +41409,34 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
        LB_Alphabetic,
        LB_Quotation,
        LB_Nonstarter,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -39692,6 +41449,18 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -39708,7 +41477,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
-       2920,   /* Number of elements */
+       2981,   /* Number of elements */
        148565664, /* Version and data structure type */
        0,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -40439,6 +42208,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0x85C,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x904,
        0x93A,
@@ -40643,6 +42416,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0xC64,
        0xC66,
        0xC70,
+       0xC80,
        0xC81,
        0xC84,
        0xC85,
@@ -40690,6 +42464,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0xD4A,
        0xD4E,
        0xD4F,
+       0xD54,
        0xD57,
        0xD58,
        0xD5F,
@@ -40929,6 +42704,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0x1820,
        0x1878,
        0x1880,
+       0x1885,
+       0x1887,
        0x18A9,
        0x18AA,
        0x18AB,
@@ -41002,6 +42779,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0x1C5A,
        0x1C7E,
        0x1C80,
+       0x1C89,
        0x1CD0,
        0x1CD3,
        0x1CD4,
@@ -41016,7 +42794,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0x1D00,
        0x1DC0,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1E00,
        0x1E01,
        0x1E02,
@@ -41860,7 +43638,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0xA7A8,
        0xA7A9,
        0xA7AA,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B5,
        0xA7B6,
@@ -41884,7 +43662,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0xA880,
        0xA882,
        0xA8B4,
-       0xA8C5,
+       0xA8C6,
        0xA8CE,
        0xA8D0,
        0xA8DA,
@@ -42132,6 +43910,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -42266,6 +44048,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0x1123A,
        0x1123B,
        0x1123D,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -42315,6 +44099,13 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x11435,
+       0x11447,
+       0x1144B,
+       0x1144D,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114B0,
        0x114C4,
@@ -42363,6 +44154,23 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C2F,
+       0x11C37,
+       0x11C38,
+       0x11C40,
+       0x11C41,
+       0x11C43,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -42407,6 +44215,12 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0x16F8F,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -42538,10 +44352,26 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8D0,
        0x1E8D7,
+       0x1E900,
+       0x1E922,
+       0x1E944,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -43387,6 +45217,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
        SB_Other,
        SB_OLetter,
        SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_Extend,
+       SB_Format,
        SB_Extend,
        SB_OLetter,
        SB_Extend,
@@ -43591,6 +45425,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
        SB_Other,
        SB_Numeric,
        SB_Other,
+       SB_OLetter,
        SB_Extend,
        SB_Other,
        SB_OLetter,
@@ -43638,6 +45473,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
        SB_Extend,
        SB_OLetter,
        SB_Other,
+       SB_OLetter,
        SB_Extend,
        SB_Other,
        SB_OLetter,
@@ -43879,6 +45715,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
        SB_OLetter,
        SB_Extend,
        SB_OLetter,
+       SB_Extend,
+       SB_OLetter,
        SB_Other,
        SB_OLetter,
        SB_Other,
@@ -43949,6 +45787,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
        SB_Numeric,
        SB_OLetter,
        SB_STerm,
+       SB_Lower,
        SB_Other,
        SB_Extend,
        SB_Other,
@@ -45080,6 +46919,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
        SB_Other,
        SB_Numeric,
        SB_Other,
+       SB_Upper,
+       SB_Other,
+       SB_Lower,
+       SB_Other,
        SB_OLetter,
        SB_Other,
        SB_OLetter,
@@ -45214,6 +47057,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
        SB_Other,
        SB_STerm,
        SB_Other,
+       SB_Extend,
+       SB_Other,
        SB_OLetter,
        SB_Other,
        SB_OLetter,
@@ -45266,6 +47111,13 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
        SB_OLetter,
        SB_Extend,
        SB_OLetter,
+       SB_STerm,
+       SB_Other,
+       SB_Numeric,
+       SB_Other,
+       SB_OLetter,
+       SB_Extend,
+       SB_OLetter,
        SB_Other,
        SB_OLetter,
        SB_Other,
@@ -45314,6 +47166,23 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
        SB_OLetter,
        SB_Other,
        SB_OLetter,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_OLetter,
+       SB_STerm,
+       SB_Other,
+       SB_Numeric,
+       SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_OLetter,
        SB_Other,
        SB_OLetter,
        SB_Other,
@@ -45365,6 +47234,12 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
        SB_Other,
        SB_OLetter,
        SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_OLetter,
+       SB_Other,
        SB_Extend,
        SB_STerm,
        SB_Format,
@@ -45486,10 +47361,26 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
        SB_Other,
        SB_Extend,
        SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
        SB_OLetter,
        SB_Other,
        SB_Extend,
        SB_Other,
+       SB_Upper,
+       SB_Lower,
+       SB_Extend,
+       SB_Other,
+       SB_Numeric,
+       SB_Other,
        SB_OLetter,
        SB_Other,
        SB_OLetter,
@@ -45576,7 +47467,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
        SB_Other,
        SB_Format,
        SB_Other,
-       SB_Format,
+       SB_Extend,
        SB_Other,
        SB_Extend,
        SB_Other
@@ -45587,7 +47478,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
-       1558,   /* Number of elements */
+       1680,   /* Number of elements */
        148565664, /* Version and data structure type */
        0,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -45785,6 +47676,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0x85C,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x904,
        0x93A,
@@ -45989,6 +47884,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0xC64,
        0xC66,
        0xC70,
+       0xC80,
        0xC81,
        0xC84,
        0xC85,
@@ -46036,6 +47932,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0xD4A,
        0xD4E,
        0xD4F,
+       0xD54,
        0xD57,
        0xD58,
        0xD5F,
@@ -46223,6 +48120,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0x1820,
        0x1878,
        0x1880,
+       0x1885,
+       0x1887,
        0x18A9,
        0x18AA,
        0x18AB,
@@ -46278,6 +48177,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0x1C50,
        0x1C5A,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CD0,
        0x1CD3,
        0x1CD4,
@@ -46292,7 +48193,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0x1D00,
        0x1DC0,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1E00,
        0x1F16,
        0x1F18,
@@ -46334,6 +48235,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0x2000,
        0x200B,
        0x200C,
+       0x200D,
        0x200E,
        0x2010,
        0x2018,
@@ -46394,6 +48296,14 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0x2189,
        0x24B6,
        0x24EA,
+       0x261D,
+       0x261E,
+       0x26F9,
+       0x26FA,
+       0x270A,
+       0x270E,
+       0x2764,
+       0x2765,
        0x2C00,
        0x2C2F,
        0x2C30,
@@ -46491,7 +48401,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -46508,7 +48418,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0xA880,
        0xA882,
        0xA8B4,
-       0xA8C5,
+       0xA8C6,
        0xA8D0,
        0xA8DA,
        0xA8E0,
@@ -46718,6 +48628,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -46839,6 +48753,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0x11213,
        0x1122C,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -46887,6 +48803,12 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x11435,
+       0x11447,
+       0x1144B,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114B0,
        0x114C4,
@@ -46926,6 +48848,22 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C2F,
+       0x11C37,
+       0x11C38,
+       0x11C40,
+       0x11C41,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -46965,6 +48903,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0x16F8F,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
        0x1B000,
        0x1B001,
        0x1BC00,
@@ -47065,10 +49005,25 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8D0,
        0x1E8D7,
+       0x1E900,
+       0x1E944,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -47143,6 +49098,64 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
        0x1F18A,
        0x1F1E6,
        0x1F200,
+       0x1F385,
+       0x1F386,
+       0x1F3C3,
+       0x1F3C5,
+       0x1F3CA,
+       0x1F3CC,
+       0x1F3FB,
+       0x1F400,
+       0x1F442,
+       0x1F444,
+       0x1F446,
+       0x1F451,
+       0x1F466,
+       0x1F46A,
+       0x1F46E,
+       0x1F46F,
+       0x1F470,
+       0x1F479,
+       0x1F47C,
+       0x1F47D,
+       0x1F481,
+       0x1F484,
+       0x1F485,
+       0x1F488,
+       0x1F48B,
+       0x1F48C,
+       0x1F4AA,
+       0x1F4AB,
+       0x1F575,
+       0x1F576,
+       0x1F57A,
+       0x1F57B,
+       0x1F590,
+       0x1F591,
+       0x1F595,
+       0x1F597,
+       0x1F5E8,
+       0x1F5E9,
+       0x1F645,
+       0x1F648,
+       0x1F64B,
+       0x1F650,
+       0x1F6A3,
+       0x1F6A4,
+       0x1F6B4,
+       0x1F6B7,
+       0x1F6C0,
+       0x1F6C1,
+       0x1F918,
+       0x1F91F,
+       0x1F926,
+       0x1F927,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93A,
+       0x1F93C,
+       0x1F93F,
        0xE0001,
        0xE0002,
        0xE0020,
@@ -47155,29 +49168,34 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define WB_ENUM_COUNT 20
+#define WB_ENUM_COUNT 25
 
 typedef enum {
        WB_Other = 0,
        WB_ALetter = 1,
        WB_CR = 2,
        WB_Double_Quote = 3,
-       WB_Extend = 4,
-       WB_ExtendNumLet = 5,
-       WB_Format = 6,
-       WB_Hebrew_Letter = 7,
-       WB_Katakana = 8,
-       WB_LF = 9,
-       WB_MidLetter = 10,
-       WB_MidNum = 11,
-       WB_MidNumLet = 12,
-       WB_Newline = 13,
-       WB_Numeric = 14,
-       WB_Perl_Tailored_HSpace = 15,
-       WB_Regional_Indicator = 16,
-       WB_Single_Quote = 17,
-       WB_EDGE = 18,
-       WB_UNKNOWN = 19
+       WB_E_Base = 4,
+       WB_E_Base_GAZ = 5,
+       WB_E_Modifier = 6,
+       WB_Extend = 7,
+       WB_ExtendNumLet = 8,
+       WB_Format = 9,
+       WB_Glue_After_Zwj = 10,
+       WB_Hebrew_Letter = 11,
+       WB_Katakana = 12,
+       WB_LF = 13,
+       WB_MidLetter = 14,
+       WB_MidNum = 15,
+       WB_MidNumLet = 16,
+       WB_Newline = 17,
+       WB_Numeric = 18,
+       WB_Perl_Tailored_HSpace = 19,
+       WB_Regional_Indicator = 20,
+       WB_Single_Quote = 21,
+       WB_ZWJ = 22,
+       WB_EDGE = 23,
+       WB_UNKNOWN = 24
 } WB_enum;
 
 static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
@@ -47375,6 +49393,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_Other,
        WB_ALetter,
        WB_Other,
+       WB_ALetter,
+       WB_Other,
+       WB_Extend,
+       WB_Format,
        WB_Extend,
        WB_ALetter,
        WB_Extend,
@@ -47579,6 +49601,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_Other,
        WB_Numeric,
        WB_Other,
+       WB_ALetter,
        WB_Extend,
        WB_Other,
        WB_ALetter,
@@ -47626,6 +49649,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_Extend,
        WB_ALetter,
        WB_Other,
+       WB_ALetter,
        WB_Extend,
        WB_Other,
        WB_ALetter,
@@ -47815,6 +49839,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_ALetter,
        WB_Extend,
        WB_ALetter,
+       WB_Extend,
+       WB_ALetter,
        WB_Other,
        WB_ALetter,
        WB_Other,
@@ -47868,6 +49894,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_Numeric,
        WB_ALetter,
        WB_Other,
+       WB_ALetter,
+       WB_Other,
        WB_Extend,
        WB_Other,
        WB_Extend,
@@ -47924,6 +49952,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_Perl_Tailored_HSpace,
        WB_Other,
        WB_Extend,
+       WB_ZWJ,
        WB_Format,
        WB_Other,
        WB_MidNumLet,
@@ -47933,7 +49962,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_MidLetter,
        WB_Newline,
        WB_Format,
-       WB_Perl_Tailored_HSpace,
+       WB_ExtendNumLet,
        WB_Other,
        WB_ExtendNumLet,
        WB_Other,
@@ -47984,6 +50013,14 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_Other,
        WB_ALetter,
        WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_Glue_After_Zwj,
+       WB_Other,
        WB_ALetter,
        WB_Other,
        WB_ALetter,
@@ -48347,6 +50384,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_ALetter,
        WB_Other,
        WB_ALetter,
+       WB_Other,
+       WB_ALetter,
+       WB_Other,
+       WB_ALetter,
        WB_Extend,
        WB_Other,
        WB_Extend,
@@ -48429,6 +50470,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_ALetter,
        WB_Extend,
        WB_Other,
+       WB_Extend,
+       WB_Other,
        WB_ALetter,
        WB_Other,
        WB_ALetter,
@@ -48481,6 +50524,12 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_Extend,
        WB_ALetter,
        WB_Other,
+       WB_Numeric,
+       WB_Other,
+       WB_ALetter,
+       WB_Extend,
+       WB_ALetter,
+       WB_Other,
        WB_ALetter,
        WB_Other,
        WB_Numeric,
@@ -48519,6 +50568,22 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_ALetter,
        WB_Other,
        WB_ALetter,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_ALetter,
+       WB_Other,
+       WB_Numeric,
+       WB_Other,
+       WB_ALetter,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_ALetter,
+       WB_Other,
+       WB_ALetter,
        WB_Other,
        WB_ALetter,
        WB_Other,
@@ -48555,6 +50620,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_Extend,
        WB_ALetter,
        WB_Other,
+       WB_ALetter,
+       WB_Other,
        WB_Katakana,
        WB_Other,
        WB_ALetter,
@@ -48655,11 +50722,26 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_Other,
        WB_Extend,
        WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
        WB_ALetter,
        WB_Other,
        WB_Extend,
        WB_Other,
        WB_ALetter,
+       WB_Extend,
+       WB_Other,
+       WB_Numeric,
+       WB_Other,
+       WB_ALetter,
        WB_Other,
        WB_ALetter,
        WB_Other,
@@ -48733,11 +50815,69 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
        WB_Other,
        WB_Regional_Indicator,
        WB_Other,
-       WB_Format,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Modifier,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base_GAZ,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_Glue_After_Zwj,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_Glue_After_Zwj,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
        WB_Other,
        WB_Format,
        WB_Other,
        WB_Extend,
+       WB_Other,
+       WB_Extend,
        WB_Other
 };
 
@@ -48858,7 +50998,7 @@ static const UV XPerlSpace_invlist[] = { /* for EBCDIC 1047 */
 };
 
 static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
-       1321,   /* Number of elements */
+       1381,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -48991,6 +51131,10 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
        0x859,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E0,
        0x8E3,
        0x8EA,
        0x8F0,
@@ -49177,7 +51321,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
        0xC64,
        0xC66,
        0xC70,
-       0xC81,
+       0xC80,
        0xC84,
        0xC85,
        0xC8D,
@@ -49221,7 +51365,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
        0xD4D,
        0xD4E,
        0xD4F,
-       0xD57,
+       0xD54,
        0xD58,
        0xD5F,
        0xD64,
@@ -49465,6 +51609,8 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
        0x1C4A,
        0x1C4D,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CE9,
        0x1CED,
        0x1CEE,
@@ -49638,7 +51784,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -49653,6 +51799,8 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
        0xA874,
        0xA880,
        0xA8C4,
+       0xA8C5,
+       0xA8C6,
        0xA8D0,
        0xA8DA,
        0xA8F2,
@@ -49811,6 +51959,10 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -49913,6 +52065,8 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
        0x11235,
        0x11237,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -49953,6 +52107,14 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
        0x11358,
        0x1135D,
        0x11364,
+       0x11400,
+       0x11442,
+       0x11443,
+       0x11446,
+       0x11447,
+       0x1144B,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114C2,
        0x114C4,
@@ -49991,6 +52153,22 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C3F,
+       0x11C40,
+       0x11C41,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -50025,6 +52203,12 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
        0x16F7F,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -50099,8 +52283,24 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
        0x1D7CC,
        0x1D7CE,
        0x1D800,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
+       0x1E900,
+       0x1E944,
+       0x1E947,
+       0x1E948,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -50186,7 +52386,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */
 };
 
 static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
-       1261,   /* Number of elements */
+       1315,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -50321,6 +52521,10 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
        0x859,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E0,
        0x8E3,
        0x8EA,
        0x8F0,
@@ -50497,7 +52701,7 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
        0xC5B,
        0xC60,
        0xC64,
-       0xC81,
+       0xC80,
        0xC84,
        0xC85,
        0xC8D,
@@ -50539,7 +52743,7 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
        0xD4D,
        0xD4E,
        0xD4F,
-       0xD57,
+       0xD54,
        0xD58,
        0xD5F,
        0xD64,
@@ -50761,6 +52965,8 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
        0x1C50,
        0x1C5A,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CE9,
        0x1CED,
        0x1CEE,
@@ -50936,7 +53142,7 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -50951,6 +53157,8 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
        0xA874,
        0xA880,
        0xA8C4,
+       0xA8C5,
+       0xA8C6,
        0xA8F2,
        0xA8F8,
        0xA8FB,
@@ -51101,6 +53309,10 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
        0x103D6,
        0x10400,
        0x1049E,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -51197,6 +53409,8 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
        0x11235,
        0x11237,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -51235,6 +53449,12 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
        0x11358,
        0x1135D,
        0x11364,
+       0x11400,
+       0x11442,
+       0x11443,
+       0x11446,
+       0x11447,
+       0x1144B,
        0x11480,
        0x114C2,
        0x114C4,
@@ -51265,6 +53485,20 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C3F,
+       0x11C40,
+       0x11C41,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -51295,6 +53529,12 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
        0x16F7F,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -51367,8 +53607,22 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */
        0x1D7C3,
        0x1D7C4,
        0x1D7CC,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
+       0x1E900,
+       0x1E944,
+       0x1E947,
+       0x1E948,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -51487,7 +53741,7 @@ static const UV XPosixCntrl_invlist[] = { /* for EBCDIC 1047 */
 };
 
 static const UV XPosixDigit_invlist[] = { /* for EBCDIC 1047 */
-       103,    /* Number of elements */
+       109,    /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -51578,6 +53832,8 @@ static const UV XPosixDigit_invlist[] = { /* for EBCDIC 1047 */
        0x111DA,
        0x112F0,
        0x112FA,
+       0x11450,
+       0x1145A,
        0x114D0,
        0x114DA,
        0x11650,
@@ -51588,16 +53844,20 @@ static const UV XPosixDigit_invlist[] = { /* for EBCDIC 1047 */
        0x1173A,
        0x118E0,
        0x118EA,
+       0x11C50,
+       0x11C5A,
        0x16A60,
        0x16A6A,
        0x16B50,
        0x16B5A,
        0x1D7CE,
-       0x1D800
+       0x1D800,
+       0x1E950,
+       0x1E95A
 };
 
 static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
-       1237,   /* Number of elements */
+       1287,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -51652,7 +53912,9 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x85F,
        0x8A0,
        0x8B5,
-       0x8E3,
+       0x8B6,
+       0x8BE,
+       0x8D4,
        0x984,
        0x985,
        0x98D,
@@ -51825,8 +54087,6 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0xC66,
        0xC70,
        0xC78,
-       0xC80,
-       0xC81,
        0xC84,
        0xC85,
        0xC8D,
@@ -51867,14 +54127,10 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0xD46,
        0xD49,
        0xD4A,
-       0xD4F,
-       0xD57,
-       0xD58,
-       0xD5F,
+       0xD50,
+       0xD54,
        0xD64,
        0xD66,
-       0xD76,
-       0xD79,
        0xD80,
        0xD82,
        0xD84,
@@ -52077,7 +54333,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x1C3B,
        0x1C4A,
        0x1C4D,
-       0x1C80,
+       0x1C89,
        0x1CC0,
        0x1CC8,
        0x1CD0,
@@ -52086,7 +54342,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x1CFA,
        0x1D00,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1F16,
        0x1F18,
        0x1F1E,
@@ -52139,7 +54395,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x2100,
        0x218C,
        0x2190,
-       0x23FB,
+       0x23FF,
        0x2400,
        0x2427,
        0x2440,
@@ -52191,7 +54447,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x2DD8,
        0x2DDF,
        0x2DE0,
-       0x2E43,
+       0x2E45,
        0x2E80,
        0x2E9A,
        0x2E9B,
@@ -52231,7 +54487,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0xA640,
        0xA6F8,
        0xA700,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -52241,7 +54497,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0xA840,
        0xA878,
        0xA880,
-       0xA8C5,
+       0xA8C6,
        0xA8CE,
        0xA8DA,
        0xA8E0,
@@ -52365,7 +54621,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x10107,
        0x10134,
        0x10137,
-       0x1018D,
+       0x1018F,
        0x10190,
        0x1019C,
        0x101A0,
@@ -52394,6 +54650,10 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -52505,7 +54765,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x11200,
        0x11212,
        0x11213,
-       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -52550,6 +54810,12 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x1145A,
+       0x1145B,
+       0x1145C,
+       0x1145D,
+       0x1145E,
        0x11480,
        0x114C8,
        0x114D0,
@@ -52562,6 +54828,8 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x11645,
        0x11650,
        0x1165A,
+       0x11660,
+       0x1166D,
        0x11680,
        0x116B8,
        0x116C0,
@@ -52578,6 +54846,20 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C46,
+       0x11C50,
+       0x11C6D,
+       0x11C70,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -52618,6 +54900,12 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x16F7F,
        0x16F8F,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -52688,10 +54976,26 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8C7,
        0x1E8D7,
+       0x1E900,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
+       0x1E95E,
+       0x1E960,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -52779,25 +55083,21 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x1F130,
        0x1F16C,
        0x1F170,
-       0x1F19B,
+       0x1F1AD,
        0x1F1E6,
        0x1F203,
        0x1F210,
-       0x1F23B,
+       0x1F23C,
        0x1F240,
        0x1F249,
        0x1F250,
        0x1F252,
        0x1F300,
-       0x1F57A,
-       0x1F57B,
-       0x1F5A4,
-       0x1F5A5,
-       0x1F6D1,
+       0x1F6D3,
        0x1F6E0,
        0x1F6ED,
        0x1F6F0,
-       0x1F6F4,
+       0x1F6F7,
        0x1F700,
        0x1F774,
        0x1F780,
@@ -52813,9 +55113,19 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
        0x1F890,
        0x1F8AE,
        0x1F910,
-       0x1F919,
+       0x1F91F,
+       0x1F920,
+       0x1F928,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93F,
+       0x1F940,
+       0x1F94C,
+       0x1F950,
+       0x1F95F,
        0x1F980,
-       0x1F985,
+       0x1F992,
        0x1F9C0,
        0x1F9C1,
        0x20000,
@@ -52841,7 +55151,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */
 };
 
 static const UV XPosixLower_invlist[] = { /* for EBCDIC 1047 */
-       1283,   /* Number of elements */
+       1289,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -53406,6 +55716,8 @@ static const UV XPosixLower_invlist[] = { /* for EBCDIC 1047 */
        0x588,
        0x13F8,
        0x13FE,
+       0x1C80,
+       0x1C89,
        0x1D00,
        0x1DC0,
        0x1E01,
@@ -54068,6 +56380,8 @@ static const UV XPosixLower_invlist[] = { /* for EBCDIC 1047 */
        0xFF5B,
        0x10428,
        0x10450,
+       0x104D8,
+       0x104FC,
        0x10CC0,
        0x10CF3,
        0x118C0,
@@ -54127,11 +56441,13 @@ static const UV XPosixLower_invlist[] = { /* for EBCDIC 1047 */
        0x1D7C4,
        0x1D7CA,
        0x1D7CB,
-       0x1D7CC
+       0x1D7CC,
+       0x1E922,
+       0x1E944
 };
 
 static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
-       1231,   /* Number of elements */
+       1281,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -54186,7 +56502,9 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x85F,
        0x8A0,
        0x8B5,
-       0x8E3,
+       0x8B6,
+       0x8BE,
+       0x8D4,
        0x984,
        0x985,
        0x98D,
@@ -54359,8 +56677,6 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0xC66,
        0xC70,
        0xC78,
-       0xC80,
-       0xC81,
        0xC84,
        0xC85,
        0xC8D,
@@ -54401,14 +56717,10 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0xD46,
        0xD49,
        0xD4A,
-       0xD4F,
-       0xD57,
-       0xD58,
-       0xD5F,
+       0xD50,
+       0xD54,
        0xD64,
        0xD66,
-       0xD76,
-       0xD79,
        0xD80,
        0xD82,
        0xD84,
@@ -54609,7 +56921,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x1C3B,
        0x1C4A,
        0x1C4D,
-       0x1C80,
+       0x1C89,
        0x1CC0,
        0x1CC8,
        0x1CD0,
@@ -54618,7 +56930,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x1CFA,
        0x1D00,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1F16,
        0x1F18,
        0x1F1E,
@@ -54667,7 +56979,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x2100,
        0x218C,
        0x2190,
-       0x23FB,
+       0x23FF,
        0x2400,
        0x2427,
        0x2440,
@@ -54719,7 +57031,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x2DD8,
        0x2DDF,
        0x2DE0,
-       0x2E43,
+       0x2E45,
        0x2E80,
        0x2E9A,
        0x2E9B,
@@ -54759,7 +57071,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0xA640,
        0xA6F8,
        0xA700,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -54769,7 +57081,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0xA840,
        0xA878,
        0xA880,
-       0xA8C5,
+       0xA8C6,
        0xA8CE,
        0xA8DA,
        0xA8E0,
@@ -54893,7 +57205,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x10107,
        0x10134,
        0x10137,
-       0x1018D,
+       0x1018F,
        0x10190,
        0x1019C,
        0x101A0,
@@ -54922,6 +57234,10 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -55033,7 +57349,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x11200,
        0x11212,
        0x11213,
-       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -55078,6 +57394,12 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x1145A,
+       0x1145B,
+       0x1145C,
+       0x1145D,
+       0x1145E,
        0x11480,
        0x114C8,
        0x114D0,
@@ -55090,6 +57412,8 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x11645,
        0x11650,
        0x1165A,
+       0x11660,
+       0x1166D,
        0x11680,
        0x116B8,
        0x116C0,
@@ -55106,6 +57430,20 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C46,
+       0x11C50,
+       0x11C6D,
+       0x11C70,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -55146,6 +57484,12 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x16F7F,
        0x16F8F,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -55216,10 +57560,26 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8C7,
        0x1E8D7,
+       0x1E900,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
+       0x1E95E,
+       0x1E960,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -55307,25 +57667,21 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x1F130,
        0x1F16C,
        0x1F170,
-       0x1F19B,
+       0x1F1AD,
        0x1F1E6,
        0x1F203,
        0x1F210,
-       0x1F23B,
+       0x1F23C,
        0x1F240,
        0x1F249,
        0x1F250,
        0x1F252,
        0x1F300,
-       0x1F57A,
-       0x1F57B,
-       0x1F5A4,
-       0x1F5A5,
-       0x1F6D1,
+       0x1F6D3,
        0x1F6E0,
        0x1F6ED,
        0x1F6F0,
-       0x1F6F4,
+       0x1F6F7,
        0x1F700,
        0x1F774,
        0x1F780,
@@ -55341,9 +57697,19 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
        0x1F890,
        0x1F8AE,
        0x1F910,
-       0x1F919,
+       0x1F91F,
+       0x1F920,
+       0x1F928,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93F,
+       0x1F940,
+       0x1F94C,
+       0x1F950,
+       0x1F95F,
        0x1F980,
-       0x1F985,
+       0x1F992,
        0x1F9C0,
        0x1F9C1,
        0x20000,
@@ -55369,7 +57735,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */
 };
 
 static const UV XPosixPunct_invlist[] = { /* for EBCDIC 1047 */
-       321,    /* Number of elements */
+       335,    /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -55543,7 +57909,7 @@ static const UV XPosixPunct_invlist[] = { /* for EBCDIC 1047 */
        0x2E00,
        0x2E2F,
        0x2E30,
-       0x2E43,
+       0x2E45,
        0x3001,
        0x3004,
        0x3008,
@@ -55672,14 +58038,26 @@ static const UV XPosixPunct_invlist[] = { /* for EBCDIC 1047 */
        0x1123E,
        0x112A9,
        0x112AA,
+       0x1144B,
+       0x11450,
+       0x1145B,
+       0x1145C,
+       0x1145D,
+       0x1145E,
        0x114C6,
        0x114C7,
        0x115C1,
        0x115D8,
        0x11641,
        0x11644,
+       0x11660,
+       0x1166D,
        0x1173C,
        0x1173F,
+       0x11C41,
+       0x11C46,
+       0x11C70,
+       0x11C72,
        0x12470,
        0x12475,
        0x16A6E,
@@ -55693,7 +58071,9 @@ static const UV XPosixPunct_invlist[] = { /* for EBCDIC 1047 */
        0x1BC9F,
        0x1BCA0,
        0x1DA87,
-       0x1DA8C
+       0x1DA8C,
+       0x1E95E,
+       0x1E960
 };
 
 static const UV XPosixSpace_invlist[] = { /* for EBCDIC 1047 */
@@ -55727,7 +58107,7 @@ static const UV XPosixSpace_invlist[] = { /* for EBCDIC 1047 */
 };
 
 static const UV XPosixUpper_invlist[] = { /* for EBCDIC 1047 */
-       1279,   /* Number of elements */
+       1283,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -56929,7 +59309,7 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 1047 */
        0xA7A8,
        0xA7A9,
        0xA7AA,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B5,
        0xA7B6,
@@ -56938,6 +59318,8 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 1047 */
        0xFF3B,
        0x10400,
        0x10428,
+       0x104B0,
+       0x104D4,
        0x10C80,
        0x10CB3,
        0x118A0,
@@ -57004,6 +59386,8 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 1047 */
        0x1D7A9,
        0x1D7CA,
        0x1D7CB,
+       0x1E900,
+       0x1E922,
        0x1F130,
        0x1F14A,
        0x1F150,
@@ -57013,7 +59397,7 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 1047 */
 };
 
 static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
-       1335,   /* Number of elements */
+       1385,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -57140,6 +59524,10 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
        0x85C,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x964,
        0x966,
@@ -57318,7 +59706,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
        0xC64,
        0xC66,
        0xC70,
-       0xC81,
+       0xC80,
        0xC84,
        0xC85,
        0xC8D,
@@ -57360,7 +59748,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
        0xD49,
        0xD4A,
        0xD4F,
-       0xD57,
+       0xD54,
        0xD58,
        0xD5F,
        0xD64,
@@ -57596,6 +59984,8 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
        0x1C4A,
        0x1C4D,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CD0,
        0x1CD3,
        0x1CD4,
@@ -57604,7 +59994,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
        0x1CFA,
        0x1D00,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1F16,
        0x1F18,
        0x1F1E,
@@ -57775,7 +60165,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -57783,7 +60173,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
        0xA840,
        0xA874,
        0xA880,
-       0xA8C5,
+       0xA8C6,
        0xA8D0,
        0xA8DA,
        0xA8E0,
@@ -57948,6 +60338,10 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -58052,6 +60446,8 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
        0x11212,
        0x11213,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -58096,6 +60492,10 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x1144B,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114C6,
        0x114C7,
@@ -58130,6 +60530,20 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C41,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -58166,6 +60580,12 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
        0x16F7F,
        0x16F8F,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -58264,10 +60684,24 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8D0,
        0x1E8D7,
+       0x1E900,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -58449,7 +60883,7 @@ static const UV ASCII_invlist[] = { /* for EBCDIC 037 */
 };
 
 static const UV Cased_invlist[] = { /* for EBCDIC 037 */
-       285,    /* Number of elements */
+       293,    /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -58540,6 +60974,8 @@ static const UV Cased_invlist[] = { /* for EBCDIC 037 */
        0x13F6,
        0x13F8,
        0x13FE,
+       0x1C80,
+       0x1C89,
        0x1D00,
        0x1DC0,
        0x1E00,
@@ -58645,7 +61081,7 @@ static const UV Cased_invlist[] = { /* for EBCDIC 037 */
        0xA78B,
        0xA78F,
        0xA790,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F8,
@@ -58666,6 +61102,10 @@ static const UV Cased_invlist[] = { /* for EBCDIC 037 */
        0xFF5B,
        0x10400,
        0x10450,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10C80,
        0x10CB3,
        0x10CC0,
@@ -58732,6 +61172,8 @@ static const UV Cased_invlist[] = { /* for EBCDIC 037 */
        0x1D7C3,
        0x1D7C4,
        0x1D7CC,
+       0x1E900,
+       0x1E944,
        0x1F130,
        0x1F14A,
        0x1F150,
@@ -58797,7 +61239,7 @@ static const UV NonL1_Perl_Non_Final_Folds_invlist[] = { /* for EBCDIC 037 */
 };
 
 static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 037 */
-       275,    /* Number of elements */
+       281,    /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -58875,8 +61317,6 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 037 */
        0x265,
        0x267,
        0x268,
-       0x26A,
-       0x26B,
        0x26D,
        0x26F,
        0x270,
@@ -58956,6 +61396,8 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 037 */
        0x13F6,
        0x13F8,
        0x13FE,
+       0x1C80,
+       0x1C89,
        0x1D79,
        0x1D7A,
        0x1D7D,
@@ -59053,7 +61495,7 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 037 */
        0xA790,
        0xA794,
        0xA796,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xAB53,
@@ -59070,12 +61512,18 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 037 */
        0xFF5B,
        0x10400,
        0x10450,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10C80,
        0x10CB3,
        0x10CC0,
        0x10CF3,
        0x118A0,
-       0x118E0
+       0x118E0,
+       0x1E900,
+       0x1E944
 };
 
 static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for EBCDIC 037 */
@@ -59149,7 +61597,7 @@ static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for EBCDIC 037 */
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
-       1502,   /* Number of elements */
+       1615,   /* Number of elements */
        148565664, /* Version and data structure type */
        0,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -59216,6 +61664,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
        0x82E,
        0x859,
        0x85C,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x903,
        0x904,
@@ -59364,6 +61814,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
        0xD4A,
        0xD4D,
        0xD4E,
+       0xD4F,
        0xD57,
        0xD58,
        0xD62,
@@ -59472,6 +61923,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
        0x180B,
        0x180E,
        0x180F,
+       0x1885,
+       0x1887,
        0x18A9,
        0x18AA,
        0x1920,
@@ -59558,10 +62011,11 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
        0x1CFA,
        0x1DC0,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1E00,
        0x200B,
        0x200C,
+       0x200D,
        0x200E,
        0x2010,
        0x2028,
@@ -59570,6 +62024,14 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
        0x2070,
        0x20D0,
        0x20F1,
+       0x261D,
+       0x261E,
+       0x26F9,
+       0x26FA,
+       0x270A,
+       0x270E,
+       0x2764,
+       0x2765,
        0x2CEF,
        0x2CF2,
        0x2D7F,
@@ -59602,7 +62064,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
        0xA882,
        0xA8B4,
        0xA8C4,
-       0xA8C5,
+       0xA8C6,
        0xA8E0,
        0xA8F2,
        0xA926,
@@ -60529,6 +62991,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
        0x111B6,
        0x111BF,
        0x111C1,
+       0x111C2,
+       0x111C4,
        0x111CA,
        0x111CD,
        0x1122C,
@@ -60538,6 +63002,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
        0x11235,
        0x11236,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x112DF,
        0x112E0,
        0x112E3,
@@ -60564,6 +63030,13 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11435,
+       0x11438,
+       0x11440,
+       0x11442,
+       0x11445,
+       0x11446,
+       0x11447,
        0x114B0,
        0x114B1,
        0x114B3,
@@ -60608,6 +63081,22 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
        0x11726,
        0x11727,
        0x1172C,
+       0x11C2F,
+       0x11C30,
+       0x11C37,
+       0x11C38,
+       0x11C3E,
+       0x11C3F,
+       0x11C40,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CAA,
+       0x11CB1,
+       0x11CB2,
+       0x11CB4,
+       0x11CB5,
+       0x11CB7,
        0x16AF0,
        0x16AF5,
        0x16B30,
@@ -60647,11 +63136,83 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E8D0,
        0x1E8D7,
+       0x1E944,
+       0x1E94B,
        0x1F1E6,
        0x1F200,
+       0x1F385,
+       0x1F386,
+       0x1F3C3,
+       0x1F3C5,
+       0x1F3CA,
+       0x1F3CC,
+       0x1F3FB,
+       0x1F400,
+       0x1F442,
+       0x1F444,
+       0x1F446,
+       0x1F451,
+       0x1F466,
+       0x1F46A,
+       0x1F46E,
+       0x1F46F,
+       0x1F470,
+       0x1F479,
+       0x1F47C,
+       0x1F47D,
+       0x1F481,
+       0x1F484,
+       0x1F485,
+       0x1F488,
+       0x1F48B,
+       0x1F48C,
+       0x1F4AA,
+       0x1F4AB,
+       0x1F575,
+       0x1F576,
+       0x1F57A,
+       0x1F57B,
+       0x1F590,
+       0x1F591,
+       0x1F595,
+       0x1F597,
+       0x1F5E8,
+       0x1F5E9,
+       0x1F645,
+       0x1F648,
+       0x1F64B,
+       0x1F650,
+       0x1F6A3,
+       0x1F6A4,
+       0x1F6B4,
+       0x1F6B7,
+       0x1F6C0,
+       0x1F6C1,
+       0x1F918,
+       0x1F91F,
+       0x1F926,
+       0x1F927,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93A,
+       0x1F93C,
+       0x1F93F,
        0xE0000,
+       0xE0020,
+       0xE0080,
        0xE0100,
        0xE01F0,
        0xE1000
@@ -60661,23 +63222,28 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define GCB_ENUM_COUNT 14
+#define GCB_ENUM_COUNT 19
 
 typedef enum {
        GCB_Other = 0,
        GCB_CR = 1,
        GCB_Control = 2,
-       GCB_Extend = 3,
-       GCB_L = 4,
-       GCB_LF = 5,
-       GCB_LV = 6,
-       GCB_LVT = 7,
-       GCB_Prepend = 8,
-       GCB_Regional_Indicator = 9,
-       GCB_SpacingMark = 10,
-       GCB_T = 11,
-       GCB_V = 12,
-       GCB_EDGE = 13
+       GCB_E_Base = 3,
+       GCB_E_Base_GAZ = 4,
+       GCB_E_Modifier = 5,
+       GCB_Extend = 6,
+       GCB_Glue_After_Zwj = 7,
+       GCB_L = 8,
+       GCB_LF = 9,
+       GCB_LV = 10,
+       GCB_LVT = 11,
+       GCB_Prepend = 12,
+       GCB_Regional_Indicator = 13,
+       GCB_SpacingMark = 14,
+       GCB_T = 15,
+       GCB_V = 16,
+       GCB_ZWJ = 17,
+       GCB_EDGE = 18
 } GCB_enum;
 
 static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
@@ -60705,7 +63271,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
-       GCB_Control,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -60716,7 +63282,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
-       GCB_Control,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -60724,7 +63290,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
-       GCB_Control,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -60745,6 +63311,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
+       GCB_Prepend,
+       GCB_Extend,
        GCB_SpacingMark,
        GCB_Other,
        GCB_Extend,
@@ -60891,6 +63459,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_Other,
        GCB_SpacingMark,
        GCB_Extend,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -61003,6 +63572,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
        GCB_SpacingMark,
        GCB_Extend,
        GCB_SpacingMark,
@@ -61090,6 +63661,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_Other,
        GCB_Control,
        GCB_Extend,
+       GCB_ZWJ,
        GCB_Control,
        GCB_Other,
        GCB_Control,
@@ -61098,6 +63670,14 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_Glue_After_Zwj,
+       GCB_Other,
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
@@ -62040,7 +64620,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_SpacingMark,
        GCB_Extend,
        GCB_Other,
-       GCB_Control,
+       GCB_Prepend,
        GCB_Other,
        GCB_Extend,
        GCB_Other,
@@ -62057,6 +64637,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_Extend,
        GCB_SpacingMark,
        GCB_Other,
+       GCB_Prepend,
+       GCB_Other,
        GCB_Extend,
        GCB_Other,
        GCB_SpacingMark,
@@ -62067,6 +64649,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
        GCB_SpacingMark,
        GCB_Extend,
        GCB_Other,
@@ -62092,6 +64676,13 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_Other,
        GCB_Extend,
        GCB_SpacingMark,
        GCB_Extend,
@@ -62136,6 +64727,22 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_SpacingMark,
        GCB_Extend,
        GCB_Other,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_SpacingMark,
+       GCB_Extend,
+       GCB_Other,
        GCB_Extend,
        GCB_Other,
        GCB_Extend,
@@ -62177,8 +64784,80 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
        GCB_Other,
        GCB_Extend,
        GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
+       GCB_Extend,
+       GCB_Other,
        GCB_Regional_Indicator,
        GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Modifier,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base_GAZ,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_Glue_After_Zwj,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_Glue_After_Zwj,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_E_Base,
+       GCB_Other,
+       GCB_Control,
+       GCB_Extend,
        GCB_Control,
        GCB_Extend,
        GCB_Control,
@@ -62190,7 +64869,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
 #if defined(PERL_IN_UTF8_C)
 
 static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
-       1337,   /* Number of elements */
+       1387,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -62315,6 +64994,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
        0x85C,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x964,
        0x966,
@@ -62493,7 +65176,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
        0xC64,
        0xC66,
        0xC70,
-       0xC81,
+       0xC80,
        0xC84,
        0xC85,
        0xC8D,
@@ -62535,7 +65218,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
        0xD49,
        0xD4A,
        0xD4F,
-       0xD57,
+       0xD54,
        0xD58,
        0xD5F,
        0xD64,
@@ -62771,6 +65454,8 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
        0x1C4A,
        0x1C4D,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CD0,
        0x1CD3,
        0x1CD4,
@@ -62779,7 +65464,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
        0x1CFA,
        0x1D00,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1F16,
        0x1F18,
        0x1F1E,
@@ -62948,7 +65633,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -62956,7 +65641,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
        0xA840,
        0xA874,
        0xA880,
-       0xA8C5,
+       0xA8C6,
        0xA8D0,
        0xA8DA,
        0xA8E0,
@@ -63133,6 +65818,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -63237,6 +65926,8 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
        0x11212,
        0x11213,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -63281,6 +65972,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x1144B,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114C6,
        0x114C7,
@@ -63315,6 +66010,20 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C41,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -63351,6 +66060,12 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
        0x16F7F,
        0x16F8F,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -63449,10 +66164,24 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8D0,
        0x1E8D7,
+       0x1E900,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -63534,7 +66263,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */
 };
 
 static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */
-       1151,   /* Number of elements */
+       1183,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -63661,6 +66390,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */
        0x859,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
        0x904,
        0x93A,
        0x93D,
@@ -63789,6 +66520,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */
        0xC5B,
        0xC60,
        0xC62,
+       0xC80,
+       0xC81,
        0xC85,
        0xC8D,
        0xC8E,
@@ -63817,6 +66550,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */
        0xD3E,
        0xD4E,
        0xD4F,
+       0xD54,
+       0xD57,
        0xD5F,
        0xD62,
        0xD7A,
@@ -64011,6 +66746,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */
        0x1C50,
        0x1C5A,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CE9,
        0x1CED,
        0x1CEE,
@@ -64178,7 +66915,7 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -64365,6 +67102,10 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */
        0x103D6,
        0x10400,
        0x1049E,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -64487,6 +67228,10 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */
        0x11351,
        0x1135D,
        0x11362,
+       0x11400,
+       0x11435,
+       0x11447,
+       0x1144B,
        0x11480,
        0x114B0,
        0x114C4,
@@ -64511,6 +67256,14 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C2F,
+       0x11C40,
+       0x11C41,
+       0x11C72,
+       0x11C90,
        0x12000,
        0x1239A,
        0x12400,
@@ -64541,6 +67294,12 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */
        0x16F51,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -64613,6 +67372,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */
        0x1D7CC,
        0x1E800,
        0x1E8C5,
+       0x1E900,
+       0x1E944,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -64696,7 +67457,7 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
-       2168,   /* Number of elements */
+       2279,   /* Number of elements */
        148565664, /* Version and data structure type */
        0,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -64854,6 +67615,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x82E,
        0x859,
        0x85C,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x904,
        0x93A,
@@ -65151,6 +67914,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x180F,
        0x1810,
        0x181A,
+       0x1885,
+       0x1887,
        0x18A9,
        0x18AA,
        0x1920,
@@ -65215,7 +67980,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x1CFA,
        0x1DC0,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1E00,
        0x1FFD,
        0x1FFE,
@@ -65224,6 +67989,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x2008,
        0x200B,
        0x200C,
+       0x200D,
+       0x200E,
        0x2010,
        0x2011,
        0x2012,
@@ -65306,6 +68073,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x2618,
        0x2619,
        0x261A,
+       0x261D,
+       0x261E,
        0x2620,
        0x2639,
        0x263C,
@@ -65332,15 +68101,19 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x26F1,
        0x26F6,
        0x26F7,
+       0x26F9,
+       0x26FA,
        0x26FB,
        0x26FD,
        0x2705,
        0x2708,
+       0x270A,
        0x270E,
        0x275B,
        0x2761,
        0x2762,
        0x2764,
+       0x2765,
        0x2768,
        0x2769,
        0x276A,
@@ -65445,6 +68218,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x2E40,
        0x2E42,
        0x2E43,
+       0x2E45,
        0x2E80,
        0x2E9A,
        0x2E9B,
@@ -65595,7 +68369,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0xA880,
        0xA882,
        0xA8B4,
-       0xA8C5,
+       0xA8C6,
        0xA8CE,
        0xA8D0,
        0xA8DA,
@@ -66570,6 +69344,15 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0xFF71,
        0xFF9E,
        0xFFA0,
+       0xFFBF,
+       0xFFC2,
+       0xFFC8,
+       0xFFCA,
+       0xFFD0,
+       0xFFD2,
+       0xFFD8,
+       0xFFDA,
+       0xFFDD,
        0xFFE0,
        0xFFE1,
        0xFFE2,
@@ -66662,6 +69445,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x1123A,
        0x1123B,
        0x1123D,
+       0x1123E,
+       0x1123F,
        0x112A9,
        0x112AA,
        0x112DF,
@@ -66686,6 +69471,14 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11435,
+       0x11447,
+       0x1144B,
+       0x1144F,
+       0x11450,
+       0x1145A,
+       0x1145B,
+       0x1145C,
        0x114B0,
        0x114C4,
        0x114D0,
@@ -66706,6 +69499,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x11643,
        0x11650,
        0x1165A,
+       0x11660,
+       0x1166D,
        0x116AB,
        0x116B8,
        0x116C0,
@@ -66718,6 +69513,21 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x1173F,
        0x118E0,
        0x118EA,
+       0x11C2F,
+       0x11C37,
+       0x11C38,
+       0x11C40,
+       0x11C41,
+       0x11C46,
+       0x11C50,
+       0x11C5A,
+       0x11C70,
+       0x11C71,
+       0x11C72,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12470,
        0x12475,
        0x13258,
@@ -66754,6 +69564,12 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x16F7F,
        0x16F8F,
        0x16F93,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC9D,
@@ -66786,44 +69602,73 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E8D0,
        0x1E8D7,
+       0x1E944,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
+       0x1E95E,
+       0x1E960,
        0x1F000,
-       0x1F02C,
-       0x1F030,
-       0x1F094,
-       0x1F0A0,
-       0x1F0AF,
-       0x1F0B1,
-       0x1F0C0,
-       0x1F0C1,
-       0x1F0D0,
-       0x1F0D1,
-       0x1F0F6,
+       0x1F100,
+       0x1F10D,
+       0x1F110,
+       0x1F12F,
+       0x1F130,
+       0x1F16C,
+       0x1F170,
+       0x1F1AD,
        0x1F1E6,
        0x1F200,
-       0x1F203,
-       0x1F210,
-       0x1F23B,
-       0x1F240,
-       0x1F249,
-       0x1F250,
-       0x1F252,
-       0x1F300,
+       0x1F385,
+       0x1F386,
        0x1F39C,
        0x1F39E,
        0x1F3B5,
        0x1F3B7,
        0x1F3BC,
        0x1F3BD,
+       0x1F3C3,
+       0x1F3C5,
+       0x1F3CA,
+       0x1F3CC,
        0x1F3FB,
        0x1F400,
+       0x1F442,
+       0x1F444,
+       0x1F446,
+       0x1F451,
+       0x1F466,
+       0x1F46A,
+       0x1F46E,
+       0x1F46F,
+       0x1F470,
+       0x1F479,
+       0x1F47C,
+       0x1F47D,
+       0x1F481,
+       0x1F484,
+       0x1F485,
+       0x1F488,
        0x1F4A0,
        0x1F4A1,
        0x1F4A2,
        0x1F4A3,
        0x1F4A4,
        0x1F4A5,
+       0x1F4AA,
+       0x1F4AB,
        0x1F4AF,
        0x1F4B0,
        0x1F4B1,
@@ -66834,30 +69679,57 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
        0x1F525,
        0x1F532,
        0x1F54A,
+       0x1F575,
+       0x1F576,
        0x1F57A,
        0x1F57B,
-       0x1F5A4,
-       0x1F5A5,
+       0x1F590,
+       0x1F591,
+       0x1F595,
+       0x1F597,
        0x1F5D4,
        0x1F5DC,
        0x1F5F4,
        0x1F5FA,
+       0x1F645,
+       0x1F648,
+       0x1F64B,
        0x1F650,
        0x1F676,
        0x1F679,
        0x1F67C,
        0x1F680,
-       0x1F6D1,
-       0x1F6E0,
-       0x1F6ED,
-       0x1F6F0,
-       0x1F6F4,
-       0x1F910,
-       0x1F919,
-       0x1F980,
-       0x1F985,
-       0x1F9C0,
-       0x1F9C1,
+       0x1F6A3,
+       0x1F6A4,
+       0x1F6B4,
+       0x1F6B7,
+       0x1F6C0,
+       0x1F6C1,
+       0x1F700,
+       0x1F774,
+       0x1F780,
+       0x1F7D5,
+       0x1F800,
+       0x1F80C,
+       0x1F810,
+       0x1F848,
+       0x1F850,
+       0x1F85A,
+       0x1F860,
+       0x1F888,
+       0x1F890,
+       0x1F8AE,
+       0x1F918,
+       0x1F91F,
+       0x1F926,
+       0x1F927,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93A,
+       0x1F93C,
+       0x1F93F,
+       0x1FFFE,
        0x20000,
        0x2FFFE,
        0x30000,
@@ -66874,7 +69746,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define LB_ENUM_COUNT 36
+#define LB_ENUM_COUNT 39
 
 typedef enum {
        LB_Alphabetic = 0,
@@ -66887,32 +69759,35 @@ typedef enum {
        LB_Close_Punctuation = 7,
        LB_Combining_Mark = 8,
        LB_Contingent_Break = 9,
-       LB_Exclamation = 10,
-       LB_Glue = 11,
-       LB_H2 = 12,
-       LB_H3 = 13,
-       LB_Hebrew_Letter = 14,
-       LB_Hyphen = 15,
-       LB_Ideographic = 16,
-       LB_Infix_Numeric = 17,
-       LB_Inseparable = 18,
-       LB_JL = 19,
-       LB_JT = 20,
-       LB_JV = 21,
-       LB_Line_Feed = 22,
-       LB_Mandatory_Break = 23,
-       LB_Next_Line = 24,
-       LB_Nonstarter = 25,
-       LB_Numeric = 26,
-       LB_Open_Punctuation = 27,
-       LB_Postfix_Numeric = 28,
-       LB_Prefix_Numeric = 29,
-       LB_Quotation = 30,
-       LB_Regional_Indicator = 31,
-       LB_Space = 32,
-       LB_Word_Joiner = 33,
-       LB_ZWSpace = 34,
-       LB_EDGE = 35
+       LB_E_Base = 10,
+       LB_E_Modifier = 11,
+       LB_Exclamation = 12,
+       LB_Glue = 13,
+       LB_H2 = 14,
+       LB_H3 = 15,
+       LB_Hebrew_Letter = 16,
+       LB_Hyphen = 17,
+       LB_Ideographic = 18,
+       LB_Infix_Numeric = 19,
+       LB_Inseparable = 20,
+       LB_JL = 21,
+       LB_JT = 22,
+       LB_JV = 23,
+       LB_Line_Feed = 24,
+       LB_Mandatory_Break = 25,
+       LB_Next_Line = 26,
+       LB_Nonstarter = 27,
+       LB_Numeric = 28,
+       LB_Open_Punctuation = 29,
+       LB_Postfix_Numeric = 30,
+       LB_Prefix_Numeric = 31,
+       LB_Quotation = 32,
+       LB_Regional_Indicator = 33,
+       LB_Space = 34,
+       LB_Word_Joiner = 35,
+       LB_ZWJ = 36,
+       LB_ZWSpace = 37,
+       LB_EDGE = 38
 } LB_enum;
 
 static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
@@ -67079,6 +69954,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Combining_Mark,
        LB_Alphabetic,
        LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
        LB_Break_After,
        LB_Numeric,
        LB_Alphabetic,
@@ -67373,6 +70250,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
        LB_Exclamation,
        LB_Numeric,
        LB_Alphabetic,
@@ -67440,6 +70319,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Break_After,
        LB_ZWSpace,
        LB_Combining_Mark,
+       LB_ZWJ,
+       LB_Combining_Mark,
        LB_Break_After,
        LB_Glue,
        LB_Break_After,
@@ -67522,6 +70403,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -67548,14 +70431,18 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
        LB_Alphabetic,
        LB_Quotation,
        LB_Alphabetic,
        LB_Exclamation,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Open_Punctuation,
        LB_Close_Punctuation,
@@ -67660,6 +70547,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Alphabetic,
        LB_Break_After,
        LB_Open_Punctuation,
+       LB_Break_After,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -68781,10 +71669,19 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Open_Punctuation,
        LB_Close_Punctuation,
        LB_Nonstarter,
-       LB_Alphabetic,
+       LB_Ideographic,
        LB_Nonstarter,
-       LB_Alphabetic,
+       LB_Ideographic,
        LB_Nonstarter,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Postfix_Numeric,
        LB_Prefix_Numeric,
@@ -68878,6 +71775,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Alphabetic,
        LB_Break_After,
        LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
        LB_Break_After,
        LB_Alphabetic,
        LB_Combining_Mark,
@@ -68904,6 +71803,14 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
+       LB_Break_After,
+       LB_Alphabetic,
+       LB_Numeric,
+       LB_Alphabetic,
+       LB_Break_After,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
        LB_Numeric,
        LB_Alphabetic,
        LB_Combining_Mark,
@@ -68922,6 +71829,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Alphabetic,
        LB_Numeric,
        LB_Alphabetic,
+       LB_Break_Before,
+       LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
        LB_Numeric,
@@ -68934,6 +71843,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Alphabetic,
        LB_Numeric,
        LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Break_After,
+       LB_Alphabetic,
+       LB_Numeric,
+       LB_Alphabetic,
+       LB_Break_Before,
+       LB_Exclamation,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
        LB_Break_After,
        LB_Alphabetic,
        LB_Open_Punctuation,
@@ -68970,6 +71894,12 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
+       LB_Nonstarter,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Combining_Mark,
@@ -69004,9 +71934,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
-       LB_Ideographic,
+       LB_Combining_Mark,
        LB_Alphabetic,
-       LB_Ideographic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Combining_Mark,
+       LB_Alphabetic,
+       LB_Numeric,
+       LB_Alphabetic,
+       LB_Open_Punctuation,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -69016,9 +71958,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
+       LB_Ideographic,
        LB_Regional_Indicator,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
@@ -69026,17 +71969,27 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Modifier,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
        LB_Ideographic,
-       LB_Alphabetic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
@@ -69044,6 +71997,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -69054,15 +72009,32 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
        LB_Alphabetic,
        LB_Quotation,
        LB_Nonstarter,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
        LB_Alphabetic,
@@ -69077,6 +72049,20 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
        LB_Ideographic,
        LB_Alphabetic,
        LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_E_Base,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
+       LB_Alphabetic,
+       LB_Ideographic,
        LB_Alphabetic,
        LB_Combining_Mark,
        LB_Alphabetic,
@@ -69091,7 +72077,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
-       2916,   /* Number of elements */
+       2977,   /* Number of elements */
        148565664, /* Version and data structure type */
        0,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -69818,6 +72804,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0x85C,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x904,
        0x93A,
@@ -70022,6 +73012,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0xC64,
        0xC66,
        0xC70,
+       0xC80,
        0xC81,
        0xC84,
        0xC85,
@@ -70069,6 +73060,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0xD4A,
        0xD4E,
        0xD4F,
+       0xD54,
        0xD57,
        0xD58,
        0xD5F,
@@ -70308,6 +73300,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0x1820,
        0x1878,
        0x1880,
+       0x1885,
+       0x1887,
        0x18A9,
        0x18AA,
        0x18AB,
@@ -70381,6 +73375,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0x1C5A,
        0x1C7E,
        0x1C80,
+       0x1C89,
        0x1CD0,
        0x1CD3,
        0x1CD4,
@@ -70395,7 +73390,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0x1D00,
        0x1DC0,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1E00,
        0x1E01,
        0x1E02,
@@ -71239,7 +74234,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0xA7A8,
        0xA7A9,
        0xA7AA,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B5,
        0xA7B6,
@@ -71263,7 +74258,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0xA880,
        0xA882,
        0xA8B4,
-       0xA8C5,
+       0xA8C6,
        0xA8CE,
        0xA8D0,
        0xA8DA,
@@ -71511,6 +74506,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -71645,6 +74644,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0x1123A,
        0x1123B,
        0x1123D,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -71694,6 +74695,13 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x11435,
+       0x11447,
+       0x1144B,
+       0x1144D,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114B0,
        0x114C4,
@@ -71742,6 +74750,23 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C2F,
+       0x11C37,
+       0x11C38,
+       0x11C40,
+       0x11C41,
+       0x11C43,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -71786,6 +74811,12 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0x16F8F,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -71917,10 +74948,26 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8D0,
        0x1E8D7,
+       0x1E900,
+       0x1E922,
+       0x1E944,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -72762,6 +75809,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
        SB_Other,
        SB_OLetter,
        SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_Extend,
+       SB_Format,
        SB_Extend,
        SB_OLetter,
        SB_Extend,
@@ -72966,6 +76017,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
        SB_Other,
        SB_Numeric,
        SB_Other,
+       SB_OLetter,
        SB_Extend,
        SB_Other,
        SB_OLetter,
@@ -73013,6 +76065,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
        SB_Extend,
        SB_OLetter,
        SB_Other,
+       SB_OLetter,
        SB_Extend,
        SB_Other,
        SB_OLetter,
@@ -73254,6 +76307,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
        SB_OLetter,
        SB_Extend,
        SB_OLetter,
+       SB_Extend,
+       SB_OLetter,
        SB_Other,
        SB_OLetter,
        SB_Other,
@@ -73324,6 +76379,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
        SB_Numeric,
        SB_OLetter,
        SB_STerm,
+       SB_Lower,
        SB_Other,
        SB_Extend,
        SB_Other,
@@ -74455,6 +77511,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
        SB_Other,
        SB_Numeric,
        SB_Other,
+       SB_Upper,
+       SB_Other,
+       SB_Lower,
+       SB_Other,
        SB_OLetter,
        SB_Other,
        SB_OLetter,
@@ -74589,6 +77649,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
        SB_Other,
        SB_STerm,
        SB_Other,
+       SB_Extend,
+       SB_Other,
        SB_OLetter,
        SB_Other,
        SB_OLetter,
@@ -74641,6 +77703,13 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
        SB_OLetter,
        SB_Extend,
        SB_OLetter,
+       SB_STerm,
+       SB_Other,
+       SB_Numeric,
+       SB_Other,
+       SB_OLetter,
+       SB_Extend,
+       SB_OLetter,
        SB_Other,
        SB_OLetter,
        SB_Other,
@@ -74689,6 +77758,23 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
        SB_OLetter,
        SB_Other,
        SB_OLetter,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_OLetter,
+       SB_STerm,
+       SB_Other,
+       SB_Numeric,
+       SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_OLetter,
        SB_Other,
        SB_OLetter,
        SB_Other,
@@ -74740,6 +77826,12 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
        SB_Other,
        SB_OLetter,
        SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_OLetter,
+       SB_Other,
+       SB_OLetter,
+       SB_Other,
        SB_Extend,
        SB_STerm,
        SB_Format,
@@ -74861,10 +77953,26 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
        SB_Other,
        SB_Extend,
        SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
+       SB_Extend,
+       SB_Other,
        SB_OLetter,
        SB_Other,
        SB_Extend,
        SB_Other,
+       SB_Upper,
+       SB_Lower,
+       SB_Extend,
+       SB_Other,
+       SB_Numeric,
+       SB_Other,
        SB_OLetter,
        SB_Other,
        SB_OLetter,
@@ -74951,7 +78059,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
        SB_Other,
        SB_Format,
        SB_Other,
-       SB_Format,
+       SB_Extend,
        SB_Other,
        SB_Extend,
        SB_Other
@@ -74962,7 +78070,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
 #if defined(PERL_IN_PERL_C)
 
 static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
-       1554,   /* Number of elements */
+       1676,   /* Number of elements */
        148565664, /* Version and data structure type */
        0,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -75156,6 +78264,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0x85C,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x904,
        0x93A,
@@ -75360,6 +78472,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0xC64,
        0xC66,
        0xC70,
+       0xC80,
        0xC81,
        0xC84,
        0xC85,
@@ -75407,6 +78520,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0xD4A,
        0xD4E,
        0xD4F,
+       0xD54,
        0xD57,
        0xD58,
        0xD5F,
@@ -75594,6 +78708,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0x1820,
        0x1878,
        0x1880,
+       0x1885,
+       0x1887,
        0x18A9,
        0x18AA,
        0x18AB,
@@ -75649,6 +78765,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0x1C50,
        0x1C5A,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CD0,
        0x1CD3,
        0x1CD4,
@@ -75663,7 +78781,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0x1D00,
        0x1DC0,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1E00,
        0x1F16,
        0x1F18,
@@ -75705,6 +78823,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0x2000,
        0x200B,
        0x200C,
+       0x200D,
        0x200E,
        0x2010,
        0x2018,
@@ -75765,6 +78884,14 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0x2189,
        0x24B6,
        0x24EA,
+       0x261D,
+       0x261E,
+       0x26F9,
+       0x26FA,
+       0x270A,
+       0x270E,
+       0x2764,
+       0x2765,
        0x2C00,
        0x2C2F,
        0x2C30,
@@ -75862,7 +78989,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -75879,7 +79006,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0xA880,
        0xA882,
        0xA8B4,
-       0xA8C5,
+       0xA8C6,
        0xA8D0,
        0xA8DA,
        0xA8E0,
@@ -76089,6 +79216,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -76210,6 +79341,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0x11213,
        0x1122C,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -76258,6 +79391,12 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x11435,
+       0x11447,
+       0x1144B,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114B0,
        0x114C4,
@@ -76297,6 +79436,22 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C2F,
+       0x11C37,
+       0x11C38,
+       0x11C40,
+       0x11C41,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -76336,6 +79491,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0x16F8F,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
        0x1B000,
        0x1B001,
        0x1BC00,
@@ -76436,10 +79593,25 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8D0,
        0x1E8D7,
+       0x1E900,
+       0x1E944,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -76514,6 +79686,64 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
        0x1F18A,
        0x1F1E6,
        0x1F200,
+       0x1F385,
+       0x1F386,
+       0x1F3C3,
+       0x1F3C5,
+       0x1F3CA,
+       0x1F3CC,
+       0x1F3FB,
+       0x1F400,
+       0x1F442,
+       0x1F444,
+       0x1F446,
+       0x1F451,
+       0x1F466,
+       0x1F46A,
+       0x1F46E,
+       0x1F46F,
+       0x1F470,
+       0x1F479,
+       0x1F47C,
+       0x1F47D,
+       0x1F481,
+       0x1F484,
+       0x1F485,
+       0x1F488,
+       0x1F48B,
+       0x1F48C,
+       0x1F4AA,
+       0x1F4AB,
+       0x1F575,
+       0x1F576,
+       0x1F57A,
+       0x1F57B,
+       0x1F590,
+       0x1F591,
+       0x1F595,
+       0x1F597,
+       0x1F5E8,
+       0x1F5E9,
+       0x1F645,
+       0x1F648,
+       0x1F64B,
+       0x1F650,
+       0x1F6A3,
+       0x1F6A4,
+       0x1F6B4,
+       0x1F6B7,
+       0x1F6C0,
+       0x1F6C1,
+       0x1F918,
+       0x1F91F,
+       0x1F926,
+       0x1F927,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93A,
+       0x1F93C,
+       0x1F93F,
        0xE0001,
        0xE0002,
        0xE0020,
@@ -76526,29 +79756,34 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
 
 #if defined(PERL_IN_REGEXEC_C)
 
-#define WB_ENUM_COUNT 20
+#define WB_ENUM_COUNT 25
 
 typedef enum {
        WB_Other = 0,
        WB_ALetter = 1,
        WB_CR = 2,
        WB_Double_Quote = 3,
-       WB_Extend = 4,
-       WB_ExtendNumLet = 5,
-       WB_Format = 6,
-       WB_Hebrew_Letter = 7,
-       WB_Katakana = 8,
-       WB_LF = 9,
-       WB_MidLetter = 10,
-       WB_MidNum = 11,
-       WB_MidNumLet = 12,
-       WB_Newline = 13,
-       WB_Numeric = 14,
-       WB_Perl_Tailored_HSpace = 15,
-       WB_Regional_Indicator = 16,
-       WB_Single_Quote = 17,
-       WB_EDGE = 18,
-       WB_UNKNOWN = 19
+       WB_E_Base = 4,
+       WB_E_Base_GAZ = 5,
+       WB_E_Modifier = 6,
+       WB_Extend = 7,
+       WB_ExtendNumLet = 8,
+       WB_Format = 9,
+       WB_Glue_After_Zwj = 10,
+       WB_Hebrew_Letter = 11,
+       WB_Katakana = 12,
+       WB_LF = 13,
+       WB_MidLetter = 14,
+       WB_MidNum = 15,
+       WB_MidNumLet = 16,
+       WB_Newline = 17,
+       WB_Numeric = 18,
+       WB_Perl_Tailored_HSpace = 19,
+       WB_Regional_Indicator = 20,
+       WB_Single_Quote = 21,
+       WB_ZWJ = 22,
+       WB_EDGE = 23,
+       WB_UNKNOWN = 24
 } WB_enum;
 
 static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
@@ -76742,6 +79977,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_Other,
        WB_ALetter,
        WB_Other,
+       WB_ALetter,
+       WB_Other,
+       WB_Extend,
+       WB_Format,
        WB_Extend,
        WB_ALetter,
        WB_Extend,
@@ -76946,6 +80185,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_Other,
        WB_Numeric,
        WB_Other,
+       WB_ALetter,
        WB_Extend,
        WB_Other,
        WB_ALetter,
@@ -76993,6 +80233,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_Extend,
        WB_ALetter,
        WB_Other,
+       WB_ALetter,
        WB_Extend,
        WB_Other,
        WB_ALetter,
@@ -77182,6 +80423,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_ALetter,
        WB_Extend,
        WB_ALetter,
+       WB_Extend,
+       WB_ALetter,
        WB_Other,
        WB_ALetter,
        WB_Other,
@@ -77235,6 +80478,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_Numeric,
        WB_ALetter,
        WB_Other,
+       WB_ALetter,
+       WB_Other,
        WB_Extend,
        WB_Other,
        WB_Extend,
@@ -77291,6 +80536,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_Perl_Tailored_HSpace,
        WB_Other,
        WB_Extend,
+       WB_ZWJ,
        WB_Format,
        WB_Other,
        WB_MidNumLet,
@@ -77300,7 +80546,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_MidLetter,
        WB_Newline,
        WB_Format,
-       WB_Perl_Tailored_HSpace,
+       WB_ExtendNumLet,
        WB_Other,
        WB_ExtendNumLet,
        WB_Other,
@@ -77351,6 +80597,14 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_Other,
        WB_ALetter,
        WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_Glue_After_Zwj,
+       WB_Other,
        WB_ALetter,
        WB_Other,
        WB_ALetter,
@@ -77714,6 +80968,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_ALetter,
        WB_Other,
        WB_ALetter,
+       WB_Other,
+       WB_ALetter,
+       WB_Other,
+       WB_ALetter,
        WB_Extend,
        WB_Other,
        WB_Extend,
@@ -77796,6 +81054,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_ALetter,
        WB_Extend,
        WB_Other,
+       WB_Extend,
+       WB_Other,
        WB_ALetter,
        WB_Other,
        WB_ALetter,
@@ -77848,6 +81108,12 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_Extend,
        WB_ALetter,
        WB_Other,
+       WB_Numeric,
+       WB_Other,
+       WB_ALetter,
+       WB_Extend,
+       WB_ALetter,
+       WB_Other,
        WB_ALetter,
        WB_Other,
        WB_Numeric,
@@ -77886,6 +81152,22 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_ALetter,
        WB_Other,
        WB_ALetter,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_ALetter,
+       WB_Other,
+       WB_Numeric,
+       WB_Other,
+       WB_ALetter,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_ALetter,
+       WB_Other,
+       WB_ALetter,
        WB_Other,
        WB_ALetter,
        WB_Other,
@@ -77922,6 +81204,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_Extend,
        WB_ALetter,
        WB_Other,
+       WB_ALetter,
+       WB_Other,
        WB_Katakana,
        WB_Other,
        WB_ALetter,
@@ -78022,11 +81306,26 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_Other,
        WB_Extend,
        WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
+       WB_Extend,
+       WB_Other,
        WB_ALetter,
        WB_Other,
        WB_Extend,
        WB_Other,
        WB_ALetter,
+       WB_Extend,
+       WB_Other,
+       WB_Numeric,
+       WB_Other,
+       WB_ALetter,
        WB_Other,
        WB_ALetter,
        WB_Other,
@@ -78100,11 +81399,69 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
        WB_Other,
        WB_Regional_Indicator,
        WB_Other,
-       WB_Format,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Modifier,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base_GAZ,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_Glue_After_Zwj,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_Glue_After_Zwj,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
+       WB_Other,
+       WB_E_Base,
        WB_Other,
        WB_Format,
        WB_Other,
        WB_Extend,
+       WB_Other,
+       WB_Extend,
        WB_Other
 };
 
@@ -78227,7 +81584,7 @@ static const UV XPerlSpace_invlist[] = { /* for EBCDIC 037 */
 };
 
 static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
-       1317,   /* Number of elements */
+       1377,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -78356,6 +81713,10 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
        0x859,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E0,
        0x8E3,
        0x8EA,
        0x8F0,
@@ -78542,7 +81903,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
        0xC64,
        0xC66,
        0xC70,
-       0xC81,
+       0xC80,
        0xC84,
        0xC85,
        0xC8D,
@@ -78586,7 +81947,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
        0xD4D,
        0xD4E,
        0xD4F,
-       0xD57,
+       0xD54,
        0xD58,
        0xD5F,
        0xD64,
@@ -78830,6 +82191,8 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
        0x1C4A,
        0x1C4D,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CE9,
        0x1CED,
        0x1CEE,
@@ -79003,7 +82366,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -79018,6 +82381,8 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
        0xA874,
        0xA880,
        0xA8C4,
+       0xA8C5,
+       0xA8C6,
        0xA8D0,
        0xA8DA,
        0xA8F2,
@@ -79176,6 +82541,10 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -79278,6 +82647,8 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
        0x11235,
        0x11237,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -79318,6 +82689,14 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
        0x11358,
        0x1135D,
        0x11364,
+       0x11400,
+       0x11442,
+       0x11443,
+       0x11446,
+       0x11447,
+       0x1144B,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114C2,
        0x114C4,
@@ -79356,6 +82735,22 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C3F,
+       0x11C40,
+       0x11C41,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -79390,6 +82785,12 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
        0x16F7F,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -79464,8 +82865,24 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
        0x1D7CC,
        0x1D7CE,
        0x1D800,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
+       0x1E900,
+       0x1E944,
+       0x1E947,
+       0x1E948,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -79551,7 +82968,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */
 };
 
 static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
-       1257,   /* Number of elements */
+       1311,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -79682,6 +83099,10 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
        0x859,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E0,
        0x8E3,
        0x8EA,
        0x8F0,
@@ -79858,7 +83279,7 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
        0xC5B,
        0xC60,
        0xC64,
-       0xC81,
+       0xC80,
        0xC84,
        0xC85,
        0xC8D,
@@ -79900,7 +83321,7 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
        0xD4D,
        0xD4E,
        0xD4F,
-       0xD57,
+       0xD54,
        0xD58,
        0xD5F,
        0xD64,
@@ -80122,6 +83543,8 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
        0x1C50,
        0x1C5A,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CE9,
        0x1CED,
        0x1CEE,
@@ -80297,7 +83720,7 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -80312,6 +83735,8 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
        0xA874,
        0xA880,
        0xA8C4,
+       0xA8C5,
+       0xA8C6,
        0xA8F2,
        0xA8F8,
        0xA8FB,
@@ -80462,6 +83887,10 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
        0x103D6,
        0x10400,
        0x1049E,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -80558,6 +83987,8 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
        0x11235,
        0x11237,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -80596,6 +84027,12 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
        0x11358,
        0x1135D,
        0x11364,
+       0x11400,
+       0x11442,
+       0x11443,
+       0x11446,
+       0x11447,
+       0x1144B,
        0x11480,
        0x114C2,
        0x114C4,
@@ -80626,6 +84063,20 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C3F,
+       0x11C40,
+       0x11C41,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -80656,6 +84107,12 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
        0x16F7F,
        0x16F93,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -80728,8 +84185,22 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */
        0x1D7C3,
        0x1D7C4,
        0x1D7CC,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
+       0x1E900,
+       0x1E944,
+       0x1E947,
+       0x1E948,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -80848,7 +84319,7 @@ static const UV XPosixCntrl_invlist[] = { /* for EBCDIC 037 */
 };
 
 static const UV XPosixDigit_invlist[] = { /* for EBCDIC 037 */
-       103,    /* Number of elements */
+       109,    /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -80939,6 +84410,8 @@ static const UV XPosixDigit_invlist[] = { /* for EBCDIC 037 */
        0x111DA,
        0x112F0,
        0x112FA,
+       0x11450,
+       0x1145A,
        0x114D0,
        0x114DA,
        0x11650,
@@ -80949,16 +84422,20 @@ static const UV XPosixDigit_invlist[] = { /* for EBCDIC 037 */
        0x1173A,
        0x118E0,
        0x118EA,
+       0x11C50,
+       0x11C5A,
        0x16A60,
        0x16A6A,
        0x16B50,
        0x16B5A,
        0x1D7CE,
-       0x1D800
+       0x1D800,
+       0x1E950,
+       0x1E95A
 };
 
 static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
-       1237,   /* Number of elements */
+       1287,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -81013,7 +84490,9 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x85F,
        0x8A0,
        0x8B5,
-       0x8E3,
+       0x8B6,
+       0x8BE,
+       0x8D4,
        0x984,
        0x985,
        0x98D,
@@ -81186,8 +84665,6 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0xC66,
        0xC70,
        0xC78,
-       0xC80,
-       0xC81,
        0xC84,
        0xC85,
        0xC8D,
@@ -81228,14 +84705,10 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0xD46,
        0xD49,
        0xD4A,
-       0xD4F,
-       0xD57,
-       0xD58,
-       0xD5F,
+       0xD50,
+       0xD54,
        0xD64,
        0xD66,
-       0xD76,
-       0xD79,
        0xD80,
        0xD82,
        0xD84,
@@ -81438,7 +84911,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x1C3B,
        0x1C4A,
        0x1C4D,
-       0x1C80,
+       0x1C89,
        0x1CC0,
        0x1CC8,
        0x1CD0,
@@ -81447,7 +84920,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x1CFA,
        0x1D00,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1F16,
        0x1F18,
        0x1F1E,
@@ -81500,7 +84973,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x2100,
        0x218C,
        0x2190,
-       0x23FB,
+       0x23FF,
        0x2400,
        0x2427,
        0x2440,
@@ -81552,7 +85025,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x2DD8,
        0x2DDF,
        0x2DE0,
-       0x2E43,
+       0x2E45,
        0x2E80,
        0x2E9A,
        0x2E9B,
@@ -81592,7 +85065,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0xA640,
        0xA6F8,
        0xA700,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -81602,7 +85075,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0xA840,
        0xA878,
        0xA880,
-       0xA8C5,
+       0xA8C6,
        0xA8CE,
        0xA8DA,
        0xA8E0,
@@ -81726,7 +85199,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x10107,
        0x10134,
        0x10137,
-       0x1018D,
+       0x1018F,
        0x10190,
        0x1019C,
        0x101A0,
@@ -81755,6 +85228,10 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -81866,7 +85343,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x11200,
        0x11212,
        0x11213,
-       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -81911,6 +85388,12 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x1145A,
+       0x1145B,
+       0x1145C,
+       0x1145D,
+       0x1145E,
        0x11480,
        0x114C8,
        0x114D0,
@@ -81923,6 +85406,8 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x11645,
        0x11650,
        0x1165A,
+       0x11660,
+       0x1166D,
        0x11680,
        0x116B8,
        0x116C0,
@@ -81939,6 +85424,20 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C46,
+       0x11C50,
+       0x11C6D,
+       0x11C70,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -81979,6 +85478,12 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x16F7F,
        0x16F8F,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -82049,10 +85554,26 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8C7,
        0x1E8D7,
+       0x1E900,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
+       0x1E95E,
+       0x1E960,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -82140,25 +85661,21 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x1F130,
        0x1F16C,
        0x1F170,
-       0x1F19B,
+       0x1F1AD,
        0x1F1E6,
        0x1F203,
        0x1F210,
-       0x1F23B,
+       0x1F23C,
        0x1F240,
        0x1F249,
        0x1F250,
        0x1F252,
        0x1F300,
-       0x1F57A,
-       0x1F57B,
-       0x1F5A4,
-       0x1F5A5,
-       0x1F6D1,
+       0x1F6D3,
        0x1F6E0,
        0x1F6ED,
        0x1F6F0,
-       0x1F6F4,
+       0x1F6F7,
        0x1F700,
        0x1F774,
        0x1F780,
@@ -82174,9 +85691,19 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
        0x1F890,
        0x1F8AE,
        0x1F910,
-       0x1F919,
+       0x1F91F,
+       0x1F920,
+       0x1F928,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93F,
+       0x1F940,
+       0x1F94C,
+       0x1F950,
+       0x1F95F,
        0x1F980,
-       0x1F985,
+       0x1F992,
        0x1F9C0,
        0x1F9C1,
        0x20000,
@@ -82202,7 +85729,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */
 };
 
 static const UV XPosixLower_invlist[] = { /* for EBCDIC 037 */
-       1283,   /* Number of elements */
+       1289,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -82767,6 +86294,8 @@ static const UV XPosixLower_invlist[] = { /* for EBCDIC 037 */
        0x588,
        0x13F8,
        0x13FE,
+       0x1C80,
+       0x1C89,
        0x1D00,
        0x1DC0,
        0x1E01,
@@ -83429,6 +86958,8 @@ static const UV XPosixLower_invlist[] = { /* for EBCDIC 037 */
        0xFF5B,
        0x10428,
        0x10450,
+       0x104D8,
+       0x104FC,
        0x10CC0,
        0x10CF3,
        0x118C0,
@@ -83488,11 +87019,13 @@ static const UV XPosixLower_invlist[] = { /* for EBCDIC 037 */
        0x1D7C4,
        0x1D7CA,
        0x1D7CB,
-       0x1D7CC
+       0x1D7CC,
+       0x1E922,
+       0x1E944
 };
 
 static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
-       1231,   /* Number of elements */
+       1281,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -83547,7 +87080,9 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x85F,
        0x8A0,
        0x8B5,
-       0x8E3,
+       0x8B6,
+       0x8BE,
+       0x8D4,
        0x984,
        0x985,
        0x98D,
@@ -83720,8 +87255,6 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0xC66,
        0xC70,
        0xC78,
-       0xC80,
-       0xC81,
        0xC84,
        0xC85,
        0xC8D,
@@ -83762,14 +87295,10 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0xD46,
        0xD49,
        0xD4A,
-       0xD4F,
-       0xD57,
-       0xD58,
-       0xD5F,
+       0xD50,
+       0xD54,
        0xD64,
        0xD66,
-       0xD76,
-       0xD79,
        0xD80,
        0xD82,
        0xD84,
@@ -83970,7 +87499,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x1C3B,
        0x1C4A,
        0x1C4D,
-       0x1C80,
+       0x1C89,
        0x1CC0,
        0x1CC8,
        0x1CD0,
@@ -83979,7 +87508,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x1CFA,
        0x1D00,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1F16,
        0x1F18,
        0x1F1E,
@@ -84028,7 +87557,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x2100,
        0x218C,
        0x2190,
-       0x23FB,
+       0x23FF,
        0x2400,
        0x2427,
        0x2440,
@@ -84080,7 +87609,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x2DD8,
        0x2DDF,
        0x2DE0,
-       0x2E43,
+       0x2E45,
        0x2E80,
        0x2E9A,
        0x2E9B,
@@ -84120,7 +87649,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0xA640,
        0xA6F8,
        0xA700,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -84130,7 +87659,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0xA840,
        0xA878,
        0xA880,
-       0xA8C5,
+       0xA8C6,
        0xA8CE,
        0xA8DA,
        0xA8E0,
@@ -84254,7 +87783,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x10107,
        0x10134,
        0x10137,
-       0x1018D,
+       0x1018F,
        0x10190,
        0x1019C,
        0x101A0,
@@ -84283,6 +87812,10 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -84394,7 +87927,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x11200,
        0x11212,
        0x11213,
-       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -84439,6 +87972,12 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x1145A,
+       0x1145B,
+       0x1145C,
+       0x1145D,
+       0x1145E,
        0x11480,
        0x114C8,
        0x114D0,
@@ -84451,6 +87990,8 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x11645,
        0x11650,
        0x1165A,
+       0x11660,
+       0x1166D,
        0x11680,
        0x116B8,
        0x116C0,
@@ -84467,6 +88008,20 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C46,
+       0x11C50,
+       0x11C6D,
+       0x11C70,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -84507,6 +88062,12 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x16F7F,
        0x16F8F,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -84577,10 +88138,26 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8C7,
        0x1E8D7,
+       0x1E900,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
+       0x1E95E,
+       0x1E960,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -84668,25 +88245,21 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x1F130,
        0x1F16C,
        0x1F170,
-       0x1F19B,
+       0x1F1AD,
        0x1F1E6,
        0x1F203,
        0x1F210,
-       0x1F23B,
+       0x1F23C,
        0x1F240,
        0x1F249,
        0x1F250,
        0x1F252,
        0x1F300,
-       0x1F57A,
-       0x1F57B,
-       0x1F5A4,
-       0x1F5A5,
-       0x1F6D1,
+       0x1F6D3,
        0x1F6E0,
        0x1F6ED,
        0x1F6F0,
-       0x1F6F4,
+       0x1F6F7,
        0x1F700,
        0x1F774,
        0x1F780,
@@ -84702,9 +88275,19 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
        0x1F890,
        0x1F8AE,
        0x1F910,
-       0x1F919,
+       0x1F91F,
+       0x1F920,
+       0x1F928,
+       0x1F930,
+       0x1F931,
+       0x1F933,
+       0x1F93F,
+       0x1F940,
+       0x1F94C,
+       0x1F950,
+       0x1F95F,
        0x1F980,
-       0x1F985,
+       0x1F992,
        0x1F9C0,
        0x1F9C1,
        0x20000,
@@ -84730,7 +88313,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */
 };
 
 static const UV XPosixPunct_invlist[] = { /* for EBCDIC 037 */
-       323,    /* Number of elements */
+       337,    /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -84906,7 +88489,7 @@ static const UV XPosixPunct_invlist[] = { /* for EBCDIC 037 */
        0x2E00,
        0x2E2F,
        0x2E30,
-       0x2E43,
+       0x2E45,
        0x3001,
        0x3004,
        0x3008,
@@ -85035,14 +88618,26 @@ static const UV XPosixPunct_invlist[] = { /* for EBCDIC 037 */
        0x1123E,
        0x112A9,
        0x112AA,
+       0x1144B,
+       0x11450,
+       0x1145B,
+       0x1145C,
+       0x1145D,
+       0x1145E,
        0x114C6,
        0x114C7,
        0x115C1,
        0x115D8,
        0x11641,
        0x11644,
+       0x11660,
+       0x1166D,
        0x1173C,
        0x1173F,
+       0x11C41,
+       0x11C46,
+       0x11C70,
+       0x11C72,
        0x12470,
        0x12475,
        0x16A6E,
@@ -85056,7 +88651,9 @@ static const UV XPosixPunct_invlist[] = { /* for EBCDIC 037 */
        0x1BC9F,
        0x1BCA0,
        0x1DA87,
-       0x1DA8C
+       0x1DA8C,
+       0x1E95E,
+       0x1E960
 };
 
 static const UV XPosixSpace_invlist[] = { /* for EBCDIC 037 */
@@ -85090,7 +88687,7 @@ static const UV XPosixSpace_invlist[] = { /* for EBCDIC 037 */
 };
 
 static const UV XPosixUpper_invlist[] = { /* for EBCDIC 037 */
-       1275,   /* Number of elements */
+       1279,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -86288,7 +89885,7 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 037 */
        0xA7A8,
        0xA7A9,
        0xA7AA,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B5,
        0xA7B6,
@@ -86297,6 +89894,8 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 037 */
        0xFF3B,
        0x10400,
        0x10428,
+       0x104B0,
+       0x104D4,
        0x10C80,
        0x10CB3,
        0x118A0,
@@ -86363,6 +89962,8 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 037 */
        0x1D7A9,
        0x1D7CA,
        0x1D7CB,
+       0x1E900,
+       0x1E922,
        0x1F130,
        0x1F14A,
        0x1F150,
@@ -86372,7 +89973,7 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 037 */
 };
 
 static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
-       1331,   /* Number of elements */
+       1381,   /* Number of elements */
        148565664, /* Version and data structure type */
        1,      /* 0 if the list starts at 0;
                   1 if it starts at the element beyond 0 */
@@ -86495,6 +90096,10 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
        0x85C,
        0x8A0,
        0x8B5,
+       0x8B6,
+       0x8BE,
+       0x8D4,
+       0x8E2,
        0x8E3,
        0x964,
        0x966,
@@ -86673,7 +90278,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
        0xC64,
        0xC66,
        0xC70,
-       0xC81,
+       0xC80,
        0xC84,
        0xC85,
        0xC8D,
@@ -86715,7 +90320,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
        0xD49,
        0xD4A,
        0xD4F,
-       0xD57,
+       0xD54,
        0xD58,
        0xD5F,
        0xD64,
@@ -86951,6 +90556,8 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
        0x1C4A,
        0x1C4D,
        0x1C7E,
+       0x1C80,
+       0x1C89,
        0x1CD0,
        0x1CD3,
        0x1CD4,
@@ -86959,7 +90566,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
        0x1CFA,
        0x1D00,
        0x1DF6,
-       0x1DFC,
+       0x1DFB,
        0x1F16,
        0x1F18,
        0x1F1E,
@@ -87130,7 +90737,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
        0xA722,
        0xA789,
        0xA78B,
-       0xA7AE,
+       0xA7AF,
        0xA7B0,
        0xA7B8,
        0xA7F7,
@@ -87138,7 +90745,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
        0xA840,
        0xA874,
        0xA880,
-       0xA8C5,
+       0xA8C6,
        0xA8D0,
        0xA8DA,
        0xA8E0,
@@ -87303,6 +90910,10 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
        0x1049E,
        0x104A0,
        0x104AA,
+       0x104B0,
+       0x104D4,
+       0x104D8,
+       0x104FC,
        0x10500,
        0x10528,
        0x10530,
@@ -87407,6 +91018,8 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
        0x11212,
        0x11213,
        0x11238,
+       0x1123E,
+       0x1123F,
        0x11280,
        0x11287,
        0x11288,
@@ -87451,6 +91064,10 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
        0x1136D,
        0x11370,
        0x11375,
+       0x11400,
+       0x1144B,
+       0x11450,
+       0x1145A,
        0x11480,
        0x114C6,
        0x114C7,
@@ -87485,6 +91102,20 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
        0x11900,
        0x11AC0,
        0x11AF9,
+       0x11C00,
+       0x11C09,
+       0x11C0A,
+       0x11C37,
+       0x11C38,
+       0x11C41,
+       0x11C50,
+       0x11C5A,
+       0x11C72,
+       0x11C90,
+       0x11C92,
+       0x11CA8,
+       0x11CA9,
+       0x11CB7,
        0x12000,
        0x1239A,
        0x12400,
@@ -87521,6 +91152,12 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
        0x16F7F,
        0x16F8F,
        0x16FA0,
+       0x16FE0,
+       0x16FE1,
+       0x17000,
+       0x187ED,
+       0x18800,
+       0x18AF3,
        0x1B000,
        0x1B002,
        0x1BC00,
@@ -87619,10 +91256,24 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */
        0x1DAA0,
        0x1DAA1,
        0x1DAB0,
+       0x1E000,
+       0x1E007,
+       0x1E008,
+       0x1E019,
+       0x1E01B,
+       0x1E022,
+       0x1E023,
+       0x1E025,
+       0x1E026,
+       0x1E02B,
        0x1E800,
        0x1E8C5,
        0x1E8D0,
        0x1E8D7,
+       0x1E900,
+       0x1E94B,
+       0x1E950,
+       0x1E95A,
        0x1EE00,
        0x1EE04,
        0x1EE05,
@@ -87735,160 +91386,180 @@ static const UV XPosixXDigit_invlist[] = { /* for EBCDIC 037 */
 
 #if defined(PERL_IN_REGEXEC_C)
 
-static const bool GCB_table[14][14] = {
+#define GCB_NOBREAK      0
+#define GCB_BREAKABLE    1
+#define GCB_RI_then_RI   2
+#define GCB_EX_then_EM   3
+
+static const U8 GCB_table[19][19] = {
    /* 'edg' stands for 'EDGE' */
-/*        XX CR CN EX  L LF LV LVT PP RI SM  T  V edg */
-/* XX */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 1, 1,  1 },
-/* CR */ { 1, 1, 1, 1, 1, 0, 1,  1, 1, 1, 1, 1, 1,  1 },
-/* CN */ { 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1,  1 },
-/* EX */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 1, 1,  1 },
-/* L  */ { 1, 1, 1, 0, 0, 1, 0,  0, 1, 1, 0, 1, 0,  1 },
-/* LF */ { 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1,  1 },
-/* LV */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 0, 0,  1 },
-/* LVT*/ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 0, 1,  1 },
-/* PP */ { 0, 1, 1, 0, 0, 1, 0,  0, 0, 0, 0, 0, 0,  1 },
-/* RI */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 0, 0, 1, 1,  1 },
-/* SM */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 1, 1,  1 },
-/* T  */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 0, 1,  1 },
-/* V  */ { 1, 1, 1, 0, 1, 1, 1,  1, 1, 1, 0, 0, 0,  1 },
-/* edg*/ { 1, 1, 1, 1, 1, 1, 1,  1, 1, 1, 1, 1, 1,  0 }
+/*        XX CR CN EB EBG EM EX GAZ  L LF LV LVT PP RI SM  T  V ZWJ edg */
+/* XX */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* CR */ { 1, 1, 1, 1,  1, 1, 1,  1, 1, 0, 1,  1, 1, 1, 1, 1, 1,  1,  1 },
+/* CN */ { 1, 1, 1, 1,  1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1, 1, 1,  1,  1 },
+/* EB */ { 1, 1, 1, 1,  1, 0, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* EBG*/ { 1, 1, 1, 1,  1, 0, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* EM */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* EX */ { 1, 1, 1, 1,  1, 3, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* GAZ*/ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* L  */ { 1, 1, 1, 1,  1, 1, 0,  1, 0, 1, 0,  0, 1, 1, 0, 1, 0,  0,  1 },
+/* LF */ { 1, 1, 1, 1,  1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1, 1, 1,  1,  1 },
+/* LV */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 0, 0,  0,  1 },
+/* LVT*/ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 0, 1,  0,  1 },
+/* PP */ { 0, 1, 1, 0,  0, 0, 0,  0, 0, 1, 0,  0, 0, 0, 0, 0, 0,  0,  1 },
+/* RI */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 2, 0, 1, 1,  0,  1 },
+/* SM */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* T  */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 0, 1,  0,  1 },
+/* V  */ { 1, 1, 1, 1,  1, 1, 0,  1, 1, 1, 1,  1, 1, 1, 0, 0, 0,  0,  1 },
+/* ZWJ*/ { 1, 1, 1, 1,  0, 1, 0,  0, 1, 1, 1,  1, 1, 1, 0, 1, 1,  0,  1 },
+/* edg*/ { 1, 1, 1, 1,  1, 1, 1,  1, 1, 1, 1,  1, 1, 1, 1, 1, 1,  1,  0 }
 };
 
 #define LB_NOBREAK                        0
 #define LB_BREAKABLE                      1
 #define LB_NOBREAK_EVEN_WITH_SP_BETWEEN   2
-#define LB_CM_foo                         3
+#define LB_CM_ZWJ_foo                     3
 #define LB_SP_foo                         6
 #define LB_PR_or_PO_then_OP_or_HY         9
 #define LB_SY_or_IS_then_various         11
 #define LB_HY_or_BA_then_foo             13
-#define LB_various_then_PO_or_PR         16
+#define LB_RI_then_RI                    15
+#define LB_various_then_PO_or_PR         32
 
-static const U8 LB_table[36][36] = {
+static const U8 LB_table[39][39] = {
    /* 'edg' stands for 'EDGE' */
-/*        AL BA BB B2 SY CR CP CL CM CB EX GL H2 H3 HL HY ID IS IN JL JT JV LF BK NL NS NU OP PO PR QU RI SP WJ ZW edg */
-/* AL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* BA */ {14, 0,14,14, 2, 0, 2, 2, 0, 1, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,14,14,14,14, 0,14, 0, 0, 0,  1 },
-/* BB */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 1, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  1 },
-/* B2 */ { 1, 0, 1, 2, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* SY */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,17,17, 0, 1, 0, 0, 0,  1 },
-/* CR */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* CP */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 0, 1,17,17, 0, 1, 0, 0, 0,  1 },
-/* CL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 1, 1,17,17, 0, 1, 0, 0, 0,  1 },
-/* CM */ { 3, 3, 3, 3, 3, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0,  1 },
-/* CB */ { 1, 1, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* EX */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* GL */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  1 },
-/* H2 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,  1 },
-/* H3 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,  1 },
-/* HL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* HY */ {14, 0,14,14, 2, 0, 2, 2, 0, 1, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,13,14,14,14, 0,14, 0, 0, 0,  1 },
-/* ID */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,  1 },
-/* IS */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,17,17, 0, 1, 0, 0, 0,  1 },
-/* IN */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* JL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 0, 0, 1, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,  1 },
-/* JT */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,  1 },
-/* JV */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0,  1 },
-/* LF */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* BK */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* NL */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* NS */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* NU */ { 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 2, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,  1 },
-/* OP */ { 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0,  1 },
-/* PO */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* PR */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0, 0,  1 },
-/* QU */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,  1 },
-/* RI */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0,  1 },
-/* SP */ { 7, 7, 7, 7, 8, 0, 8, 8, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 0, 8, 0,  1 },
-/* WJ */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  1 },
-/* ZW */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0,  1 },
-/* edg*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0 }
+/*        AL BA BB B2 SY CR CP CL CM CB EB EM EX GL H2 H3 HL HY ID IS IN JL JT JV LF BK NL NS NU OP PO PR QU RI SP WJ ZWJ ZW edg */
+/* AL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,  0, 0,  1 },
+/* BA */ {14, 0,14,14, 2, 0, 2, 2, 0, 1,14,14, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,14,14,14,14, 0,14, 0, 0,  0, 0,  1 },
+/* BB */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,  1 },
+/* B2 */ { 1, 0, 1, 2, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* SY */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,33,33, 0, 1, 0, 0,  0, 0,  1 },
+/* CR */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1,  1 },
+/* CP */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 0, 1,33,33, 0, 1, 0, 0,  0, 0,  1 },
+/* CL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 1, 1,33,33, 0, 1, 0, 0,  0, 0,  1 },
+/* CM */ { 3, 3, 3, 3, 3, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3,  3, 0,  1 },
+/* CB */ { 1, 1, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* EB */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 0, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* EM */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* EX */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* GL */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,  1 },
+/* H2 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* H3 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* HL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,  0, 0,  1 },
+/* HY */ {14, 0,14,14, 2, 0, 2, 2, 0, 1,14,14, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,13,14,14,14, 0,14, 0, 0,  0, 0,  1 },
+/* ID */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* IS */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,33,33, 0, 1, 0, 0,  0, 0,  1 },
+/* IN */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* JL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 0, 0, 1, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* JT */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* JV */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* LF */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1,  1 },
+/* BK */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1,  1 },
+/* NL */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1, 1,  1 },
+/* NS */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* NU */ { 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,  0, 0,  1 },
+/* OP */ { 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2,  2, 0,  1 },
+/* PO */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* PR */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0,  0, 0,  1 },
+/* QU */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,  0, 0,  1 },
+/* RI */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0,15, 0, 0,  0, 0,  1 },
+/* SP */ { 7, 7, 7, 7, 8, 0, 8, 8, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 0, 8,  7, 0,  1 },
+/* WJ */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,  1 },
+/* ZWJ*/ { 3, 3, 3, 3, 3, 0, 3, 3, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3,  0, 0,  1 },
+/* ZW */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1,  1, 0,  1 },
+/* edg*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0,  0 }
 };
 
 #define WB_NOBREAK                        0
 #define WB_BREAKABLE                      1
 #define WB_hs_then_hs                     2
-#define WB_Ex_or_FO_then_foo              3
+#define WB_Ex_or_FO_or_ZWJ_then_foo       3
 #define WB_DQ_then_HL                     4
 #define WB_HL_then_DQ                     6
 #define WB_LE_or_HL_then_MB_or_ML_or_SQ   8
 #define WB_MB_or_ML_or_SQ_then_LE_or_HL  10
 #define WB_MB_or_MN_or_SQ_then_NU        12
 #define WB_NU_then_MB_or_MN_or_SQ        14
+#define WB_RI_then_RI                    16
 
-static const U8 WB_table[19][19] = {
-   /* 'Ext' stands for 'Extend'; 'edg' stands for 'EDGE'; 'hs' stands
-    * for 'Perl_Tailored_HSpace'; 'unk' stands for 'UNKNOWN' */
-/*        XX LE CR DQ Ext EX FO HL KA LF ML MN MB NL NU hs RI SQ edg */
-/* XX */ { 1, 1, 1, 1,  0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* LE */ { 1, 0, 1, 1,  0, 0, 0, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 9,  1 },
-/* CR */ { 1, 1, 0, 1,  1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1,  1 },
-/* DQ */ { 1, 1, 1, 1,  0, 1, 0, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* Ext*/ { 3, 3, 1, 3,  0, 3, 0, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3,  1 },
-/* EX */ { 1, 0, 1, 1,  0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1,  1 },
-/* FO */ { 3, 3, 1, 3,  0, 3, 0, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3,  1 },
-/* HL */ { 1, 0, 1, 7,  0, 0, 0, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 8,  1 },
-/* KA */ { 1, 1, 1, 1,  0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* LF */ { 1, 1, 0, 1,  1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1,  1 },
-/* ML */ { 1,11, 1, 1,  0, 1, 0,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1 },
-/* MN */ { 1, 1, 1, 1,  0, 1, 0, 1, 1, 1, 1, 1, 1, 1,13, 1, 1, 1,  1 },
-/* MB */ { 1,11, 1, 1,  0, 1, 0,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1,  1 },
-/* NL */ { 1, 1, 0, 1,  1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1,  1 },
-/* NU */ { 1, 0, 1, 1,  0, 0, 0, 0, 1, 1, 1,15,15, 1, 0, 1, 1,15,  1 },
-/* hs */ { 1, 1, 0, 1,  0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 2, 1, 1,  1 },
-/* RI */ { 1, 1, 1, 1,  0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,  1 },
-/* SQ */ { 1,11, 1, 1,  0, 1, 0,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1,  1 },
-/* edg*/ { 1, 1, 1, 1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0 }
+static const U8 WB_table[24][24] = {
+   /* 'Ext' stands for 'Extend'; 'edg' stands for 'EDGE'; 'hs' stands for
+    * 'Perl_Tailored_HSpace'; 'unk' stands for 'UNKNOWN' */
+/*        XX LE CR DQ EB EBG EM Ext EX FO GAZ HL KA LF ML MN MB NL NU hs RI SQ ZWJ edg */
+/* XX */ { 1, 1, 1, 1, 1,  1, 1,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* LE */ { 1, 0, 1, 1, 1,  1, 1,  0, 0, 0,  1, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 9,  0,  1 },
+/* CR */ { 1, 1, 0, 1, 1,  1, 1,  1, 1, 1,  1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1,  1,  1 },
+/* DQ */ { 1, 1, 1, 1, 1,  1, 1,  0, 1, 0,  1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* EB */ { 1, 1, 1, 1, 1,  1, 0,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* EBG*/ { 1, 1, 1, 1, 1,  1, 0,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* EM */ { 1, 1, 1, 1, 1,  1, 1,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* Ext*/ { 3, 3, 1, 3, 3,  3, 3,  0, 3, 0,  3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3,  0,  1 },
+/* EX */ { 1, 0, 1, 1, 1,  1, 1,  0, 0, 0,  1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1,  0,  1 },
+/* FO */ { 3, 3, 1, 3, 3,  3, 3,  0, 3, 0,  3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3,  0,  1 },
+/* GAZ*/ { 1, 1, 1, 1, 1,  1, 1,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* HL */ { 1, 0, 1, 7, 1,  1, 1,  0, 0, 0,  1, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 8,  0,  1 },
+/* KA */ { 1, 1, 1, 1, 1,  1, 1,  0, 0, 0,  1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* LF */ { 1, 1, 0, 1, 1,  1, 1,  1, 1, 1,  1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1,  1,  1 },
+/* ML */ { 1,11, 1, 1, 1,  1, 1,  0, 1, 0,  1,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  0,  1 },
+/* MN */ { 1, 1, 1, 1, 1,  1, 1,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1,13, 1, 1, 1,  0,  1 },
+/* MB */ { 1,11, 1, 1, 1,  1, 1,  0, 1, 0,  1,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1,  0,  1 },
+/* NL */ { 1, 1, 0, 1, 1,  1, 1,  1, 1, 1,  1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1,  1,  1 },
+/* NU */ { 1, 0, 1, 1, 1,  1, 1,  0, 0, 0,  1, 0, 1, 1, 1,15,15, 1, 0, 1, 1,15,  0,  1 },
+/* hs */ { 1, 1, 0, 1, 1,  1, 1,  0, 1, 0,  1, 1, 1, 0, 1, 1, 1, 0, 1, 2, 1, 1,  0,  1 },
+/* RI */ { 1, 1, 1, 1, 1,  1, 1,  0, 1, 0,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,16, 1,  0,  1 },
+/* SQ */ { 1,11, 1, 1, 1,  1, 1,  0, 1, 0,  1,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1,  0,  1 },
+/* ZWJ*/ { 3, 3, 1, 3, 3,  0, 3,  0, 3, 0,  0, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3,  0,  1 },
+/* edg*/ { 1, 1, 1, 1, 1,  1, 1,  1, 1, 1,  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  1,  0 }
 };
 
 #endif /* defined(PERL_IN_REGEXEC_C) */
 
 /* Generated from:
- * 66726fe32be96a422e8c9b45bc9daf61e068d988c99ff41112972ef721365521 lib/Unicode/UCD.pm
- * ae98bec7e4f0564758eed81eca5015481ba32581f8a735a825b71b3bba714450 lib/unicore/ArabicShaping.txt
- * 1687fe5994eb7e5c0dab8503fc2a1b3b479d91af9d3b8055941c9bd791f7d0b5 lib/unicore/BidiBrackets.txt
- * 350d1302116194b0b21def287434b55c5088098fbc726e879f7420a391965643 lib/unicore/BidiMirroring.txt
- * 288fc7b85c76bda296e296c8465f1f4baeb456cb814430dfaa0f546bfbe86b4a lib/unicore/Blocks.txt
- * 86e075f2ede997b3fa5965516c75190b5a88bb82d302272d9c3179b7a57af03f lib/unicore/CaseFolding.txt
- * 2fafee5be73bf2817ee669c53c504a6c4aa02ac7344194af18511aea2e05d750 lib/unicore/CompositionExclusions.txt
- * 302f6d6171dc9c6165db86d0226b7923a64cea06c493d339d35436bf137606a3 lib/unicore/DAge.txt
- * ff666dece87dfdbdbf04a2e26a0bfb52c4ba98db1f8965b0b01ddb9e15f97476 lib/unicore/DCoreProperties.txt
- * 6cc76100d402d7dd12bd769ac61158b91e71aad58c8333abb848f1b9c9fdde2d lib/unicore/DNormalizationProps.txt
- * ccc571829b384b8a2c24b7a62f8aa6a891a6e8c48f08513ef84fd6da26dba4bb lib/unicore/EastAsianWidth.txt
- * 2320db06cf88c755ec7b9cfec96dd9e1d774173521dbc3ee7985377c2ab90d32 lib/unicore/HangulSyllableType.txt
- * e52216b5fdb04910e06e94f01cabdf70656b0077c92b756c7b38822626d572f2 lib/unicore/IndicPositionalCategory.txt
- * 4db71a39102e173095cb8bda8b4c35e78fe6b365e443c584b19f081d8c4894fc lib/unicore/IndicSyllabicCategory.txt
- * eeb30346bb545bb45ff16486d9234397bfe1a195bb12b54fc1d9f48f87e8aa5e lib/unicore/Jamo.txt
- * 13e2b7087bcca3163272e64e34e480534bd2f8353a0245c26e6642566f59a60d lib/unicore/LineBreak.txt
- * 9bb54cd7b5509779f269fa60341bcbfca8da8f17d3c4999e44a5a51671d3c402 lib/unicore/NameAliases.txt
- * e4c29d9ceefbe2382af819ac7646265a9e4ea599ce04a90d31bec97cfaa2848f lib/unicore/NamedSequences.txt
- * 70d40297f1bf91397fbdab5a770c12100733e67c5c3398446c5e950715d5e535 lib/unicore/PropList.txt
- * 03a440f2a4b9151043a6bb53d4a4e528b73238079f9d686dc2a5846e6895588a lib/unicore/PropValueAliases.txt
- * 8e8b48c2080d31aa6713f5535aad94a1f7bc9a65cc52563724e5e69b0a3b4196 lib/unicore/PropertyAliases.txt
- * 45d42b1ecbac2263c1c63c95104e63ea64313eb99be94542e040aea11c449f6c lib/unicore/ScriptExtensions.txt
- * 79fbd73ad82c30fdb67d36a349d12667bd58d3e9da6a8ce7dd26383b637ba85f lib/unicore/Scripts.txt
- * fb2025dae3b9b17649b6e379c1cdbddf50641267ca6d2446caeccf4a141fe167 lib/unicore/SpecialCasing.txt
- * 38b17e1118206489a7e0ab5d29d7932212d38838df7d3ec025ecb58e8798ec20 lib/unicore/UnicodeData.txt
- * 0cedd6e0f5cadf57ce9cfc96beccfd083b0faa0809a631a777cd25f0316bfabb lib/unicore/auxiliary/GCBTest.txt
- * 230005412f9a47128e37bc52330766aaa0b5522a53737a89cff66e891e14527a lib/unicore/auxiliary/GraphemeBreakProperty.txt
- * 149b14ab93b06c887a958fb16d0ad01193063ef69cc14f10338ae4d0accd6c28 lib/unicore/auxiliary/LBTest.txt
- * 41bf82452d71ce15eda8c9bb1bb0c20b72205acaaf503e3cb84734ed8e85d33a lib/unicore/auxiliary/SBTest.txt
- * d3b45cdb0a73eeb9d25158336583dfc1e6f64da59537acb0008988b40e6b3b63 lib/unicore/auxiliary/SentenceBreakProperty.txt
- * a661f42a54f7cc4dded72a61c508be2b482f912d4b6cf140335010f0c684dbb9 lib/unicore/auxiliary/WBTest.txt
- * c255bd2e1f163373510679bf4b272eee97b635bfce2a6550d6c10fe5c917f01a lib/unicore/auxiliary/WordBreakProperty.txt
- * 16dac6f1c164a4f52741b71221a8aafb6acb52cd8a436af139da6e93d86efdfb lib/unicore/extracted/DBidiClass.txt
- * c4e78efc041668548117f7462af03b28dfbb2caca5d46a1ae78ae0ce0bb26c4a lib/unicore/extracted/DBinaryProperties.txt
- * 5886bb44aae8f2821663f742793cb91d4ed0923c6840f3bfb73530e37030abf8 lib/unicore/extracted/DCombiningClass.txt
- * 9edba3785ed0e6e46e10f67e2dd0ec3cb0799b7f75f526fe918429576060352e lib/unicore/extracted/DDecompositionType.txt
- * b774387f79b27ae4268ae89450f971408dc9bbbb523426482ab4375c962bd922 lib/unicore/extracted/DEastAsianWidth.txt
- * ba4207d2464077e807b20caf063041142afc0a8a38c328c5c23b3417c9f2da33 lib/unicore/extracted/DGeneralCategory.txt
- * 29fdd151266595eb1b37715937afe0727bb632a2bc1130f0d2314040175df82e lib/unicore/extracted/DJoinGroup.txt
- * 7725fe247da06986e43e89fd316b8b22a0619546d0c1ed499a94b25e9164c150 lib/unicore/extracted/DJoinType.txt
- * 1a0687fb9c6c4567e853913549df0944fe40821279a3e9cdaa6ab8679bc286fd lib/unicore/extracted/DLineBreak.txt
- * 40bcfed3ca727c19e1331f6c33806231d5f7eeeabd2e6a9e06a3740c85d0c250 lib/unicore/extracted/DNumType.txt
- * a18d502bad39d527ac5586d7bc93e29f565859e3bcc24ada627eff606d6f5fed lib/unicore/extracted/DNumValues.txt
- * 718d6ea8b96ee3d12c9c3a48ceb0f5cebe023634002ac8b2ede12b306273aa52 lib/unicore/mktables
- * 462c9aaa608fb2014cd9649af1c5c009485c60b9c8b15b89401fdc10cf6161c6 lib/unicore/version
+ * d4d1ae3d05b9b07d066661a93af8896abe10fbf0f5cbe89575fbbc06a2928d60 lib/Unicode/UCD.pm
+ * 47cb62a53beea6d0263e2147331c7e751853c9327225d95bbe2d9e1dc3e1aa44 lib/unicore/ArabicShaping.txt
+ * 153f0a100c315f9f3945e78f57137611d36c44b3a975919c499fd403413fede8 lib/unicore/BidiBrackets.txt
+ * fbe806975c1bf9fc9960bbaa39ff6290c42c7da8315f9cd459109b024cc1c485 lib/unicore/BidiMirroring.txt
+ * 612127d4889032e55d82522e4a0c19793bda8aa8da14ecb3c696d17c83e6be13 lib/unicore/Blocks.txt
+ * 37d40cf8c2c35637f4a04e746814e1fc4eb764c272bed9238a87ee96a4866857 lib/unicore/CaseFolding.txt
+ * 5623df16856ad4007c60bdfff6f054e087521becd24cb4006be69c3a1d851aee lib/unicore/CompositionExclusions.txt
+ * 5cb15b04693c43df16e0d304deca049e93b001445d163184e0ff1b7c8c852146 lib/unicore/DAge.txt
+ * 6662c7e30b572df5d948c092692f52bcc79ab36d49a063a73d6435042db6fb3b lib/unicore/DCoreProperties.txt
+ * 02d8e12cea7c61a9f3cc5fbf8eaceadf8da23fe83d60c64cf647088830b810cc lib/unicore/DNormalizationProps.txt
+ * 3382cb4980e0021e9d4312f2d099315cfab6100ce0ff63a22d6937bfa720bcb7 lib/unicore/EastAsianWidth.txt
+ * cb02ff25c375e78c82afffc852180eae7fc17c2f4434e697107720d05c52b26e lib/unicore/HangulSyllableType.txt
+ * 850043bc9db08eddb271e43ed9176b865df76745a5fb6e9a4a1d9e54e5036471 lib/unicore/IndicPositionalCategory.txt
+ * 90a3a00a5f5810850986c9279849b03c2f3133cfeeefb0554e851dd5ad7324dc lib/unicore/IndicSyllabicCategory.txt
+ * bbd36a8d27f76e0fe0f2b0ca2827ac80da4b4a8d5247f0b0670fcaaac68ae6e1 lib/unicore/Jamo.txt
+ * e2698584982ccd96e0c688bbcd4d2c48a23805baa0a0084388ef2e50ebd30aad lib/unicore/LineBreak.txt
+ * 9d5353b1d318e72a63a49aa6a6a051d350382ea44b2cf31fe925bb94ce7e129b lib/unicore/NameAliases.txt
+ * 009477f536f63016d901aeb1a4c820ad291e30e72ee9eb9ac1dfb6294a8a9bcc lib/unicore/NamedSequences.txt
+ * f413ea8dbd3858de72f3148b47dd0586019761357d1481e3b65f3a025bc27f82 lib/unicore/PropList.txt
+ * 56582d9875c1997876cf09305ccfc83448195de5d84d6374c78efaffeca4dfd7 lib/unicore/PropValueAliases.txt
+ * 047ab0f815b6d1b30a863d6fcbd49e6358e168a3bd6c7189e80ab9863957d222 lib/unicore/PropertyAliases.txt
+ * cde011921972dffe3e30dcbc7afbf069bf2eb01269097111dd7533b4c524caac lib/unicore/ScriptExtensions.txt
+ * fba415952f5654145acad220dc2b878f815c673474d2bb4928934e3ba6ccca1d lib/unicore/Scripts.txt
+ * dfc4f159c5c68328114ff17cd520451714a72ff48657287e5fe2f64344980695 lib/unicore/SpecialCasing.txt
+ * 68dfc414d28257b9b5d6ddbb8b466c768c00ebdf6cbf7784364a9b6cad55ee8f lib/unicore/UnicodeData.txt
+ * c76e7ed44a602f85161758ec54d2bcbcb7baf38f97720605a3e81ce02af47061 lib/unicore/auxiliary/GCBTest.txt
+ * 4bb8931857e0a698fd2ec4a51a84c6de33e48a50d8b4bf0b57d960c41d77a191 lib/unicore/auxiliary/GraphemeBreakProperty.txt
+ * 0c609ae4a32a89905c004010ef29885df3c60a941311a1a6e16003333d7fcdc8 lib/unicore/auxiliary/LBTest.txt
+ * 26afdd5f38561167807b0f191af55b05761029ae6be2b7fe85b88f28effc66b5 lib/unicore/auxiliary/SBTest.txt
+ * 53982766eeaf26674e7e2ec956c52846d52992ea9f4f1a202d488fb5cd76dd10 lib/unicore/auxiliary/SentenceBreakProperty.txt
+ * 7f60beacc5ec5671edb56db36defc90cfc0016de4fd2bdfde7a3e4ec209840ce lib/unicore/auxiliary/WBTest.txt
+ * cb2db065c77287e0f1d35b8c9b473d848b7566a1670439f67c357ca393084043 lib/unicore/auxiliary/WordBreakProperty.txt
+ * 73573a4bee7f7377d936bc1710cd578001d00ba516e72ee54e906ae51a8c1fcb lib/unicore/extracted/DBidiClass.txt
+ * ae8f55d8bb2bb69a63f70eef38cf5921fc3ba8e06d4d88f37950d32313a14754 lib/unicore/extracted/DBinaryProperties.txt
+ * cf263ac4848d47264300139f97ed15c2c22896d2cef411483cbe292098c08bea lib/unicore/extracted/DCombiningClass.txt
+ * 5bac89caf8d1fa23fcbbbf4d49ea0699b680ef1a73cbfa0daaac38c993906a74 lib/unicore/extracted/DDecompositionType.txt
+ * e17138d36cd91f0e0d16437780a887c5ac637bde0de370b96f08a3424fcc322f lib/unicore/extracted/DEastAsianWidth.txt
+ * fad25c183f4d439622c6be33c22ed709cdc4ac19feef0250527cf319a06952fe lib/unicore/extracted/DGeneralCategory.txt
+ * c0d080b188fbe67dead10a3897dd2ca23da862c7f0b03508a92dcf27cd7e1f41 lib/unicore/extracted/DJoinGroup.txt
+ * 3a8f8642084ed23b0de52af72dea0ff3d0b6928e6c7442832c663899e2b85e9d lib/unicore/extracted/DJoinType.txt
+ * 37f6186253da9824bdb27f4ad867bfe8c25d4dc6bdb2f05585e40a034675a348 lib/unicore/extracted/DLineBreak.txt
+ * ef24061b5a5dc93d7e90c2e34530ec757180ee75d872cba65ffc946e52624ae8 lib/unicore/extracted/DNumType.txt
+ * a197371fec9a1b517058b440841f60f9378d81682084eef8db22a88cb2f96e90 lib/unicore/extracted/DNumValues.txt
+ * 0cc006e22469cee3db1a55a4df1ac656c9d26a70ba920985883eb77198931c1a lib/unicore/mktables
+ * cdecb300baad839a6f62791229f551a4fa33f3cbdca08e378dc976466354e778 lib/unicore/version
  * 913d2f93f3cb6cdf1664db888bf840bc4eb074eef824e082fceda24a9445e60c regen/charset_translations.pl
- * 12bd58cb9d5a99f631ca95e269f7f9c90dacaf81020efa5d95a995f3cdc19200 regen/mk_invlists.pl
+ * 11011bc761487f5a63c8135e67248394d4cdff6f8f204a41cdfbdc8131e79406 regen/mk_invlists.pl
  * ex: set ro: */
index 6e8cd3b..9d3b5d8 100755 (executable)
@@ -3965,6 +3965,9 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  *     DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
  *     DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE
  *     DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE
+ *     DOUBLE_IS_VAX_F_FLOAT
+ *     DOUBLE_IS_VAX_D_FLOAT
+ *     DOUBLE_IS_VAX_G_FLOAT
  *     DOUBLE_IS_UNKNOWN_FORMAT
  */
 #define DOUBLEKIND $doublekind         /**/
@@ -3976,6 +3979,9 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN  6
 #define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE   7
 #define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE   8
+#define DOUBLE_IS_VAX_F_FLOAT  9
+#define DOUBLE_IS_VAX_D_FLOAT  10
+#define DOUBLE_IS_VAX_G_FLOAT  11
 #define DOUBLE_IS_UNKNOWN_FORMAT               -1
 #$d_PRIfldbl PERL_PRIfldbl     $sPRIfldbl      /**/
 #$d_PRIgldbl PERL_PRIgldbl     $sPRIgldbl      /**/
index 0bee17a..ad75b13 100644 (file)
@@ -539,7 +539,7 @@ package Devel::PPPort;
 use strict;
 use vars qw($VERSION $data);
 
-$VERSION = '3.32';
+$VERSION = '3.35';
 
 sub _init_data
 {
index cb59f4b..ac119a6 100644 (file)
@@ -144,15 +144,17 @@ print OUT <<HEAD;
 #define NEED_grok_number
 #define NEED_grok_numeric_radix
 #define NEED_grok_oct
+#define NEED_gv_fetchpvn_flags
 #define NEED_load_module
+#define NEED_mg_findext
 #define NEED_my_snprintf
 #define NEED_my_sprintf
-#define NEED_mg_findext
 #define NEED_my_strlcat
 #define NEED_my_strlcpy
 #define NEED_newCONSTSUB
 #define NEED_newRV_noinc
 #define NEED_newSV_type
+#define NEED_newSVpvn_flags
 #define NEED_newSVpvn_share
 #define NEED_pv_display
 #define NEED_pv_escape
@@ -165,10 +167,10 @@ print OUT <<HEAD;
 #define NEED_sv_setpvf_mg
 #define NEED_sv_setpvf_mg_nocontext
 #define NEED_sv_unmagicext
+#define NEED_SvRX
 #define NEED_vload_module
 #define NEED_vnewSVpvf
 #define NEED_warner
-#define NEED_newSVpvn_flags
 
 #include "ppport.h"
 
index 058c363..fe15354 100644 (file)
@@ -78,13 +78,16 @@ Amn|SV|PL_sv_undef
 Amn|SV|PL_sv_yes
 Amn|U32|GIMME
 Amn|U32|GIMME_V
+Amn|UV|POPu
 Amn|char*|CLASS
 Amn|char*|POPp
 Amn|char*|POPpbytex
 Amn|char*|POPpx
 Amn|long|POPl
+Amn|long|POPul
 Amn|peep_t|PL_peepp
 Amn|peep_t|PL_rpeepp
+Amn|void|DECLARATION_FOR_LC_NUMERIC_MANIPULATION
 Ams||ENTER
 Ams||FREETMPS
 Ams||LEAVE
@@ -175,6 +178,7 @@ Am|NV|SvNV_nomg|SV* sv
 Am|NV|SvNVx|SV* sv
 Am|NV|SvNV|SV* sv
 Am|OP*|LINKLIST|OP *o
+Am|OP*|OpSIBLING|OP *o
 Am|PADOFFSET|pad_add_name_pvs|const char *name|U32 flags|HV *typestash|HV *ourstash
 Am|PADOFFSET|pad_findmy_pvs|const char *name|U32 flags
 Am|REGEXP *|SvRX|SV *sv
@@ -183,6 +187,8 @@ Am|STRLEN|HvENAMELEN|HV *stash
 Am|STRLEN|HvNAMELEN|HV *stash
 Am|STRLEN|SvCUR|SV* sv
 Am|STRLEN|SvLEN|SV* sv
+Am|STRLEN|UTF8SKIP|char* s
+Am|STRLEN|UVCHR_SKIP|UV cp
 Am|STRLEN|isUTF8_CHAR|const U8 *s|const U8 *e
 Am|SV *|boolSV|bool b
 Am|SV *|cop_hints_fetch_pvn|const COP *cop|const char *keypv|STRLEN keylen|U32 hash|U32 flags
@@ -235,19 +241,18 @@ Am|UV|SvUVX|SV* sv
 Am|UV|SvUV_nomg|SV* sv
 Am|UV|SvUVx|SV* sv
 Am|UV|SvUV|SV* sv
-Am|UV|toFOLD_uni|UV cp|U8* s|STRLEN* lenp
 Am|UV|toFOLD_utf8|U8* p|U8* s|STRLEN* lenp
-Am|UV|toLOWER_uni|UV cp|U8* s|STRLEN* lenp
+Am|UV|toFOLD_uvchr|UV cp|U8* s|STRLEN* lenp
 Am|UV|toLOWER_utf8|U8* p|U8* s|STRLEN* lenp
-Am|UV|toTITLE_uni|UV cp|U8* s|STRLEN* lenp
+Am|UV|toLOWER_uvchr|UV cp|U8* s|STRLEN* lenp
 Am|UV|toTITLE_utf8|U8* p|U8* s|STRLEN* lenp
-Am|UV|toUPPER_uni|UV cp|U8* s|STRLEN* lenp
+Am|UV|toTITLE_uvchr|UV cp|U8* s|STRLEN* lenp
 Am|UV|toUPPER_utf8|U8* p|U8* s|STRLEN* lenp
+Am|UV|toUPPER_uvchr|UV cp|U8* s|STRLEN* lenp
+Am|bool|DO_UTF8|SV* sv
 Am|bool|OP_TYPE_IS_OR_WAS|OP *o|Optype type
 Am|bool|OP_TYPE_IS|OP *o|Optype type
 Am|bool|OpHAS_SIBLING|OP *o
-Am|bool|OpSIBLING_set|OP *o|OP *sib
-Am|bool|OpSIBLING|OP *o
 Am|bool|SvIOK_UV|SV* sv
 Am|bool|SvIOK_notUV|SV* sv
 Am|bool|SvIsCOW_shared_hash|SV* sv
@@ -275,6 +280,8 @@ Am|bool|isSPACE|char ch
 Am|bool|isUPPER|char ch
 Am|bool|isWORDCHAR|char ch
 Am|bool|isXDIGIT|char ch
+Am|bool|memEQ|char* s1|char* s2|STRLEN len
+Am|bool|memNE|char* s1|char* s2|STRLEN len
 Am|bool|strEQ|char* s1|char* s2
 Am|bool|strGE|char* s1|char* s2
 Am|bool|strGT|char* s1|char* s2
@@ -322,6 +329,9 @@ Am|void|Move|void* src|void* dest|int nitems|type
 Am|void|Newxc|void* ptr|int nitems|type|cast
 Am|void|Newxz|void* ptr|int nitems|type
 Am|void|Newx|void* ptr|int nitems|type
+Am|void|OpLASTSIB_set|OP *o|OP *parent
+Am|void|OpMAYBESIB_set|OP *o|OP *sib|OP *parent
+Am|void|OpMORESIB_set|OP *o|OP *sib
 Am|void|PERL_SYS_INIT3|int *argc|char*** argv|char*** env
 Am|void|PERL_SYS_INIT|int *argc|char*** argv
 Am|void|PERL_SYS_TERM|
@@ -336,8 +346,11 @@ Am|void|PoisonFree|void* dest|int nitems|type
 Am|void|PoisonNew|void* dest|int nitems|type
 Am|void|PoisonWith|void* dest|int nitems|type|U8 byte
 Am|void|Poison|void* dest|int nitems|type
+Am|void|RESTORE_LC_NUMERIC
 Am|void|Renewc|void* ptr|int nitems|type|cast
 Am|void|Renew|void* ptr|int nitems|type
+Am|void|STORE_LC_NUMERIC_FORCE_TO_UNDERLYING
+Am|void|STORE_LC_NUMERIC_SET_TO_NEEDED
 Am|void|Safefree|void* ptr
 Am|void|StructCopy|type *src|type *dest|type
 Am|void|SvCUR_set|SV* sv|STRLEN len
index ae821b9..38b77a1 100644 (file)
@@ -3,6 +3,7 @@ GIMME_V                        # E
 G_VOID                         # E
 HePV                           # A
 HeSVKEY_set                    # U
+POPu                           # E
 PUSHu                          # U
 SvSetMagicSV                   # U
 SvSetMagicSV_nosteal           # U
@@ -27,6 +28,8 @@ hv_free_ent                    # E
 ibcmp_locale                   # U
 intro_my                       # E
 isPRINT                        # U
+memEQ                          # U
+memNE                          # U
 my_failure_exit                # E
 newRV_inc                      # U
 newRV_noinc                    # E
@@ -47,5 +50,3 @@ sv_vcatpvfn                    # E
 sv_vsetpvfn                    # E
 toLOWER_LC                     # U
 SvUVXx                         # added by devel/scanprov
-memEQ                          # added by devel/scanprov
-memNE                          # added by devel/scanprov
index 82fdcf0..daf95d5 100644 (file)
@@ -5,6 +5,7 @@ PL_sv_undef                    # E
 PL_sv_yes                      # E
 SvGETMAGIC                     # U
 do_binmode                     # E
+my_bcopy                       # U
 newCONSTSUB                    # E
 newSVpvn                       # E
 save_aelem                     # U
index 6748296..6cf8275 100644 (file)
@@ -1,6 +1,8 @@
 5.006000
+DO_UTF8                        # U
 PERL_SYS_INIT3                 # U
 POPn                           # E
+POPul                          # E
 PUSHn                          # E
 SvIOK_UV                       # U
 SvIOK_notUV                    # U
@@ -23,6 +25,7 @@ SvPVutf8x_force                # U
 SvUTF8                         # U
 SvUTF8_off                     # U
 SvUTF8_on                      # U
+UTF8SKIP                       # U
 XPUSHn                         # E
 XSRETURN_NV                    # E
 XST_mNV                        # E
index 9347217..127a118 100644 (file)
@@ -53,10 +53,6 @@ sv_nosharing                   # U
 sv_pvn_nomg                    # U
 sv_recode_to_utf8              # U
 sv_uni_display                 # U
-toFOLD_uni                     # U
-toLOWER_uni                    # A
-toTITLE_uni                    # A
-toUPPER_uni                    # A
 to_uni_fold                    # U
 to_uni_lower                   # E (Perl_to_uni_lower)
 to_uni_title                   # E (Perl_to_uni_title)
index 48a800a..93df2b4 100644 (file)
@@ -17,6 +17,7 @@ sv_cat_decode                  # U
 sv_setpviv                     # U
 sv_setpviv_mg                  # U
 unpackstring                   # U
+C_ARRAY_LENGTH                 # added by devel/scanprov
 IN_PERL_COMPILETIME            # added by devel/scanprov
 PERL_ABS                       # added by devel/scanprov
 PERL_GCC_BRACE_GROUPS_FORBIDDEN # added by devel/scanprov
index e8f1065..8b69a99 100644 (file)
@@ -36,7 +36,6 @@ savepvs                        # U
 sortsv_flags                   # U
 sv_catpvs                      # U
 vverify                        # U
-GvSVn                          # added by devel/scanprov
 HvNAMELEN_get                  # added by devel/scanprov
 HvNAME_get                     # added by devel/scanprov
 PERLIO_FUNCS_CAST              # added by devel/scanprov
index fa236f0..5a2f6b8 100644 (file)
@@ -40,4 +40,3 @@ PERL_USE_GCC_BRACE_GROUPS      # added by devel/scanprov
 SV_HAS_TRAILING_NUL            # added by devel/scanprov
 SvVSTRING_mg                   # added by devel/scanprov
 gv_fetchpvs                    # added by devel/scanprov
-isGV_with_GP                   # added by devel/scanprov
index f2f116d..8a31cc7 100644 (file)
@@ -1 +1,2 @@
 5.013000
+cBOOL                          # added by devel/scanprov
index fa6d99b..5058d1e 100644 (file)
@@ -7,3 +7,4 @@ foldEQ_utf8                    # U
 hv_fill                        # U
 sv_dec_nomg                    # U
 sv_inc_nomg                    # U
+C_ARRAY_END                    # added by devel/scanprov
index e25404d..516327e 100644 (file)
@@ -25,6 +25,7 @@ sv_derived_from_sv             # U
 sv_does_pv                     # U
 sv_does_pvn                    # U
 sv_does_sv                     # U
+sv_ref                         # U
 whichsig_pv                    # U
 whichsig_pvn                   # U
 whichsig_sv                    # U
diff --git a/cpan/Devel-PPPort/parts/base/5020002 b/cpan/Devel-PPPort/parts/base/5020002
new file mode 100644 (file)
index 0000000..e31c0d0
--- /dev/null
@@ -0,0 +1 @@
+5.020002
diff --git a/cpan/Devel-PPPort/parts/base/5020003 b/cpan/Devel-PPPort/parts/base/5020003
new file mode 100644 (file)
index 0000000..89ec619
--- /dev/null
@@ -0,0 +1 @@
+5.020003
index 6e66213..353feda 100644 (file)
@@ -10,3 +10,4 @@ isIDFIRST_lazy                 # U
 isUTF8_CHAR                    # U
 markstack_grow                 # E (Perl_markstack_grow)
 my_strerror                    # U
+PERL_UNUSED_RESULT             # added by devel/scanprov
index 1e17e3d..abe5ac1 100644 (file)
@@ -1,4 +1,3 @@
 5.021002
 grok_number_flags              # U
-op_parent                      # U
 op_sibling_splice              # U
index 03c81e0..bcaa19c 100644 (file)
@@ -1,7 +1,6 @@
 5.021007
 OpHAS_SIBLING                  # U
 OpSIBLING                      # U
-OpSIBLING_set                  # U
 PadnameUTF8                    # E
 is_invariant_string            # U
 newPADNAMELIST                 # U
index 7a8f642..ccba00c 100644 (file)
@@ -1,66 +1,2 @@
 5.021008
-BhkDISABLE                     # E
-BhkENABLE                      # E
-BhkENTRY_set                   # E
-MULTICALL                      # E
-PERL_SYS_TERM                  # E
-POP_MULTICALL                  # E
-PUSH_MULTICALL                 # E
-PadARRAY                       # E
-PadMAX                         # E
-PadlistARRAY                   # E
-PadlistMAX                     # E
-PadlistNAMES                   # E
-PadlistNAMESARRAY              # E
-PadlistNAMESMAX                # E
-PadnameLEN                     # E
-PadnamePV                      # E
-PadnameREFCNT                  # E
-PadnameREFCNT_dec              # E
-PadnameSV                      # E
-PadnamelistARRAY               # E
-PadnamelistMAX                 # E
-PadnamelistREFCNT              # E
-PadnamelistREFCNT_dec          # E
-XS_APIVERSION_BOOTCHECK        # E
-XS_EXTERNAL                    # E
-XS_INTERNAL                    # E
-XS_VERSION_BOOTCHECK           # E
-XopDISABLE                     # E
-XopENABLE                      # E
-XopENTRY                       # E
-XopENTRYCUSTOM                 # E
-XopENTRY_set                   # E
-cophh_new_empty                # E
-my_lstat                       # U (Perl_my_lstat)
-my_stat                        # U (Perl_my_stat)
-reentrant_free                 # U
-reentrant_init                 # U
-reentrant_retry                # U
-reentrant_size                 # U
-ref                            # U (Perl_ref)
 sv_get_backrefs                # U
-sv_magic_portable              # U
-sv_setref_pvs                  # A
-PERL_BCDVERSION                # added by devel/scanprov
-PERL_MAGIC_glob                # added by devel/scanprov
-PERL_MAGIC_mutex               # added by devel/scanprov
-PERL_MAGIC_overload            # added by devel/scanprov
-PERL_MAGIC_overload_elem       # added by devel/scanprov
-PL_bufend                      # added by devel/scanprov
-PL_bufptr                      # added by devel/scanprov
-PL_copline                     # added by devel/scanprov
-PL_error_count                 # added by devel/scanprov
-PL_expect                      # added by devel/scanprov
-PL_in_my                       # added by devel/scanprov
-PL_in_my_stash                 # added by devel/scanprov
-PL_lex_state                   # added by devel/scanprov
-PL_lex_stuff                   # added by devel/scanprov
-PL_linestr                     # added by devel/scanprov
-PL_rsfp                        # added by devel/scanprov
-PL_rsfp_filters                # added by devel/scanprov
-PL_tokenbuf                    # added by devel/scanprov
-WARN_ASSERTIONS                # added by devel/scanprov
-aTHXR                          # added by devel/scanprov
-aTHXR_                         # added by devel/scanprov
-dTHXR                          # added by devel/scanprov
diff --git a/cpan/Devel-PPPort/parts/base/5021009 b/cpan/Devel-PPPort/parts/base/5021009
new file mode 100644 (file)
index 0000000..7397722
--- /dev/null
@@ -0,0 +1 @@
+5.021009
diff --git a/cpan/Devel-PPPort/parts/base/5021010 b/cpan/Devel-PPPort/parts/base/5021010
new file mode 100644 (file)
index 0000000..821a8fb
--- /dev/null
@@ -0,0 +1,2 @@
+5.021010
+DECLARATION_FOR_LC_NUMERIC_MANIPULATION # E
diff --git a/cpan/Devel-PPPort/parts/base/5021011 b/cpan/Devel-PPPort/parts/base/5021011
new file mode 100644 (file)
index 0000000..6d0f3ba
--- /dev/null
@@ -0,0 +1,4 @@
+5.021011
+OpLASTSIB_set                  # U
+OpMAYBESIB_set                 # U
+OpMORESIB_set                  # U
diff --git a/cpan/Devel-PPPort/parts/base/5022000 b/cpan/Devel-PPPort/parts/base/5022000
new file mode 100644 (file)
index 0000000..aca319e
--- /dev/null
@@ -0,0 +1,2 @@
+5.022000
+UVCHR_SKIP                     # U
diff --git a/cpan/Devel-PPPort/parts/base/5022001 b/cpan/Devel-PPPort/parts/base/5022001
new file mode 100644 (file)
index 0000000..28befba
--- /dev/null
@@ -0,0 +1 @@
+5.022001
diff --git a/cpan/Devel-PPPort/parts/base/5023000 b/cpan/Devel-PPPort/parts/base/5023000
new file mode 100644 (file)
index 0000000..e461a32
--- /dev/null
@@ -0,0 +1 @@
+5.023000
diff --git a/cpan/Devel-PPPort/parts/base/5023001 b/cpan/Devel-PPPort/parts/base/5023001
new file mode 100644 (file)
index 0000000..ea44212
--- /dev/null
@@ -0,0 +1 @@
+5.023001
diff --git a/cpan/Devel-PPPort/parts/base/5023002 b/cpan/Devel-PPPort/parts/base/5023002
new file mode 100644 (file)
index 0000000..2060466
--- /dev/null
@@ -0,0 +1 @@
+5.023002
diff --git a/cpan/Devel-PPPort/parts/base/5023003 b/cpan/Devel-PPPort/parts/base/5023003
new file mode 100644 (file)
index 0000000..4b19a24
--- /dev/null
@@ -0,0 +1 @@
+5.023003
diff --git a/cpan/Devel-PPPort/parts/base/5023004 b/cpan/Devel-PPPort/parts/base/5023004
new file mode 100644 (file)
index 0000000..ce60a67
--- /dev/null
@@ -0,0 +1 @@
+5.023004
diff --git a/cpan/Devel-PPPort/parts/base/5023005 b/cpan/Devel-PPPort/parts/base/5023005
new file mode 100644 (file)
index 0000000..1b8818c
--- /dev/null
@@ -0,0 +1 @@
+5.023005
diff --git a/cpan/Devel-PPPort/parts/base/5023006 b/cpan/Devel-PPPort/parts/base/5023006
new file mode 100644 (file)
index 0000000..f6c5994
--- /dev/null
@@ -0,0 +1 @@
+5.023006
diff --git a/cpan/Devel-PPPort/parts/base/5023007 b/cpan/Devel-PPPort/parts/base/5023007
new file mode 100644 (file)
index 0000000..fb7c553
--- /dev/null
@@ -0,0 +1 @@
+5.023007
diff --git a/cpan/Devel-PPPort/parts/base/5023008 b/cpan/Devel-PPPort/parts/base/5023008
new file mode 100644 (file)
index 0000000..ed2ef6d
--- /dev/null
@@ -0,0 +1,22 @@
+5.023008
+clear_defarray                 # U
+cx_popblock                    # U
+cx_popeval                     # U
+cx_popformat                   # U
+cx_popgiven                    # U
+cx_poploop                     # U
+cx_popsub                      # U
+cx_popsub_args                 # U
+cx_popsub_common               # U
+cx_popwhen                     # U
+cx_pushblock                   # U
+cx_pusheval                    # U
+cx_pushformat                  # U
+cx_pushgiven                   # U
+cx_pushloop_for                # U
+cx_pushloop_plain              # U
+cx_pushsub                     # U
+cx_pushwhen                    # U
+cx_topblock                    # U
+leave_adjust_stacks            # U
+savetmps                       # U
diff --git a/cpan/Devel-PPPort/parts/base/5023009 b/cpan/Devel-PPPort/parts/base/5023009
new file mode 100644 (file)
index 0000000..336b09a
--- /dev/null
@@ -0,0 +1,5 @@
+5.023009
+toFOLD_uvchr                   # U
+toLOWER_uvchr                  # U
+toTITLE_uvchr                  # U
+toUPPER_uvchr                  # U
diff --git a/cpan/Devel-PPPort/parts/base/5024000 b/cpan/Devel-PPPort/parts/base/5024000
new file mode 100644 (file)
index 0000000..32870f9
--- /dev/null
@@ -0,0 +1,68 @@
+5.024000
+BhkDISABLE                     # E
+BhkENABLE                      # E
+BhkENTRY_set                   # E
+MULTICALL                      # E
+PERL_SYS_TERM                  # E
+POP_MULTICALL                  # E
+PUSH_MULTICALL                 # E
+PadARRAY                       # E
+PadMAX                         # E
+PadlistARRAY                   # E
+PadlistMAX                     # E
+PadlistNAMES                   # E
+PadlistNAMESARRAY              # E
+PadlistNAMESMAX                # E
+PadnameLEN                     # E
+PadnamePV                      # E
+PadnameREFCNT                  # E
+PadnameREFCNT_dec              # E
+PadnameSV                      # E
+PadnamelistARRAY               # E
+PadnamelistMAX                 # E
+PadnamelistREFCNT              # E
+PadnamelistREFCNT_dec          # E
+RESTORE_LC_NUMERIC             # E
+STORE_LC_NUMERIC_FORCE_TO_UNDERLYING # E
+STORE_LC_NUMERIC_SET_TO_NEEDED # E
+XS_APIVERSION_BOOTCHECK        # E
+XS_EXTERNAL                    # E
+XS_INTERNAL                    # E
+XS_VERSION_BOOTCHECK           # E
+XopDISABLE                     # E
+XopENABLE                      # E
+XopENTRY                       # E
+XopENTRYCUSTOM                 # E
+XopENTRY_set                   # E
+cophh_new_empty                # E
+my_lstat                       # U (Perl_my_lstat)
+my_stat                        # U (Perl_my_stat)
+reentrant_free                 # U
+reentrant_init                 # U
+reentrant_retry                # U
+reentrant_size                 # U
+ref                            # U (Perl_ref)
+sv_magic_portable              # U
+sv_setref_pvs                  # A
+PERL_BCDVERSION                # added by devel/scanprov
+PERL_MAGIC_glob                # added by devel/scanprov
+PERL_MAGIC_mutex               # added by devel/scanprov
+PERL_MAGIC_overload            # added by devel/scanprov
+PERL_MAGIC_overload_elem       # added by devel/scanprov
+PL_bufend                      # added by devel/scanprov
+PL_bufptr                      # added by devel/scanprov
+PL_copline                     # added by devel/scanprov
+PL_error_count                 # added by devel/scanprov
+PL_expect                      # added by devel/scanprov
+PL_in_my                       # added by devel/scanprov
+PL_in_my_stash                 # added by devel/scanprov
+PL_lex_state                   # added by devel/scanprov
+PL_lex_stuff                   # added by devel/scanprov
+PL_linestr                     # added by devel/scanprov
+PL_rsfp                        # added by devel/scanprov
+PL_rsfp_filters                # added by devel/scanprov
+PL_tokenbuf                    # added by devel/scanprov
+WARN_ASSERTIONS                # added by devel/scanprov
+aTHXR                          # added by devel/scanprov
+aTHXR_                         # added by devel/scanprov
+dTHXR                          # added by devel/scanprov
index 746d0ca..a64ffba 100644 (file)
@@ -71,7 +71,8 @@
 :
 :   M  May change:
 :
-:         any doc entry is marked that function may change
+:         any doc entry is marked that function may change.  Also used to
+:        suppress making a doc entry if it would just be a placeholder.
 :
 :   m  Implemented as a macro:
 :
@@ -230,7 +231,9 @@ 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|SSize_t key|NULLOK SV *val
+#ifndef PERL_NO_INLINE_FUNCTIONS
 AidR   |SSize_t|av_top_index   |NN AV *av
+#endif
 AmpdR  |SSize_t|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
@@ -244,7 +247,7 @@ s   |MAGIC* |get_aux_mg     |NN AV *av
 pR     |OP*    |bind_match     |I32 type|NN OP *left|NN OP *right
 : Used in perly.y
 ApdR   |OP*    |block_end      |I32 floor|NULLOK OP* seq
-ApR    |I32    |block_gimme
+ApR    |U8     |block_gimme
 : Used in perly.y
 ApdR   |int    |block_start    |int full
 Aodp   |void   |blockhook_register |NN BHK *hk
@@ -269,7 +272,7 @@ p   |const COP*|closest_cop |NN const COP *cop|NULLOK const OP *o \
 : Used in perly.y
 ApdR   |OP*    |op_convert_list        |I32 optype|I32 flags|NULLOK OP* o
 : Used in op.c and perl.c
-pM     |PERL_CONTEXT*  |create_eval_scope|U32 flags
+pM     |void   |create_eval_scope|NULLOK OP *retop|U32 flags
 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|...
@@ -317,7 +320,7 @@ pRn |SV*    |cv_const_sv_or_av|NULLOK const CV *const cv
 Apd    |SV *   |cv_name        |NN CV *cv|NULLOK SV *sv|U32 flags
 Apd    |void   |cv_undef       |NN CV* cv
 p      |void   |cv_undef_flags |NN CV* cv|U32 flags
-p      |void   |cv_forget_slab |NN CV *cv
+p      |void   |cv_forget_slab |NULLOK 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
@@ -334,7 +337,7 @@ ApR |I32    |cxinc
 Afp    |void   |deb            |NN const char* pat|...
 Ap     |void   |vdeb           |NN const char* pat|NULLOK va_list* args
 Ap     |void   |debprofdump
-EXp    |SV*    |multideref_stringify   |NN const OP* o|NN CV *cv
+EXp    |SV*    |multideref_stringify   |NN const OP* o|NULLOK CV *cv
 Ap     |I32    |debop          |NN const OP* o
 Ap     |I32    |debstack
 Ap     |I32    |debstackptrs
@@ -349,9 +352,9 @@ Afrpd   |OP*    |die            |NULLOK const char* pat|...
 pr     |void   |die_unwind     |NN SV* msv
 Ap     |void   |dounwind       |I32 cxix
 : FIXME
-pmb    |bool   |do_aexec       |NULLOK SV* really|NN SV** mark|NN SV** sp
+pmb    |bool|do_aexec  |NULLOK SV* really|NN SV** mark|NN SV** sp
 : Used in pp_sys.c
-p      |bool   |do_aexec5      |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int do_report
+p      |bool|do_aexec5 |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int do_report
 Ap     |int    |do_binmode     |NN PerlIO *fp|int iotype|int mode
 : Used in pp.c
 Ap     |bool   |do_close       |NULLOK GV* gv|bool not_implicit
@@ -359,9 +362,9 @@ Ap  |bool   |do_close       |NULLOK GV* gv|bool not_implicit
 p      |bool   |do_eof         |NN GV* gv
 
 #ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
-pm     |bool   |do_exec        |NN const char* cmd
+pm     |bool|do_exec   |NN const char* cmd
 #else
-p      |bool   |do_exec        |NN const char* cmd
+p      |bool|do_exec   |NN const char* cmd
 #endif
 
 #if defined(WIN32) || defined(__SYMBIAN32__) || defined(VMS)
@@ -370,7 +373,7 @@ Ap  |int    |do_spawn       |NN char* cmd
 Ap     |int    |do_spawn_nowait|NN char* cmd
 #endif
 #if !defined(WIN32)
-p      |bool   |do_exec3       |NN const char *incmd|int fd|int do_report
+p      |bool|do_exec3  |NN const char *incmd|int fd|int do_report
 #endif
 p      |void   |do_execfree
 #if defined(PERL_IN_DOIO_C)
@@ -440,7 +443,7 @@ p   |void   |do_vecset      |NN SV* sv
 p      |void   |do_vop         |I32 optype|NN SV* sv|NN SV* left|NN SV* right
 : Used in perly.y
 p      |OP*    |dofile         |NN OP* term|I32 force_builtin
-ApR    |I32    |dowantarray
+ApR    |U8     |dowantarray
 Ap     |void   |dump_all
 p      |void   |dump_all_perl  |bool justperl
 Ap     |void   |dump_eval
@@ -653,7 +656,9 @@ pR  |OP*    |invert         |NULLOK OP* cmd
 ApR    |I32    |is_lvalue_sub
 : Used in cop.h
 XopR   |I32    |was_lvalue_sub
+#ifndef PERL_NO_INLINE_FUNCTIONS
 AiMRn  |STRLEN |_is_utf8_char_slow|NN const U8 *s|NN const U8 *e
+#endif
 ADMpPR |U32    |to_uni_upper_lc|U32 c
 ADMpPR |U32    |to_uni_title_lc|U32 c
 ADMpPR |U32    |to_uni_lower_lc|U32 c
@@ -781,13 +786,14 @@ Apd       |void   |op_null        |NN OP* o
 EXp    |void   |op_clear       |NN OP* o
 Ap     |void   |op_refcnt_lock
 Ap     |void   |op_refcnt_unlock
-Apdn   |OP*    |op_sibling_splice|NN OP *parent|NULLOK OP *start \
+Apdn   |OP*    |op_sibling_splice|NULLOK OP *parent|NULLOK OP *start \
                |int del_count|NULLOK OP* insert
+#ifdef PERL_OP_PARENT
 Apdn   |OP*    |op_parent|NN OP *o
+#endif
 #if defined(PERL_IN_OP_C)
 s      |OP*    |listkids       |NULLOK OP* o
 #endif
-: Used in S_doeval in pp_ctl.c
 p      |OP*    |list           |NULLOK OP* o
 Apd    |void   |load_module|U32 flags|NN SV* name|NULLOK SV* ver|...
 Ap     |void   |vload_module|U32 flags|NN SV* name|NULLOK SV* ver|NULLOK va_list* args
@@ -795,22 +801,23 @@ 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
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
-EMsR   |char   |grok_bslash_c  |const char source|const bool output_warning
-EMsR   |bool   |grok_bslash_o  |NN char** s|NN UV* uv           \
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C)
+EMpRX  |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
-EMiR   |bool   |grok_bslash_x  |NN char** s|NN UV* uv           \
+EMpRX  |char   |grok_bslash_c  |const char source|const bool output_warning
+EMpRX  |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
-EMsPR  |char*|form_short_octal_warning|NN const char * const s  \
+EMiR   |char*|form_short_octal_warning|NN const char * const s  \
                                |const STRLEN len
+EiPRn  |I32    |regcurly       |NN const char *s
 #endif
 Apd    |UV     |grok_hex       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
 Apd    |int    |grok_infnan    |NN const char** sp|NN const char *send
@@ -924,11 +931,11 @@ s |void   |move_proto_attr|NN OP **proto|NN OP **attrs|NN const GV *name
 p      |int    |mode_from_discipline|NULLOK const char* s|STRLEN len
 Ap     |const char*    |moreswitches   |NN const char* s
 Ap     |NV     |my_atof        |NN const char *s
-#if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY))
-Anp    |char*  |my_bcopy       |NN const char* from|NN char* to|I32 len
+#if !defined(HAS_MEMCPY) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY))
+Anp    |void*  |my_bcopy       |NN const void* vfrom|NN void* vto|size_t len
 #endif
 #if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
-Anp    |char*  |my_bzero       |NN char* loc|I32 len
+Anp    |void*  |my_bzero       |NN void* vloc|size_t len
 #endif
 Apr    |void   |my_exit        |U32 status
 Apr    |void   |my_failure_exit
@@ -939,10 +946,10 @@ Anp       |void   |atfork_unlock
 Apmb   |I32    |my_lstat
 pX     |I32    |my_lstat_flags |NULLOK const U32 flags
 #if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
-AnpP   |I32    |my_memcmp      |NN const char* s1|NN const char* s2|I32 len
+AnpP   |int    |my_memcmp      |NN const void* vs1|NN const void* vs2|size_t len
 #endif
 #if !defined(HAS_MEMSET)
-Anp    |void*  |my_memset      |NN char* loc|I32 ch|I32 len
+Anp    |void*  |my_memset      |NN void* vloc|int ch|size_t len
 #endif
 #if !defined(PERL_IMPLICIT_SYS)
 Ap     |I32    |my_pclose      |NULLOK PerlIO* ptr
@@ -960,9 +967,6 @@ ADMnoPR     |UV     |ASCII_TO_NEED  |const UV enc|const UV ch
 Apa    |OP*    |newANONLIST    |NULLOK OP* o
 Apa    |OP*    |newANONHASH    |NULLOK OP* o
 Ap     |OP*    |newANONSUB     |I32 floor|NULLOK OP* proto|NULLOK OP* block
-#if defined(PERL_IN_OP_C)
-i      |bool   |aassign_common_vars    |NULLOK OP* o
-#endif
 Apda   |OP*    |newASSIGNOP    |I32 flags|NULLOK OP* left|I32 optype|NULLOK OP* right
 Apda   |OP*    |newCONDOP      |I32 flags|NN OP* first|NULLOK OP* trueop|NULLOK OP* falseop
 Apd    |CV*    |newCONSTSUB    |NULLOK HV* stash|NULLOK const char* name|NULLOK SV* sv
@@ -1161,12 +1165,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     |SV*    |regclass_swash |NULLOK const regexp *prog \
+ApM    |SV*    |regclass_swash |NULLOK const regexp *prog \
                                |NN const struct regnode *node|bool doinit \
                                |NULLOK SV **listsvp|NULLOK SV **altsvp
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C)
 AMpR   |SV*    |_new_invlist_C_array|NN const UV* const list
-: Not used currently: EXMs     |bool   |_invlistEQ     |NN SV* const a|NN SV* const b|const bool complement_b
+EXMp   |bool   |_invlistEQ     |NN SV* const a|NN SV* const b|const bool complement_b
 #endif
 Ap     |I32    |pregexec       |NN REGEXP * const prog|NN char* stringarg \
                                |NN char* strend|NN char* strbeg \
@@ -1196,9 +1200,6 @@ Ap        |char*  |re_intuit_start|NN REGEXP * const rx \
                                |const U32 flags \
                                |NULLOK re_scream_pos_data *data
 Ap     |SV*    |re_intuit_string|NN REGEXP  *const r
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
-EiPRn  |I32    |regcurly       |NN const char *s
-#endif
 Ap     |I32    |regexec_flags  |NN REGEXP *const rx|NN char *stringarg \
                                |NN char *strend|NN char *strbeg \
                                |SSize_t minend|NN SV *sv \
@@ -1258,7 +1259,6 @@ Ap        |void   |savestack_grow_cnt     |I32 need
 Amp    |void   |save_aelem     |NN AV* av|SSize_t idx|NN SV **sptr
 Ap     |void   |save_aelem_flags|NN AV* av|SSize_t idx|NN SV **sptr \
                                 |const U32 flags
-p      |void   |save_aliased_sv|NN GV* gv
 Ap     |I32    |save_alloc     |I32 size|I32 pad
 Ap     |void   |save_aptr      |NN AV** aptr
 Ap     |AV*    |save_ary       |NN GV* gv
@@ -1276,7 +1276,7 @@ Apmb      |void   |save_freepv    |NULLOK char* pv
 Ap     |void   |save_generic_svref|NN SV** sptr
 Ap     |void   |save_generic_pvref|NN char** str
 Ap     |void   |save_shared_pvref|NN char** str
-A    |void   |save_gp        |NN GV* gv|I32 empty
+Adp    |void   |save_gp        |NN GV* gv|I32 empty
 Ap     |HV*    |save_hash      |NN GV* gv
 Ap     |void   |save_hints
 Amp    |void   |save_helem     |NN HV *hv|NN SV *key|NN SV **sptr
@@ -1302,6 +1302,7 @@ Ap        |void   |save_padsv_and_mortalize|PADOFFSET off
 Ap     |void   |save_sptr      |NN SV** sptr
 Xp     |void   |save_strlen    |NN STRLEN* ptr
 Ap     |SV*    |save_svref     |NN SV** sptr
+AMpo   |void   |savetmps
 Ap     |void   |save_pushptr   |NULLOK void *const ptr|const int type
 Ap     |void   |save_pushi32ptr|const I32 i|NULLOK void *const ptr|const int type
 : Used by SAVESWITCHSTACK() in pp.c
@@ -1375,7 +1376,7 @@ Apd       |I32    |sv_true        |NULLOK SV *const sv
 sd     |void   |sv_add_arena   |NN char *const ptr|const U32 size \
                                |const U32 flags
 #endif
-Apdn   |int    |sv_backoff     |NN SV *const sv
+Apdn   |void   |sv_backoff     |NN SV *const sv
 Apd    |SV*    |sv_bless       |NN SV *const sv|NN HV *const stash
 #if defined(PERL_DEBUG_READONLY_COW)
 p      |void   |sv_buf_to_ro   |NN SV *sv
@@ -1447,7 +1448,9 @@ Apd       |void   |sv_magic       |NN SV *const sv|NULLOK SV *const obj|const int how \
 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
+#ifndef PERL_NO_INLINE_FUNCTIONS
 Ein    |bool   |sv_only_taint_gmagic|NN SV *sv
+#endif
 : exported for re.pm
 EXp    |MAGIC *|sv_magicext_mglob|NN SV *sv
 ApdbamR        |SV*    |sv_mortalcopy  |NULLOK SV *const oldsv
@@ -1468,7 +1471,7 @@ Apd       |char*  |sv_recode_to_utf8      |NN SV* sv|NN SV *encoding
 Apd    |bool   |sv_cat_decode  |NN SV* dsv|NN SV *encoding|NN SV *ssv|NN int *offset \
                                |NN char* tstr|int tlen
 ApdR   |const char*    |sv_reftype     |NN const SV *const sv|const int ob
-pd     |SV*    |sv_ref |NULLOK SV *dst|NN const SV *const sv|const int ob
+Apd    |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
@@ -1512,8 +1515,8 @@ Apd       |void   |sv_vsetpvfn    |NN SV *const sv|NN const char *const pat|const STRLEN pa
                                |NULLOK va_list *const args|NULLOK SV **const svargs \
                                |const I32 svmax|NULLOK bool *const maybe_tainted
 ApR    |NV     |str_to_version |NN SV *sv
-ApR    |SV*    |swash_init     |NN const char* pkg|NN const char* name|NN SV* listsv|I32 minbits|I32 none
-Ap     |UV     |swash_fetch    |NN SV *swash|NN const U8 *ptr|bool do_utf8
+ApRM   |SV*    |swash_init     |NN const char* pkg|NN const char* name|NN SV* listsv|I32 minbits|I32 none
+ApM    |UV     |swash_fetch    |NN SV *swash|NN const U8 *ptr|bool do_utf8
 #ifdef PERL_IN_REGCOMP_C
 EiMR   |SV*    |add_cp_to_invlist      |NULLOK SV* invlist|const UV cp
 EsM    |void   |_append_range_to_invlist   |NN SV* const invlist|const UV start|const UV end
@@ -1521,12 +1524,14 @@ EiMRn   |UV*    |_invlist_array_init    |NN SV* const invlist|const bool will_have_0
 EsM    |void   |invlist_extend    |NN SV* const invlist|const UV len
 EiMRn  |UV     |invlist_max    |NN SV* const invlist
 EiM    |void   |invlist_set_len|NN SV* const invlist|const UV len|const bool offset
+EiMRn  |bool   |invlist_is_iterating|NN SV* const invlist
 #ifndef PERL_EXT_RE_BUILD
+EsM    |void   |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src
 EiMRn  |IV*    |get_invlist_previous_index_addr|NN SV* invlist
-EiMRn  |bool   |invlist_is_iterating|NN SV* const invlist
 EiMn   |void   |invlist_set_previous_index|NN SV* const invlist|const IV index
 EiMRn  |IV     |invlist_previous_index|NN SV* const invlist
-EiMn   |void   |invlist_trim   |NN SV* const invlist
+EiMn   |void   |invlist_trim   |NN SV* invlist
+EiM    |void   |invlist_clear  |NN SV* invlist
 #endif
 EiMR   |SV*    |invlist_clone  |NN SV* const invlist
 EiMRn  |STRLEN*|get_invlist_iter_addr  |NN SV* invlist
@@ -1536,6 +1541,8 @@ EiMn      |void   |invlist_iterfinish|NN SV* invlist
 EiMRn  |UV     |invlist_highest|NN SV* const invlist
 EMRs   |SV*    |_make_exactf_invlist   |NN RExC_state_t *pRExC_state \
                                        |NN regnode *node
+EsMR   |SV*    |invlist_contents|NN SV* const invlist              \
+                                |const bool traditional_style
 #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
@@ -1561,7 +1568,6 @@ EXp       |SV*    |_core_swash_init|NN const char* pkg|NN const char* name \
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
 EiMRn  |UV*    |invlist_array  |NN SV* const invlist
-EXMpR  |SV*    |_invlist_contents|NN SV* const invlist
 EiMRn  |bool*  |get_invlist_offset_addr|NN SV* invlist
 EiMRn  |UV     |_invlist_len   |NN SV* const invlist
 EMiRn  |bool   |_invlist_contains_cp|NN SV* const invlist|const UV cp
@@ -1576,7 +1582,7 @@ ApM       |SV*    |_get_regclass_nonbitmap_data                              \
                                |bool doinit                               \
                                |NULLOK SV **listsvp                       \
                                |NULLOK SV **lonly_utf8_locale             \
-                               |NULLOK SV *exclude_list
+                               |NULLOK SV **output_invlist
 EXp    |void|_load_PL_utf8_foldclosures|
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C)
@@ -1586,8 +1592,21 @@ EXMp     |void   |_invlist_dump  |NN PerlIO *file|I32 level   \
 #endif
 Ap     |void   |taint_env
 Ap     |void   |taint_proper   |NULLOK const char* f|NN const char *const s
-Apd    |UV     |to_utf8_case   |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp \
-                               |NN SV **swashp|NN const char *normal|NULLOK const char *special
+ApdD   |UV     |to_utf8_case   |NN const U8 *p                                 \
+                               |NN U8* ustrp                                   \
+                               |NULLOK STRLEN *lenp                            \
+                               |NN SV **swashp                                 \
+                               |NN const char *normal|                         \
+                               NULLOK const char *special
+#if defined(PERL_IN_UTF8_C)
+s      |UV     |_to_utf8_case  |const UV uv1                                   \
+                               |NN const U8 *p                                 \
+                               |NN U8* ustrp                                   \
+                               |NULLOK STRLEN *lenp                            \
+                               |NN SV **swashp                                 \
+                               |NN const char *normal                          \
+                               |NULLOK const char *special
+#endif
 Abmd   |UV     |to_utf8_lower  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
 AMp    |UV     |_to_utf8_lower_flags   |NN const U8 *p|NN U8* ustrp  \
                                |NULLOK STRLEN *lenp|bool flags
@@ -1623,7 +1642,7 @@ Ap        |U8*    |utf16_to_utf8  |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
 Ap     |U8*    |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
 AdpPR  |STRLEN |utf8_length    |NN const U8* s|NN const U8 *e
 ApdPR  |IV     |utf8_distance  |NN const U8 *a|NN const U8 *b
-ApdPRn |U8*    |utf8_hop       |NN const U8 *s|I32 off
+ApdPRn |U8*    |utf8_hop       |NN const U8 *s|SSize_t off
 ApMd   |U8*    |utf8_to_bytes  |NN U8 *s|NN STRLEN *len
 Apd    |int    |bytes_cmp_utf8 |NN const U8 *b|STRLEN blen|NN const U8 *u \
                                |STRLEN ulen
@@ -1691,8 +1710,10 @@ Am       |I32    |whichsig       |NN const char* sig
 Ap     |I32    |whichsig_sv    |NN SV* sigsv
 Ap     |I32    |whichsig_pv    |NN const char* sig
 Ap     |I32    |whichsig_pvn   |NN const char* sig|STRLEN len
+#ifndef PERL_NO_INLINE_FUNCTIONS
 : used to check for NULs in pathnames and other names
 AiR    |bool   |is_safe_syscall|NN const char *pv|STRLEN len|NN const char *what|NN const char *op_name
+#endif
 #ifdef PERL_CORE
 inR    |bool   |should_warn_nl|NN const char *pv
 #endif
@@ -2042,20 +2063,18 @@ sR      |OP*    |dofindlabel    |NN OP *o|NN const char *label|STRLEN len \
 s      |MAGIC *|doparseform    |NN SV *sv
 snR    |bool   |num_overflow   |NV value|I32 fldsize|I32 frcsize
 sR     |I32    |dopoptoeval    |I32 startingblock
-sR     |I32    |dopoptogiven   |I32 startingblock
+sR     |I32    |dopoptogivenfor|I32 startingblock
 sR     |I32    |dopoptolabel   |NN const char *label|STRLEN len|U32 flags
 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 \
+s      |bool   |doeval_compile |U8 gimme \
                                |NULLOK CV* outside|U32 seq|NULLOK HV* hh
 sR     |PerlIO *|check_type_and_open|NN SV *name
 #ifndef PERL_DISABLE_PMC
 sR     |PerlIO *|doopen_pm     |NN SV *name
 #endif
-s      |SV **  |leave_common   |NN SV **newsp|NN SV **sp|NN SV **mark|I32 gimme \
-                                     |U32 flags|bool lvalue
 iRn    |bool   |path_is_searchable|NN const char *name
 sR     |I32    |run_user_filter|int idx|NN SV *buf_sv|int maxlen
 sR     |PMOP*  |make_matcher   |NN REGEXP* re
@@ -2076,9 +2095,9 @@ s |I32    |sv_i_ncmp      |NN SV *const a|NN SV *const b
 s      |I32    |amagic_ncmp    |NN SV *const a|NN SV *const b
 s      |I32    |amagic_i_ncmp  |NN SV *const a|NN SV *const b
 s      |I32    |amagic_cmp     |NN SV *const str1|NN SV *const str2
-#   ifdef USE_LOCALE_COLLATE
+#  ifdef USE_LOCALE_COLLATE
 s      |I32    |amagic_cmp_locale|NN SV *const str1|NN SV *const str2
-#endif
+#  endif
 s      |I32    |sortcv         |NN SV *const a|NN SV *const b
 s      |I32    |sortcv_xsub    |NN SV *const a|NN SV *const b
 s      |I32    |sortcv_stacked |NN SV *const a|NN SV *const b
@@ -2099,6 +2118,7 @@ p |OP *   |tied_method|NN SV *methname|NN SV **sp \
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
 Ep     |void   |regprop        |NULLOK const regexp *prog|NN SV* sv|NN const regnode* o|NULLOK const regmatch_info *reginfo \
                                |NULLOK const RExC_state_t *pRExC_state
+Ep     |int    |re_printf      |NN const char *fmt|...
 #endif
 #if defined(PERL_IN_REGCOMP_C)
 Es     |regnode*|reg           |NN RExC_state_t *pRExC_state \
@@ -2124,6 +2144,10 @@ Es       |void    |set_ANYOF_arg |NN RExC_state_t* const pRExC_state \
                                |NULLOK SV* const only_utf8_locale_list    \
                                |NULLOK SV* const swash                    \
                                |const bool has_user_defined_property
+Es     |void   |output_or_return_posix_warnings                            \
+                               |NN RExC_state_t *pRExC_state               \
+                               |NN AV* posix_warnings                      \
+                               |NULLOK AV** return_posix_warnings
 Es     |AV*     |add_multi_match|NULLOK AV* multi_char_matches             \
                                |NN SV* multi_string                        \
                                |const STRLEN cp_count
@@ -2132,40 +2156,52 @@ Es      |regnode*|regclass      |NN RExC_state_t *pRExC_state                 \
                                |bool allow_multi_fold                        \
                                |const bool silence_non_portable              \
                                |const bool strict                            \
-                               |NULLOK SV** ret_invlist
+                               |bool optimizable                             \
+                               |NULLOK SV** ret_invlist                      \
+                               |NULLOK AV** return_posix_warnings
 Es     |void|add_above_Latin1_folds|NN RExC_state_t *pRExC_state|const U8 cp \
                                |NN SV** invlist
-Esn    |bool|could_it_be_a_POSIX_class|NN RExC_state_t *pRExC_state
+Ei     |regnode*|handle_named_backref|NN RExC_state_t *pRExC_state         \
+                               |NN I32 *flagp                              \
+                               |NN char * parse_start                      \
+                               |char ch
+EsnP   |unsigned int|regex_set_precedence|const U8 my_operator
 Es     |regnode*|handle_regex_sets|NN 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 RExC_state_t *pRExC_state
 Es     |regnode*|reg_node      |NN RExC_state_t *pRExC_state|U8 op
-Es     |UV     |reg_recode     |const char value|NN SV **encp
+Es     |UV     |reg_recode     |const U8 value|NN SV **encp
 Es     |regnode*|regpiece      |NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|U32 depth
-Es     |STRLEN |grok_bslash_N  |NN RExC_state_t *pRExC_state               \
-                               |NULLOK regnode** nodep|NULLOK UV *valuep   \
-                               |NN I32 *flagp|U32 depth                    \
-                               |NULLOK SV** substitute_parse
+Es     |bool   |grok_bslash_N  |NN RExC_state_t *pRExC_state               \
+                               |NULLOK regnode** nodep                     \
+                               |NULLOK UV *code_point_p                    \
+                               |NULLOK int* cp_count                       \
+                               |NN I32 *flagp                              \
+                               |const bool strict                          \
+                               |const U32 depth
 Es     |void   |reginsert      |NN RExC_state_t *pRExC_state \
                                |U8 op|NN regnode *opnd|U32 depth
-Es     |void   |regtail        |NN RExC_state_t *pRExC_state \
-                               |NN regnode *p|NN const regnode *val|U32 depth
+Es     |void   |regtail        |NN RExC_state_t * pRExC_state              \
+                               |NN const regnode * const p                 \
+                               |NN const regnode * const val               \
+                               |const U32 depth
 Es     |SV *   |reg_scan_name  |NN RExC_state_t *pRExC_state \
                                |U32 flags
 Es     |U32    |join_exact     |NN RExC_state_t *pRExC_state \
                                |NN regnode *scan|NN UV *min_subtract  \
                                |NN bool *unfolded_multi_char          \
                                |U32 flags|NULLOK regnode *val|U32 depth
-EsRn   |char * |regpatws       |NN RExC_state_t *pRExC_state \
-                               |NN char *p|const bool recognize_comment
 Ei     |void   |alloc_maybe_populate_EXACT|NN RExC_state_t *pRExC_state \
                                |NN regnode *node|NN I32 *flagp|STRLEN len \
                                |UV code_point|bool downgradable
 Ein    |U8   |compute_EXACTish|NN RExC_state_t *pRExC_state
-Es     |char * |nextchar       |NN RExC_state_t *pRExC_state
+Es     |void   |nextchar       |NN RExC_state_t *pRExC_state
+Es     |void   |skip_to_be_ignored_text|NN RExC_state_t *pRExC_state  \
+                               |NN char ** p                       \
+                               |const bool force_to_xmod
 Ein    |char * |reg_skipcomment|NN RExC_state_t *pRExC_state|NN char * p
 Es     |void   |scan_commit    |NN const RExC_state_t *pRExC_state \
                                |NN struct scan_data_t *data        \
@@ -2210,8 +2246,12 @@ Es       |SSize_t|study_chunk    |NN RExC_state_t *pRExC_state \
 EsRn   |U32    |add_data       |NN RExC_state_t* const pRExC_state \
                                |NN const char* const s|const U32 n
 rs     |void   |re_croak2      |bool utf8|NN const char* pat1|NN const char* pat2|...
-Ei     |I32    |regpposixcc    |NN RExC_state_t *pRExC_state \
-                               |I32 value|const bool strict
+Es     |int    |handle_possible_posix                                      \
+                               |NN RExC_state_t *pRExC_state               \
+                               |NN const char* const s                     \
+                               |NULLOK char ** updated_parse_ptr           \
+                               |NULLOK AV** posix_warnings                 \
+                               |const bool check_only
 Es     |I32    |make_trie      |NN RExC_state_t *pRExC_state \
                                |NN regnode *startbranch|NN regnode *first \
                                |NN regnode *last|NN regnode *tail \
@@ -2219,7 +2259,13 @@ Es       |I32    |make_trie      |NN RExC_state_t *pRExC_state \
 Es     |regnode *|construct_ahocorasick_from_trie|NN RExC_state_t *pRExC_state \
                                 |NN regnode *source|U32 depth
 EnPs   |const char *|cntrl_to_mnemonic|const U8 c
+EnPs   |int    |edit_distance  |NN const UV *src                   \
+                               |NN const UV *tgt                   \
+                               |const STRLEN x                     \
+                               |const STRLEN y                     \
+                               |const SSize_t maxDistance
 #  ifdef DEBUGGING
+Ep     |int    |re_indentf     |NN const char *fmt|U32 depth|...
 Es        |void        |regdump_intflags|NULLOK const char *lead| const U32 flags
 Es     |void   |regdump_extflags|NULLOK const char *lead| const U32 flags
 Es     |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \
@@ -2228,9 +2274,21 @@ Es       |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \
                                |NULLOK const regnode *plast \
                                |NN SV* sv|I32 indent|U32 depth
 Es     |void   |put_code_point |NN SV* sv|UV c
-Es     |bool   |put_charclass_bitmap_innards|NN SV* sv     \
-                               |NN char* bitmap            \
-                               |NULLOK SV** bitmap_invlist
+Es     |bool   |put_charclass_bitmap_innards|NN SV* sv             \
+                               |NN char* bitmap                    \
+                               |NULLOK SV* nonbitmap_invlist       \
+                               |NULLOK SV* only_utf8_locale_invlist\
+                               |NULLOK const regnode * const node
+Es     |SV*    |put_charclass_bitmap_innards_common                \
+                               |NN SV* invlist                     \
+                               |NULLOK SV* posixes                 \
+                               |NULLOK SV* only_utf8               \
+                               |NULLOK SV* not_utf8                \
+                               |NULLOK SV* only_utf8_locale        \
+                               |const bool invert
+Es     |void   |put_charclass_bitmap_innards_invlist               \
+                               |NN SV *sv                          \
+                               |NN SV* invlist
 Es     |void   |put_range      |NN SV* sv|UV start|const UV end    \
                                |const bool allow_literals
 Es     |void   |dump_trie      |NN const struct _reg_trie_data *trie\
@@ -2256,7 +2314,7 @@ ERs       |I32    |regrepeat      |NN regexp *prog|NN char **startposp \
                                |NN regmatch_info *const reginfo \
                                |I32 max \
                                |int depth
-ERs    |I32    |regtry         |NN regmatch_info *reginfo|NN char **startposp
+ERs    |bool   |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       \
@@ -2277,44 +2335,59 @@ Es      |void   |to_utf8_substr |NN regexp * prog
 Es     |bool   |to_byte_substr |NN regexp * prog
 ERsn   |I32    |reg_check_named_buff_matched   |NN const regexp *rex \
                                                |NN const regnode *scan
-EsnR   |bool   |isGCB          |const PL_GCB_enum before|const PL_GCB_enum after
-EsR    |bool   |isSB           |PL_SB_enum before                              \
-                               |PL_SB_enum after                               \
+EinR   |bool   |isGCB          |const GCB_enum before|const GCB_enum after
+EsR    |bool   |isLB           |LB_enum before                         \
+                               |LB_enum after                          \
+                               |NN const U8 * const strbeg             \
+                               |NN const U8 * const curpos             \
+                               |NN const U8 * const strend             \
+                               |const bool utf8_target
+EsR    |LB_enum|advance_one_LB |NN U8 ** curpos                                \
+                               |NN const U8 * const strend                     \
+                               |const bool utf8_target
+EsR    |LB_enum|backup_one_LB  |NN const U8 * const strbeg                     \
+                               |NN U8 ** curpos                                \
+                               |const bool utf8_target
+EsR    |bool   |isSB           |SB_enum before                         \
+                               |SB_enum after                          \
                                |NN const U8 * const strbeg                     \
                                |NN const U8 * const curpos                     \
                                |NN const U8 * const strend                     \
                                |const bool utf8_target
-EsR    |PL_SB_enum|advance_one_SB|NN U8 ** curpos                              \
+EsR    |SB_enum|advance_one_SB |NN U8 ** curpos                                \
                                |NN const U8 * const strend                     \
                                |const bool utf8_target
-EsR    |PL_SB_enum|backup_one_SB|NN const U8 * const strbeg                    \
+EsR    |SB_enum|backup_one_SB  |NN const U8 * const strbeg                     \
                                |NN U8 ** curpos                                \
                                |const bool utf8_target
-EsR    |bool   |isWB           |PL_WB_enum previous                            \
-                               |PL_WB_enum before                              \
-                               |PL_WB_enum after                               \
+EsR    |bool   |isWB           |WB_enum previous                               \
+                               |WB_enum before                         \
+                               |WB_enum after                          \
                                |NN const U8 * const strbeg                     \
                                |NN const U8 * const curpos                     \
                                |NN const U8 * const strend                     \
                                |const bool utf8_target
-EsR    |PL_WB_enum|advance_one_WB|NN U8 ** curpos                              \
+EsR    |WB_enum|advance_one_WB |NN U8 ** curpos                                \
                                |NN const U8 * const strend                     \
-                               |const bool utf8_target
-EsR    |PL_WB_enum|backup_one_WB|NN PL_WB_enum * previous                      \
+                               |const bool utf8_target                         \
+                               |const bool skip_Extend_Format
+EsR    |WB_enum|backup_one_WB  |NN WB_enum * previous                  \
                                |NN const U8 * const strbeg                     \
                                |NN U8 ** curpos                                \
                                |const bool utf8_target
 #  ifdef DEBUGGING
 Es     |void   |dump_exec_pos  |NN const char *locinput|NN const regnode *scan|NN const char *loc_regeol\
-                               |NN const char *loc_bostr|NN const char *loc_reg_starttry|const bool do_utf8
+                               |NN const char *loc_bostr|NN const char *loc_reg_starttry|const bool do_utf8|const U32 depth
 Es     |void   |debug_start_match|NN const REGEXP *prog|const bool do_utf8\
                                |NN const char *start|NN const char *end\
                                |NN const char *blurb
+
+Ep     |int    |re_exec_indentf        |NN const char *fmt|U32 depth|...
 #  endif
 #endif
 
 #if defined(PERL_IN_DUMP_C)
-s      |CV*    |deb_curcv      |const I32 ix
+s      |CV*    |deb_curcv      |I32 ix
 s      |void   |debprof        |NN const OP *o
 s      |UV     |sequence_num   |NULLOK const OP *o
 s      |SV*    |pm_description |NN const PMOP *pm
@@ -2376,9 +2449,6 @@ s |STRLEN |sv_pos_b2u_midway|NN const U8 *const s|NN const U8 *const target \
 s      |void   |assert_uft8_cache_coherent|NN const char *const func \
                |STRLEN from_cache|STRLEN real|NN SV *const sv
 sn     |char * |F0convert      |NV nv|NN char *const endbuf|NN STRLEN *const len
-#  if defined(PERL_OLD_COPY_ON_WRITE)
-sM     |void   |sv_release_COW |NN SV *sv|NN const char *pvx|NN SV *after
-#  endif
 s      |SV *   |more_sv
 s      |bool   |sv_2iuv_common |NN SV *const sv
 s      |void   |glob_assign_glob|NN SV *const dstr|NN SV *const sstr \
@@ -2472,8 +2542,14 @@ s        |char*  |stdize_locale  |NN char* locs
 #if defined(USE_LOCALE) \
     && (defined(PERL_IN_LOCALE_C) || defined (PERL_EXT_POSIX))
 ApM    |bool   |_is_cur_LC_category_utf8|int category
+#      ifdef DEBUGGING
+AMnPpR |char * |_setlocale_debug_string|const int category                 \
+                                       |NULLOK const char* const locale    \
+                                       |NULLOK const char* const retval
+#      endif
 #endif
 
+
 #if defined(PERL_IN_UTIL_C)
 s      |SV*    |mess_alloc
 s      |SV *   |with_queued_errors|NN SV *ex
@@ -2487,6 +2563,12 @@ sn       |void   |mem_log_common |enum mem_log_type mlt|const UV n|const UV typesize \
 #endif
 #endif
 
+#if defined(PERL_MEM_LOG)
+pn     |Malloc_t       |mem_log_alloc  |const UV nconst|UV typesize|NN const char *type_name|Malloc_t newalloc|NN const char *filename|const int linenumber|NN const char *funcname
+pn     |Malloc_t       |mem_log_realloc        |const UV n|const UV typesize|NN const char *type_name|Malloc_t oldalloc|Malloc_t newalloc|NN const char *filename|const int linenumber|NN const char *funcname
+pn     |Malloc_t       |mem_log_free   |Malloc_t oldalloc|NN const char *filename|const int linenumber|NN const char *funcname
+#endif
+
 #if defined(PERL_IN_NUMERIC_C)
 #ifndef USE_QUADMATH
 sn     |NV|mulexp10    |NV value|I32 exponent
@@ -2506,7 +2588,9 @@ sRM       |U8*    |swash_scan_list_line|NN U8* l|NN U8* const lend|NN UV* min \
                |NN const U8* const typestr
 #endif
 
+#ifndef PERL_NO_INLINE_FUNCTIONS
 AiMn   |void   |append_utf8_from_native_byte|const U8 byte|NN U8** dest
+#endif
 
 Apd    |void   |sv_setsv_flags |NN SV *dstr|NULLOK SV *sstr|const I32 flags
 Apd    |void   |sv_catpvn_flags|NN SV *const dstr|NN const char *sstr|const STRLEN len \
@@ -2600,8 +2684,6 @@ Apd       |PADOFFSET|pad_findmy_pv|NN const char* name|U32 flags
 Apd    |PADOFFSET|pad_findmy_sv|NN SV* name|U32 flags
 ApdD   |PADOFFSET|find_rundefsvoffset  |
 Apd    |SV*    |find_rundefsv  |
-: Used in pp.c
-p      |SV*    |find_rundefsv2 |NN CV *cv|U32 seq
 #if defined(PERL_IN_PAD_C)
 sd     |PADOFFSET|pad_findlex  |NN const char *namepv|STRLEN namelen|U32 flags \
                                |NN const CV* cv|U32 seq|int warn \
@@ -2743,7 +2825,7 @@ so        |void   |xs_version_bootcheck|U32 items|U32 ax|NN const char *xs_p \
 #endif
 Xpon   |I32    |xs_handshake   |const U32 key|NN void * v_my_perl\
                                |NN const char * file| ...
-Xp     |void   |xs_boot_epilog |const U32 ax
+Xp     |void   |xs_boot_epilog |const I32 ax
 #ifndef HAS_STRLCAT
 Apnod  |Size_t |my_strlcat     |NULLOK char *dst|NULLOK const char *src|Size_t size
 #endif
@@ -2834,5 +2916,41 @@ Ei       |STRLEN |sv_or_pv_pos_u2b|NN SV *sv|NN const char *pv|STRLEN pos \
 #endif
 
 EMpPX  |SV*    |_get_encoding
+Ap     |void   |clear_defarray |NN AV* av|bool abandon
+
+ApM    |void   |leave_adjust_stacks|NN SV **from_sp|NN SV **to_sp \
+                |U8 gimme|int filter
+
+#ifndef PERL_NO_INLINE_FUNCTIONS
+AiM    |PERL_CONTEXT * |cx_pushblock|U8 type|U8 gimme|NN SV** sp|I32 saveix
+AiM    |void   |cx_popblock|NN PERL_CONTEXT *cx
+AiM    |void   |cx_topblock|NN PERL_CONTEXT *cx
+AiM    |void   |cx_pushsub      |NN PERL_CONTEXT *cx|NN CV *cv \
+                                |NULLOK OP *retop|bool hasargs
+AiM    |void   |cx_popsub_common|NN PERL_CONTEXT *cx
+AiM    |void   |cx_popsub_args  |NN PERL_CONTEXT *cx
+AiM    |void   |cx_popsub       |NN PERL_CONTEXT *cx
+AiM    |void   |cx_pushformat   |NN PERL_CONTEXT *cx|NN CV *cv \
+                                |NULLOK OP *retop|NULLOK GV *gv
+AiM    |void   |cx_popformat    |NN PERL_CONTEXT *cx
+AiM    |void   |cx_pusheval     |NN PERL_CONTEXT *cx \
+                                |NULLOK OP *retop|NULLOK SV *namesv
+AiM    |void   |cx_popeval      |NN PERL_CONTEXT *cx
+AiM    |void   |cx_pushloop_plain|NN PERL_CONTEXT *cx
+AiM    |void   |cx_pushloop_for |NN PERL_CONTEXT *cx \
+                                |NN void *itervarp|NULLOK SV *itersave
+AiM    |void   |cx_poploop      |NN PERL_CONTEXT *cx
+AiM    |void   |cx_pushwhen     |NN PERL_CONTEXT *cx
+AiM    |void   |cx_popwhen      |NN PERL_CONTEXT *cx
+AiM    |void   |cx_pushgiven    |NN PERL_CONTEXT *cx|NULLOK SV *orig_defsv
+AiM    |void   |cx_popgiven     |NN PERL_CONTEXT *cx
+#endif
+
+#ifdef USE_DTRACE
+XEop    |void   |dtrace_probe_call |NN CV *cv|bool is_call
+XEop    |void   |dtrace_probe_load |NN const char *name|bool is_loading
+XEop    |void   |dtrace_probe_op   |NN const OP *op
+XEop    |void   |dtrace_probe_phase|enum perl_phase phase
+#endif
 
 : ex: set ts=8 sts=4 sw=4 noet:
index 62afb5b..d2f526f 100644 (file)
 
 =provides
 
-__UNDEFINED__
+gv_fetchpvn_flags
 
 =implementation
 
+#ifndef gv_fetchpvn_flags
+#if { NEED gv_fetchpvn_flags }
+
+GV*
+gv_fetchpvn_flags(pTHX_ const char* name, STRLEN len, int flags, int types) {
+       char *namepv = savepvn(name, len);
+       GV* stash = gv_fetchpv(namepv, TRUE, SVt_PVHV);
+       Safefree(namepv);
+       return stash;
+}
+
+#endif
+#endif
+
 __UNDEFINED__ GvSVn(gv)        GvSV(gv)
 __UNDEFINED__ isGV_with_GP(gv) isGV(gv)
-__UNDEFINED__ gv_fetchpvn_flags(name, len, flags, svt) gv_fetchpv(name, flags, svt)
 __UNDEFINED__ gv_fetchsv(name, flags, svt) gv_fetchpv(SvPV_nolen_const(name), flags, svt)
 
 __UNDEFINED__ get_cvn_flags(name, namelen, flags) get_cv(name, flags)
+__UNDEFINED__ gv_init_pvn(gv, stash, ptr, len, flags) gv_init(gv, stash, ptr, len, flags & GV_ADDMULTI ? TRUE : FALSE)
+
+=xsinit
+
+#define NEED_gv_fetchpvn_flags
 
 =xsubs
 
@@ -74,7 +92,11 @@ get_cvn_flags()
 SV*
 gv_fetchpvn_flags()
         CODE:
-                RETVAL = newRV_inc((SV*)gv_fetchpvn_flags("Devel::PPPort::VERSION", sizeof("Devel::PPPort::VERSION")-1, 0, SVt_PV));
+#if { VERSION < 5.9.2 } || { VERSION > 5.9.3 } /* 5.9.2 and 5.9.3 ignore the length param */
+                RETVAL = newRV_inc((SV*)gv_fetchpvn_flags("Devel::PPPort::VERSIONFAKE", sizeof("Devel::PPPort::VERSIONFAKE")-5, 0, SVt_PV));
+#else
+                RETVAL = newRV_inc((SV*)gv_fetchpvn_flags("Devel::PPPort::VERSION", 0, 0, SVt_PV));
+#endif
         OUTPUT:
                 RETVAL
 
@@ -86,7 +108,24 @@ gv_fetchsv(name)
         OUTPUT:
                 RETVAL
 
-=tests plan => 5
+void
+gv_init_type(namesv, multi, flags)
+    SV* namesv
+    int multi
+    I32 flags
+    PREINIT:
+        HV *defstash = gv_stashpv("main", 0);
+        STRLEN len;
+        const char * const name = SvPV_const(namesv, len);
+        GV *gv = *(GV**)hv_fetch(defstash, name, len, TRUE);
+    PPCODE:
+        if (SvTYPE(gv) == SVt_PVGV)
+            Perl_croak(aTHX_ "GV is already a PVGV");
+        if (multi) flags |= GV_ADDMULTI;
+        gv_init_pvn(gv, defstash, name, len, flags);
+       XPUSHs( gv ? (SV*)gv : &PL_sv_undef);
+
+=tests plan => 7
 
 ok(Devel::PPPort::GvSVn(), 1);
 
@@ -97,3 +136,6 @@ ok(Devel::PPPort::get_cvn_flags(), 3);
 ok(Devel::PPPort::gv_fetchpvn_flags(), \*Devel::PPPort::VERSION);
 
 ok(Devel::PPPort::gv_fetchsv("Devel::PPPort::VERSION"), \*Devel::PPPort::VERSION);
+
+ok(Devel::PPPort::gv_init_type("sanity_check", 0, 0), "*main::sanity_check");
+ok($::{sanity_check});
index a99cd80..bf43a9c 100644 (file)
@@ -29,13 +29,15 @@ __UNDEFINED__  SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_E
 
 __UNDEFINED__  HEf_SVKEY   -2
 
+#ifndef MUTABLE_PTR
 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
 #  define MUTABLE_PTR(p) ({ void *_p = (p); _p; })
 #else
 #  define MUTABLE_PTR(p) ((void *) (p))
 #endif
+#endif
 
-#define MUTABLE_SV(p)   ((SV *)MUTABLE_PTR(p))
+__UNDEFINED__ MUTABLE_SV(p)   ((SV *)MUTABLE_PTR(p))
 
 /* end of random bits */
 
index aedad05..181311e 100644 (file)
@@ -16,6 +16,7 @@ PERL_UNUSED_DECL
 PERL_UNUSED_ARG
 PERL_UNUSED_VAR
 PERL_UNUSED_CONTEXT
+PERL_UNUSED_RESULT
 PERL_GCC_BRACE_GROUPS_FORBIDDEN
 PERL_USE_GCC_BRACE_GROUPS
 PERLIO_FUNCS_DECL
@@ -38,9 +39,51 @@ UTF8_MAXBYTES
 WIDEST_UTYPE
 XSRETURN
 HeUTF8
+C_ARRAY_LENGTH
+C_ARRAY_END
+SvRX
+SvRXOK
+PERL_MAGIC_qr
+cBOOL
+OpHAS_SIBLING
+OpSIBLING
+OpMORESIB_set
+OpLASTSIB_set
+OpMAYBESIB_set
 
 =implementation
 
+__UNDEFINED__ PERL_MAGIC_qr             'r'
+
+__UNDEFINED__ cBOOL(cbool) ((cbool) ? (bool)1 : (bool)0)
+__UNDEFINED__ OpHAS_SIBLING(o)      (cBOOL((o)->op_sibling))
+__UNDEFINED__ OpSIBLING(o)          (0 + (o)->op_sibling)
+__UNDEFINED__ OpMORESIB_set(o, sib) ((o)->op_sibling = (sib))
+__UNDEFINED__ OpLASTSIB_set(o, parent) ((o)->op_sibling = NULL)
+__UNDEFINED__ OpMAYBESIB_set(o, sib, parent) ((o)->op_sibling = (sib))
+
+#ifndef SvRX
+#if { NEED SvRX }
+
+void *
+SvRX(pTHX_ SV *rv)
+{
+       if (SvROK(rv)) {
+               SV *sv = SvRV(rv);
+               if (SvMAGICAL(sv)) {
+                       MAGIC *mg = mg_find(sv, PERL_MAGIC_qr);
+                       if (mg && mg->mg_obj) {
+                               return mg->mg_obj;
+                       }
+               }
+       }
+       return 0;
+}
+#endif
+#endif
+
+__UNDEFINED__ SvRXOK(sv) (!!SvRX(sv))
+
 #ifndef PERL_UNUSED_DECL
 #  ifdef HASATTRIBUTE
 #    if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER)
@@ -74,6 +117,14 @@ HeUTF8
 #  endif
 #endif
 
+#ifndef PERL_UNUSED_RESULT
+#  if defined(__GNUC__) && defined(HASATTRIBUTE_WARN_UNUSED_RESULT)
+#    define PERL_UNUSED_RESULT(v) STMT_START { __typeof__(v) z = (v); (void)sizeof(z); } STMT_END
+#  else
+#    define PERL_UNUSED_RESULT(v) ((void)(v))
+#  endif
+#endif
+
 __UNDEFINED__  NOOP          /*EMPTY*/(void)0
 __UNDEFINED__  dNOOP         extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL
 
@@ -299,6 +350,9 @@ __UNDEFINED__ HeUTF8(he)        ((HeKLEN(he) == HEf_SVKEY) ?            \
 
 #endif
 
+__UNDEFINED__ C_ARRAY_LENGTH(a)                (sizeof(a)/sizeof((a)[0]))
+__UNDEFINED__ C_ARRAY_END(a)           ((a) + C_ARRAY_LENGTH(a))
+
 =xsmisc
 
 typedef XSPROTO(XSPROTO_test_t);
@@ -333,6 +387,10 @@ XS(XS_Devel__PPPort_dAXMARK)
   XSRETURN(1);
 }
 
+=xsinit
+
+#define NEED_SvRX
+
 =xsboot
 
 {
@@ -344,6 +402,89 @@ newXS("Devel::PPPort::dAXMARK", XS_Devel__PPPort_dAXMARK, file);
 =xsubs
 
 int
+OpSIBLING_tests()
+       PREINIT:
+               OP *x;
+               OP *kid;
+               OP *lastkid;
+               int count = 0;
+               int failures = 0;
+               int i;
+       CODE:
+               x = newOP(OP_PUSHMARK, 0);
+
+               /* No siblings yet! */
+               if (OpHAS_SIBLING(x) || OpSIBLING(x)) {
+                       failures++; warn("Op should not have had a sib");
+               }
+
+
+               /* Add 2 siblings */
+               kid = x;
+
+               for (i = 0; i < 2; i++) {
+                       OP *newsib = newOP(OP_PUSHMARK, 0);
+                       OpMORESIB_set(kid, newsib);
+
+                       kid = OpSIBLING(kid);
+                       lastkid = kid;
+               }
+
+               /* Should now have a sibling */
+               if (! OpHAS_SIBLING(x) || ! OpSIBLING(x) ) {
+                       failures++; warn("Op should have had a sib after moresib_set");
+               }
+
+               /* Count the siblings */
+               for (kid = OpSIBLING(x); kid; kid = OpSIBLING(kid)) {
+                       count++;
+               }
+
+               if (count != 2) {
+                       failures++; warn("Kid had %d sibs, expected 2", count);
+               }
+
+               if (OpHAS_SIBLING(lastkid) || OpSIBLING(lastkid)) {
+                       failures++; warn("Last kid should not have a sib");
+               }
+
+               /* Really sets the parent, and says 'no more siblings' */
+               OpLASTSIB_set(x, lastkid);
+
+               if (OpHAS_SIBLING(x) || OpSIBLING(x)) {
+                       failures++; warn("OpLASTSIB_set failed?");
+               }
+
+               /* Restore the kid */
+               OpMORESIB_set(x, lastkid);
+
+               /* Try to remove it again */
+               OpLASTSIB_set(x, NULL);
+
+               if (OpHAS_SIBLING(x) || OpSIBLING(x)) {
+                       failures++; warn("OpLASTSIB_set with NULL failed?");
+               }
+
+               /* Try to restore with maybesib_set */
+               OpMAYBESIB_set(x, lastkid, NULL);
+
+               if (! OpHAS_SIBLING(x) || ! OpSIBLING(x) ) {
+                       failures++; warn("Op should have had a sib after maybesibset");
+               }
+
+               RETVAL = failures;
+       OUTPUT:
+               RETVAL
+
+int
+SvRXOK(sv)
+       SV *sv
+       CODE:
+               RETVAL = SvRXOK(sv);
+       OUTPUT:
+               RETVAL
+
+int
 ptrtests()
         PREINIT:
                 int var, *p = &var;
@@ -521,15 +662,22 @@ check_HeUTF8(utf8_key)
                 hv_store(hash, key, klen, newSVpvs("string"), 0);
                 hv_iterinit(hash);
                 ent = hv_iternext(hash);
-                if (ent) {
-                    mXPUSHp((HeUTF8(ent) == 0 ? "norm" : "utf8"), 4);
-                }
+                assert(ent);
+                mXPUSHp((HeUTF8(ent) == 0 ? "norm" : "utf8"), 4);
                 hv_undef(hash);
 
 
 #endif
 
-=tests plan => 41
+void
+check_c_array()
+        PREINIT:
+                int x[] = { 10, 11, 12, 13 };
+        PPCODE:
+                mXPUSHi(C_ARRAY_LENGTH(x));  /* 4 */
+                mXPUSHi(*(C_ARRAY_END(x)-1)); /* 13 */
+
+=tests plan => 48
 
 use vars qw($my_sv @my_av %my_hv);
 
@@ -540,7 +688,7 @@ $_ = "Fred";
 ok(&Devel::PPPort::DEFSV(), "Fred");
 ok(&Devel::PPPort::UNDERBAR(), "Fred");
 
-if ($] >= 5.009002 && $] < 5.023) {
+if ($] >= 5.009002 && $] < 5.023 && $] < 5.023004) {
   eval q{
     no warnings "deprecated";
     no if $^V > v5.17.9, warnings => "experimental::lexical_topic";
@@ -610,6 +758,8 @@ ok(&Devel::PPPort::Perl_ppaddr_t("FOO"), "foo");
 
 ok(&Devel::PPPort::ptrtests(), 63);
 
+ok(&Devel::PPPort::OpSIBLING_tests(), 0);
+
 if ($] >= 5.009000) {
   eval q{
     ok(&Devel::PPPort::check_HeUTF8("hello"), "norm");
@@ -619,3 +769,19 @@ if ($] >= 5.009000) {
   ok(1, 1);
   ok(1, 1);
 }
+
+@r = &Devel::PPPort::check_c_array();
+ok($r[0], 4);
+ok($r[1], "13");
+
+ok(!Devel::PPPort::SvRXOK(""));
+ok(!Devel::PPPort::SvRXOK(bless [], "Regexp"));
+
+if ($] < 5.005) {
+        skip 'no qr// objects in this perl', 0;
+        skip 'no qr// objects in this perl', 0;
+} else {
+        my $qr = eval 'qr/./';
+        ok(Devel::PPPort::SvRXOK($qr));
+        ok(Devel::PPPort::SvRXOK(bless $qr, "Surprise"));
+}
index 7ae6fab..afa53a6 100644 (file)
@@ -167,7 +167,7 @@ __NEED_DUMMY_VAR__ yy_parser PL_parser;
 /* PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf depends on PL_parser */
 /* Warning: PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf
  * Do not use this variable unless you know exactly what you're
- * doint. It is internal to the perl parser and may change or even
+ * doing. It is internal to the perl parser and may change or even
  * be removed in the future. As of perl 5.9.5, you have to check
  * for (PL_parser != NULL) for this variable to have any effect.
  * An always non-NULL PL_parser dummy is provided for earlier
@@ -222,7 +222,12 @@ extern U32 get_PL_signals_3(void);
 int no_dummy_parser_vars(int);
 int dummy_parser_warning(void);
 
-#define ppp_TESTVAR(var)          STMT_START { mXPUSHi(&var); count++; } STMT_END
+/* No PTRSIZE IN 5.004 and below, so PTR2IV would warn and possibly misbehave */
+#if { VERSION > 5.004 }
+  #define ppp_TESTVAR(var)          STMT_START { mXPUSHi(PTR2IV(&var)); count++; } STMT_END
+#else
+  #define ppp_TESTVAR(var)          STMT_START { mXPUSHi(&var); count++; } STMT_END
+#endif
 
 #define ppp_PARSERVAR(type, var)  STMT_START {                   \
                                     type volatile my_ ## var;    \
index 6ea7516..62e5339 100644 (file)
@@ -28,7 +28,7 @@ sub all_files_in_dir
   my @files = grep { !-d && !/^\./ } readdir DIR;  # no dirs or hidden files
   closedir DIR;
 
-  return map { cat_file($dir, $_) } @files;
+  return map { cat_file($dir, $_) } sort @files;
 }
 
 sub parse_todo
index 0fa079e..ec87e88 100644 (file)
@@ -3,6 +3,7 @@ GIMME_V                        # E
 G_VOID                         # E
 HePV                           # A
 HeSVKEY_set                    # U
+POPu                           # E
 SvSetMagicSV                   # U
 SvSetMagicSV_nosteal           # U
 SvSetSV_nosteal                # U
index 57937e8..0f7a1f7 100644 (file)
@@ -2,5 +2,6 @@
 CopyD                          # E
 MoveD                          # E
 do_binmode                     # U
+my_bcopy                       # U
 save_aelem                     # U
 save_helem                     # U
index 17d829f..8c8f7df 100644 (file)
@@ -1,6 +1,8 @@
 5.006000
+DO_UTF8                        # U
 PERL_SYS_INIT3                 # U
 PL_check                       # E
+POPul                          # E
 SvIOK_UV                       # U
 SvIOK_notUV                    # U
 SvIOK_only_UV                  # U
@@ -17,6 +19,7 @@ SvUOK                          # U
 SvUTF8                         # U
 SvUTF8_off                     # U
 SvUTF8_on                      # U
+UTF8SKIP                       # U
 av_delete                      # U
 av_exists                      # U
 call_atexit                    # E
index cc22577..c9e1cea 100644 (file)
@@ -49,10 +49,6 @@ sv_nolocking                   # U
 sv_nosharing                   # U
 sv_recode_to_utf8              # U
 sv_uni_display                 # U
-toFOLD_uni                     # U
-toLOWER_uni                    # A
-toTITLE_uni                    # A
-toUPPER_uni                    # A
 to_uni_fold                    # U
 to_uni_lower                   # E (Perl_to_uni_lower)
 to_uni_title                   # E (Perl_to_uni_title)
index 497ee91..a8ee73b 100644 (file)
@@ -1,7 +1,5 @@
 5.009005
 Perl_signbit                   # U
-SvRX                           # U
-SvRXOK                         # U
 av_create_and_push             # U
 av_create_and_unshift_one      # U
 gv_fetchfile_flags             # U
index cce4634..d92eabc 100644 (file)
@@ -16,7 +16,6 @@ gv_fetchmethod_pv_flags        # U
 gv_fetchmethod_pvn_flags       # U
 gv_fetchmethod_sv_flags        # U
 gv_init_pv                     # U
-gv_init_pvn                    # U
 gv_init_sv                     # U
 newGVgen_flags                 # U
 sv_derived_from_pv             # U
@@ -25,6 +24,7 @@ sv_derived_from_sv             # U
 sv_does_pv                     # U
 sv_does_pvn                    # U
 sv_does_sv                     # U
+sv_ref                         # U
 whichsig_pv                    # U
 whichsig_pvn                   # U
 whichsig_sv                    # U
diff --git a/cpan/Devel-PPPort/parts/todo/5020002 b/cpan/Devel-PPPort/parts/todo/5020002
new file mode 100644 (file)
index 0000000..e31c0d0
--- /dev/null
@@ -0,0 +1 @@
+5.020002
diff --git a/cpan/Devel-PPPort/parts/todo/5020003 b/cpan/Devel-PPPort/parts/todo/5020003
new file mode 100644 (file)
index 0000000..89ec619
--- /dev/null
@@ -0,0 +1 @@
+5.020003
index 1e17e3d..abe5ac1 100644 (file)
@@ -1,4 +1,3 @@
 5.021002
 grok_number_flags              # U
-op_parent                      # U
 op_sibling_splice              # U
index 03c81e0..6b8b9ba 100644 (file)
@@ -1,7 +1,4 @@
 5.021007
-OpHAS_SIBLING                  # U
-OpSIBLING                      # U
-OpSIBLING_set                  # U
 PadnameUTF8                    # E
 is_invariant_string            # U
 newPADNAMELIST                 # U
index 3d72724..ccba00c 100644 (file)
@@ -1,43 +1,2 @@
 5.021008
-BhkDISABLE                     # E
-BhkENABLE                      # E
-BhkENTRY_set                   # E
-MULTICALL                      # E
-PERL_SYS_TERM                  # E
-POP_MULTICALL                  # E
-PUSH_MULTICALL                 # E
-PadARRAY                       # E
-PadMAX                         # E
-PadlistARRAY                   # E
-PadlistMAX                     # E
-PadlistNAMES                   # E
-PadlistNAMESARRAY              # E
-PadlistNAMESMAX                # E
-PadnameLEN                     # E
-PadnamePV                      # E
-PadnameREFCNT                  # E
-PadnameREFCNT_dec              # E
-PadnameSV                      # E
-PadnamelistARRAY               # E
-PadnamelistMAX                 # E
-PadnamelistREFCNT              # E
-PadnamelistREFCNT_dec          # E
-XS_APIVERSION_BOOTCHECK        # E
-XS_EXTERNAL                    # E
-XS_INTERNAL                    # E
-XS_VERSION_BOOTCHECK           # E
-XopDISABLE                     # E
-XopENABLE                      # E
-XopENTRY                       # E
-XopENTRYCUSTOM                 # E
-XopENTRY_set                   # E
-cophh_new_empty                # E
-my_lstat                       # U (Perl_my_lstat)
-my_stat                        # U (Perl_my_stat)
-reentrant_free                 # U
-reentrant_init                 # U
-reentrant_retry                # U
-reentrant_size                 # U
-ref                            # U (Perl_ref)
 sv_get_backrefs                # U
-sv_setref_pvs                  # A
diff --git a/cpan/Devel-PPPort/parts/todo/5021009 b/cpan/Devel-PPPort/parts/todo/5021009
new file mode 100644 (file)
index 0000000..7397722
--- /dev/null
@@ -0,0 +1 @@
+5.021009
diff --git a/cpan/Devel-PPPort/parts/todo/5021010 b/cpan/Devel-PPPort/parts/todo/5021010
new file mode 100644 (file)
index 0000000..821a8fb
--- /dev/null
@@ -0,0 +1,2 @@
+5.021010
+DECLARATION_FOR_LC_NUMERIC_MANIPULATION # E
diff --git a/cpan/Devel-PPPort/parts/todo/5021011 b/cpan/Devel-PPPort/parts/todo/5021011
new file mode 100644 (file)
index 0000000..22e7302
--- /dev/null
@@ -0,0 +1 @@
+5.021011
diff --git a/cpan/Devel-PPPort/parts/todo/5022000 b/cpan/Devel-PPPort/parts/todo/5022000
new file mode 100644 (file)
index 0000000..aca319e
--- /dev/null
@@ -0,0 +1,2 @@
+5.022000
+UVCHR_SKIP                     # U
diff --git a/cpan/Devel-PPPort/parts/todo/5022001 b/cpan/Devel-PPPort/parts/todo/5022001
new file mode 100644 (file)
index 0000000..28befba
--- /dev/null
@@ -0,0 +1 @@
+5.022001
diff --git a/cpan/Devel-PPPort/parts/todo/5023000 b/cpan/Devel-PPPort/parts/todo/5023000
new file mode 100644 (file)
index 0000000..e461a32
--- /dev/null
@@ -0,0 +1 @@
+5.023000
diff --git a/cpan/Devel-PPPort/parts/todo/5023001 b/cpan/Devel-PPPort/parts/todo/5023001
new file mode 100644 (file)
index 0000000..ea44212
--- /dev/null
@@ -0,0 +1 @@
+5.023001
diff --git a/cpan/Devel-PPPort/parts/todo/5023002 b/cpan/Devel-PPPort/parts/todo/5023002
new file mode 100644 (file)
index 0000000..2060466
--- /dev/null
@@ -0,0 +1 @@
+5.023002
diff --git a/cpan/Devel-PPPort/parts/todo/5023003 b/cpan/Devel-PPPort/parts/todo/5023003
new file mode 100644 (file)
index 0000000..4b19a24
--- /dev/null
@@ -0,0 +1 @@
+5.023003
diff --git a/cpan/Devel-PPPort/parts/todo/5023004 b/cpan/Devel-PPPort/parts/todo/5023004
new file mode 100644 (file)
index 0000000..ce60a67
--- /dev/null
@@ -0,0 +1 @@
+5.023004
diff --git a/cpan/Devel-PPPort/parts/todo/5023005 b/cpan/Devel-PPPort/parts/todo/5023005
new file mode 100644 (file)
index 0000000..1b8818c
--- /dev/null
@@ -0,0 +1 @@
+5.023005
diff --git a/cpan/Devel-PPPort/parts/todo/5023006 b/cpan/Devel-PPPort/parts/todo/5023006
new file mode 100644 (file)
index 0000000..f6c5994
--- /dev/null
@@ -0,0 +1 @@
+5.023006
diff --git a/cpan/Devel-PPPort/parts/todo/5023007 b/cpan/Devel-PPPort/parts/todo/5023007
new file mode 100644 (file)
index 0000000..fb7c553
--- /dev/null
@@ -0,0 +1 @@
+5.023007
diff --git a/cpan/Devel-PPPort/parts/todo/5023008 b/cpan/Devel-PPPort/parts/todo/5023008
new file mode 100644 (file)
index 0000000..ed2ef6d
--- /dev/null
@@ -0,0 +1,22 @@
+5.023008
+clear_defarray                 # U
+cx_popblock                    # U
+cx_popeval                     # U
+cx_popformat                   # U
+cx_popgiven                    # U
+cx_poploop                     # U
+cx_popsub                      # U
+cx_popsub_args                 # U
+cx_popsub_common               # U
+cx_popwhen                     # U
+cx_pushblock                   # U
+cx_pusheval                    # U
+cx_pushformat                  # U
+cx_pushgiven                   # U
+cx_pushloop_for                # U
+cx_pushloop_plain              # U
+cx_pushsub                     # U
+cx_pushwhen                    # U
+cx_topblock                    # U
+leave_adjust_stacks            # U
+savetmps                       # U
diff --git a/cpan/Devel-PPPort/parts/todo/5023009 b/cpan/Devel-PPPort/parts/todo/5023009
new file mode 100644 (file)
index 0000000..336b09a
--- /dev/null
@@ -0,0 +1,5 @@
+5.023009
+toFOLD_uvchr                   # U
+toLOWER_uvchr                  # U
+toTITLE_uvchr                  # U
+toUPPER_uvchr                  # U
diff --git a/cpan/Devel-PPPort/parts/todo/5024000 b/cpan/Devel-PPPort/parts/todo/5024000
new file mode 100644 (file)
index 0000000..6a5e248
--- /dev/null
@@ -0,0 +1,45 @@
+5.024000
+BhkDISABLE                     # E
+BhkENABLE                      # E
+BhkENTRY_set                   # E
+MULTICALL                      # E
+PERL_SYS_TERM                  # E
+POP_MULTICALL                  # E
+PUSH_MULTICALL                 # E
+PadARRAY                       # E
+PadMAX                         # E
+PadlistARRAY                   # E
+PadlistMAX                     # E
+PadlistNAMES                   # E
+PadlistNAMESARRAY              # E
+PadlistNAMESMAX                # E
+PadnameLEN                     # E
+PadnamePV                      # E
+PadnameREFCNT                  # E
+PadnameREFCNT_dec              # E
+PadnameSV                      # E
+PadnamelistARRAY               # E
+PadnamelistMAX                 # E
+PadnamelistREFCNT              # E
+PadnamelistREFCNT_dec          # E
+RESTORE_LC_NUMERIC             # E
+STORE_LC_NUMERIC_FORCE_TO_UNDERLYING # E
+STORE_LC_NUMERIC_SET_TO_NEEDED # E
+XS_APIVERSION_BOOTCHECK        # E
+XS_EXTERNAL                    # E
+XS_INTERNAL                    # E
+XS_VERSION_BOOTCHECK           # E
+XopDISABLE                     # E
+XopENABLE                      # E
+XopENTRY                       # E
+XopENTRYCUSTOM                 # E
+XopENTRY_set                   # E
+cophh_new_empty                # E
+my_lstat                       # U (Perl_my_lstat)
+my_stat                        # U (Perl_my_stat)
+reentrant_free                 # U
+reentrant_init                 # U
+reentrant_retry                # U
+reentrant_size                 # U
+ref                            # U (Perl_ref)
+sv_setref_pvs                  # A
index c229ed7..7473d77 100644 (file)
@@ -27,7 +27,7 @@ use File::Find;
 use List::Util qw(max);
 use Config;
 
-my $VERSION = '3.32';
+my $VERSION = '3.35';
 
 $| = 1;
 my %OPT = (
index 66722f2..06dfed1 100644 (file)
@@ -30,9 +30,9 @@ BEGIN {
     require 'testutil.pl' if $@;
   }
 
-  if (5) {
+  if (7) {
     load();
-    plan(tests => 5);
+    plan(tests => 7);
   }
 }
 
@@ -58,3 +58,6 @@ ok(Devel::PPPort::gv_fetchpvn_flags(), \*Devel::PPPort::VERSION);
 
 ok(Devel::PPPort::gv_fetchsv("Devel::PPPort::VERSION"), \*Devel::PPPort::VERSION);
 
+ok(Devel::PPPort::gv_init_type("sanity_check", 0, 0), "*main::sanity_check");
+ok($::{sanity_check});
+
index 5f7f7b6..0c4f027 100644 (file)
@@ -30,9 +30,9 @@ BEGIN {
     require 'testutil.pl' if $@;
   }
 
-  if (41) {
+  if (48) {
     load();
-    plan(tests => 41);
+    plan(tests => 48);
   }
 }
 
@@ -57,7 +57,7 @@ $_ = "Fred";
 ok(&Devel::PPPort::DEFSV(), "Fred");
 ok(&Devel::PPPort::UNDERBAR(), "Fred");
 
-if ($] >= 5.009002 && $] < 5.023) {
+if ($] >= 5.009002 && $] < 5.023 && $] < 5.023004) {
   eval q{
     no warnings "deprecated";
     no if $^V > v5.17.9, warnings => "experimental::lexical_topic";
@@ -127,6 +127,8 @@ ok(&Devel::PPPort::Perl_ppaddr_t("FOO"), "foo");
 
 ok(&Devel::PPPort::ptrtests(), 63);
 
+ok(&Devel::PPPort::OpSIBLING_tests(), 0);
+
 if ($] >= 5.009000) {
   eval q{
     ok(&Devel::PPPort::check_HeUTF8("hello"), "norm");
@@ -137,3 +139,19 @@ if ($] >= 5.009000) {
   ok(1, 1);
 }
 
+@r = &Devel::PPPort::check_c_array();
+ok($r[0], 4);
+ok($r[1], "13");
+
+ok(!Devel::PPPort::SvRXOK(""));
+ok(!Devel::PPPort::SvRXOK(bless [], "Regexp"));
+
+if ($] < 5.005) {
+        skip 'no qr// objects in this perl', 0;
+        skip 'no qr// objects in this perl', 0;
+} else {
+        my $qr = eval 'qr/./';
+        ok(Devel::PPPort::SvRXOK($qr));
+        ok(Devel::PPPort::SvRXOK(bless $qr, "Surprise"));
+}
+
index 3dade96..ff868a5 100644 (file)
@@ -1,10 +1,10 @@
 #
-# $Id: Encode.pm,v 2.80 2016/01/25 14:54:01 dankogai Exp $
+# $Id: Encode.pm,v 2.84 2016/04/11 07:16:52 dankogai Exp $
 #
 package Encode;
 use strict;
 use warnings;
-our $VERSION = sprintf "%d.%02d", q$Revision: 2.80 $ =~ /(\d+)/g;
+our $VERSION = sprintf "%d.%02d", q$Revision: 2.84 $ =~ /(\d+)/g;
 use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG};
 use XSLoader ();
 XSLoader::load( __PACKAGE__, $VERSION );
index 8450f9c..fffcaf7 100644 (file)
@@ -1,6 +1,6 @@
 # $Id: encoding.pm,v 2.17 2015/09/15 13:53:27 dankogai Exp dankogai $
 package encoding;
-our $VERSION = sprintf "%d.%02d", q$Revision: 2.17 $ =~ /(\d+)/g;
+our $VERSION = '2.17_01';
 
 use Encode;
 use strict;
@@ -114,10 +114,9 @@ sub import {
         Carp::croak("encoding: pragma does not support EBCDIC platforms");
     }
 
-    if ($] >= 5.017) {
-       warnings::warnif("deprecated",
-                        "Use of the encoding pragma is deprecated")
-    }
+    my $deprecate =
+        $] >= 5.017 ? "Use of the encoding pragma is deprecated" : 0;
+
     my $class = shift;
     my $name  = shift;
     if (!$name){
@@ -142,6 +141,12 @@ sub import {
     }
     $name = $enc->name;    # canonize
     unless ( $arg{Filter} ) {
+        if ($] >= 5.025003) {
+            require Carp;
+            Carp::croak("The encoding pragma is no longer supported");
+        }
+        warnings::warnif("deprecated",$deprecate) if $deprecate;
+
         DEBUG and warn "_exception($name) = ", _exception($name);
         if (! _exception($name)) {
             if (!PERL_5_21_7) {
@@ -158,6 +163,8 @@ sub import {
         HAS_PERLIO or return 1;
     }
     else {
+        warnings::warnif("deprecate",$deprecate) if $deprecate;
+
         defined( ${^ENCODING} ) and undef ${^ENCODING};
         undef ${^E_NCODING} if PERL_5_21_7;
 
@@ -280,6 +287,10 @@ Old code should be converted to UTF-8, via something like the recipe in the
 L</SYNOPSIS> (though this simple approach may require manual adjustments
 afterwards).
 
+If UTF-8 is not an option, it is recommended that one use a simple source
+filter, such as that provided by L<Filter::Encoding> on CPAN or this
+pragma's own C<Filter> option (see below).
+
 The only legitimate use of this pragma is almost certainly just one per file,
 near the top, with file scope, as the file is likely going to only be written
 in one encoding.  Further restrictions apply in Perls before v5.22 (see
@@ -291,6 +302,9 @@ There are two basic modes of operation (plus turning if off):
 
 =item C<use encoding ['I<ENCNAME>'] ;>
 
+Please note: This mode of operation is no longer supported as of Perl
+v5.26.
+
 This is the normal operation.  It translates various literals encountered in
 the Perl source file from the encoding I<ENCNAME> into UTF-8, and similarly
 converts character code points.  This is used when the script is a combination
index ba6adba..d74d453 100644 (file)
@@ -3,7 +3,7 @@ use strict;
 use warnings;
 no warnings 'redefine';
 
-our $VERSION = do { my @r = ( q$Revision: 2.19 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
+our $VERSION = do { my @r = ( q$Revision: 2.23 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
 use Encode qw(find_encoding encode_utf8 decode_utf8);
 use MIME::Base64;
 use Carp;
@@ -26,7 +26,7 @@ $Encode::Encoding{'MIME-B'} = bless {
 
 $Encode::Encoding{'MIME-Q'} = bless {
     %seed,
-    decode_q => 1,
+    decode_b => 0,
     encode   => 'Q',
     Name     => 'MIME-Q',
 } => __PACKAGE__;
@@ -36,47 +36,74 @@ use parent qw(Encode::Encoding);
 sub needs_lines { 1 }
 sub perlio_ok   { 0 }
 
+# RFC 2047 and RFC 2231 grammar
+my $re_charset = qr/[-0-9A-Za-z_]+/;
+my $re_language = qr/[A-Za-z]{1,8}(?:-[A-Za-z]{1,8})*/;
+my $re_encoding = qr/[QqBb]/;
+my $re_encoded_text = qr/[^\?\s]*/;
+my $re_encoded_word = qr/=\?$re_charset(?:\*$re_language)?\?$re_encoding\?$re_encoded_text\?=/;
+my $re_capture_encoded_word = qr/=\?($re_charset)((?:\*$re_language)?)\?($re_encoding)\?($re_encoded_text)\?=/;
+
+our $STRICT_DECODE = 0;
+
 sub decode($$;$) {
     use utf8;
     my ( $obj, $str, $chk ) = @_;
-    # zap spaces between encoded words
-    $str =~ s/\?=\s+=\?/\?==\?/gos;
-    
+
     # multi-line header to single line
-    $str =~ s/(?:\r\n|[\r\n])[ \t]//gos;
-
-    1 while ( $str =~
-              s/(=\?[-0-9A-Za-z_]+\?[Qq]\?)([^?]*?)\?=\1([^?]*?\?=)/$1$2$3/ )
-      ;    # Concat consecutive QP encoded mime headers
-           # Fixes breaking inside multi-byte characters
-
-    $str =~ s{
-        =\?              # begin encoded word
-        ([-0-9A-Za-z_]+) # charset (encoding)
-        (?:\*[A-Za-z]{1,8}(?:-[A-Za-z]{1,8})*)? # language (RFC 2231)
-        \?([QqBb])\?     # delimiter
-        (.*?)            # Base64-encodede contents
-        \?=              # end encoded word
-    }{
-        if      (uc($2) eq 'B'){
-            $obj->{decode_b} or croak qq(MIME "B" unsupported);
-            decode_b($1, $3, $chk);
-        } elsif (uc($2) eq 'Q'){
-            $obj->{decode_q} or croak qq(MIME "Q" unsupported);
-            decode_q($1, $3, $chk);
-        } else {
-            croak qq(MIME "$2" encoding is nonexistent!);
-        }
-    }egox;
-    $_[1] = $str if $chk;
-    return $str;
+    $str =~ s/(?:\r\n|[\r\n])([ \t])/$1/gos;
+
+    # decode each line separately
+    my @input = split /(\r\n|\r|\n)/o, $str;
+    my $output = substr($str, 0, 0); # to propagate taintedness
+
+    while ( @input ) {
+
+        my $line = shift @input;
+        my $sep = shift @input;
+
+        # in strict mode encoded words must be always separated by spaces or tabs
+        # except in comments when separator between words and comment round brackets can be omitted
+        my $re_word_begin = $STRICT_DECODE ? qr/(?:[ \t\n]|\A)\(?/ : qr//;
+        my $re_word_sep = $STRICT_DECODE ? qr/[ \t]+/ : qr/\s*/;
+        my $re_word_end = $STRICT_DECODE ? qr/\)?(?:[ \t\n]|\z)/ : qr//;
+
+        # concat consecutive encoded mime words with same charset, language and encoding
+        # fixes breaking inside multi-byte characters
+        1 while $line =~ s/($re_word_begin)$re_capture_encoded_word$re_word_sep=\?\2\3\?\4\?($re_encoded_text)\?=(?=$re_word_end)/$1=\?$2$3\?$4\?$5$6\?=/;
+
+        $line =~ s{($re_word_begin)((?:$re_encoded_word$re_word_sep)*$re_encoded_word)(?=$re_word_end)}{
+            my $begin = $1;
+            my $words = $2;
+            $words =~ s{$re_capture_encoded_word$re_word_sep?}{
+                if (uc($3) eq 'B') {
+                    $obj->{decode_b} or croak qq(MIME "B" unsupported);
+                    decode_b($1, $4, $chk);
+                } elsif (uc($3) eq 'Q') {
+                    $obj->{decode_q} or croak qq(MIME "Q" unsupported);
+                    decode_q($1, $4, $chk);
+                } else {
+                    croak qq(MIME "$3" encoding is nonexistent!);
+                }
+            }eg;
+            $begin . $words;
+        }eg;
+
+        $output .= $line;
+        $output .= $sep if defined $sep;
+
+    }
+
+    $_[1] = '' if $chk; # empty the input string in the stack so perlio is ok
+    return $output;
 }
 
 sub decode_b {
-    my $enc  = shift;
-    my $d    = find_encoding($enc) or croak qq(Unknown encoding "$enc");
-    my $db64 = decode_base64(shift);
-    my $chk  = shift;
+    my ( $enc, $b, $chk ) = @_;
+    my $d = find_encoding($enc) or croak qq(Unknown encoding "$enc");
+    # MIME::Base64::decode_base64 ignores everything after a '=' padding character
+    # split string after each sequence of padding characters and decode each substring
+    my $db64 = join('', map { decode_base64($_) } split /(?<==)(?=[^=])/, $b);
     return $d->name eq 'utf8'
       ? Encode::decode_utf8($db64)
       : $d->decode( $db64, $chk || Encode::FB_PERLQQ );
@@ -92,102 +119,92 @@ sub decode_q {
       : $d->decode( $q, $chk || Encode::FB_PERLQQ );
 }
 
-my $especials =
-  join( '|' => map { quotemeta( chr($_) ) }
-      unpack( "C*", qq{()<>,;:"'/[]?=} ) );
-
-my $re_encoded_word = qr{
-    =\?                # begin encoded word
-    (?:[-0-9A-Za-z_]+) # charset (encoding)
-    (?:\*[A-Za-z]{1,8}(?:-[A-Za-z]{1,8})*)? # language (RFC 2231)
-    \?(?:[QqBb])\?     # delimiter
-    (?:.*?)            # Base64-encodede contents
-    \?=                # end encoded word
-}xo;
-
-my $re_especials = qr{$re_encoded_word|$especials}xo;
-
-# cf:
-#    https://rt.cpan.org/Ticket/Display.html?id=88717
-#    https://www.ietf.org/rfc/rfc0822.txt
-my $re_linear_white_space = qr{(?:[ \t]|\r\n?)};
-
 sub encode($$;$) {
     my ( $obj, $str, $chk ) = @_;
-    my @line = ();
-    for my $line ( split /\r\n|[\r\n]/o, $str ) {
-        my ( @word, @subline );
-        if ($line =~ /\A([\w\-]+:\s+)(.*)\z/o) {
-            push @word, $1, $obj->_encode($2); # "X-Header-Name: ..."
+    $_[1] = '' if $chk; # empty the input string in the stack so perlio is ok
+    return $obj->_fold_line($obj->_encode_line($str));
+}
+
+sub _fold_line {
+    my ( $obj, $line ) = @_;
+    my $bpl = $obj->{bpl};
+    my $output = substr($line, 0, 0); # to propagate taintedness
+
+    while ( length $line ) {
+        if ( $line =~ s/^(.{0,$bpl})(\s|\z)// ) {
+            $output .= $1;
+            $output .= "\r\n" . $2 if length $line;
+        } elsif ( $line =~ s/(\s)(.*)$// ) {
+            $output .= $line;
+            $line = $2;
+            $output .= "\r\n" . $1 if length $line;
         } else {
-            push @word, $obj->_encode($line);  # anything else
+            $output .= $line;
+            last;
         }
-        my $subline = '';
-        for my $word (@word) {
-            use bytes ();
-            if ( bytes::length($subline) + bytes::length($word) >
-                $obj->{bpl} - 1 )
-            {
-                push @subline, $subline;
-                $subline = '';
-            }
-            $subline .= ' ' if ($subline =~ /\?=$/ and $word =~ /^=\?/);
-            $subline .= $word;
-        }
-        length($subline) and push @subline, $subline;
-        push @line, join( "\n " => grep !/^$/, @subline );
     }
-    $_[1] = '' if $chk;
-    return (substr($str, 0, 0) . join( "\n", @line ));
+
+    return $output;
 }
 
 use constant HEAD   => '=?UTF-8?';
 use constant TAIL   => '?=';
-use constant SINGLE => { B => \&_encode_b, Q => \&_encode_q, };
+use constant SINGLE => { B => \&_encode_b, Q => \&_encode_q, B_len => \&_encode_b_len, Q_len => \&_encode_q_len };
 
-sub _encode {
+sub _encode_line {
     my ( $o, $str ) = @_;
     my $enc  = $o->{encode};
+    my $enc_len = $enc . '_len';
     my $llen = ( $o->{bpl} - length(HEAD) - 2 - length(TAIL) );
 
-    # to coerce a floating-point arithmetics, the following contains
-    # .0 in numbers -- dankogai
-    $llen *= $enc eq 'B' ? 3.0 / 4.0 : 1.0 / 3.0;
     my @result = ();
     my $chunk  = '';
     while ( length( my $chr = substr( $str, 0, 1, '' ) ) ) {
-        use bytes ();
-        if ( bytes::length($chunk) + bytes::length($chr) > $llen ) {
+        if ( SINGLE->{$enc_len}($chunk . $chr) > $llen ) {
             push @result, SINGLE->{$enc}($chunk);
             $chunk = '';
         }
         $chunk .= $chr;
     }
     length($chunk) and push @result, SINGLE->{$enc}($chunk);
-    return @result;
+    return join(' ', @result);
 }
 
 sub _encode_b {
     HEAD . 'B?' . encode_base64( encode_utf8(shift), '' ) . TAIL;
 }
 
+sub _encode_b_len {
+    my ( $chunk ) = @_;
+    use bytes ();
+    return bytes::length($chunk) * 4 / 3;
+}
+
+my $valid_q_chars = '0-9A-Za-z !*+\-/';
+
 sub _encode_q {
-    my $chunk = shift;
+    my ( $chunk ) = @_;
     $chunk = encode_utf8($chunk);
-    $chunk =~ s{
-          ([^0-9A-Za-z])
-       }{
-            join("" => map {sprintf "=%02X", $_} unpack("C*", $1))
-       }egox;
+    $chunk =~ s{([^$valid_q_chars])}{
+        join("" => map {sprintf "=%02X", $_} unpack("C*", $1))
+    }egox;
+    $chunk =~ s/ /_/go;
     return HEAD . 'Q?' . $chunk . TAIL;
 }
 
+sub _encode_q_len {
+    my ( $chunk ) = @_;
+    use bytes ();
+    my $valid_count =()= $chunk =~ /[$valid_q_chars]/sgo;
+    return ( bytes::length($chunk) - $valid_count ) * 3 + $valid_count;
+}
+
 1;
 __END__
 
 =head1 NAME
 
-Encode::MIME::Header -- MIME 'B' and 'Q' header encoding
+Encode::MIME::Header -- MIME 'B' and 'Q' encoding for unstructured header
 
 =head1 SYNOPSIS
 
@@ -197,7 +214,8 @@ Encode::MIME::Header -- MIME 'B' and 'Q' header encoding
 
 =head1 ABSTRACT
 
-This module implements RFC 2047 Mime Header Encoding.  There are 3
+This module implements RFC 2047 MIME encoding for unstructured header.
+It cannot be used for structured headers like From or To.  There are 3
 variant encoding names; C<MIME-Header>, C<MIME-B> and C<MIME-Q>.  The
 difference is described below
 
@@ -222,6 +240,25 @@ line.
 
 =head1 BUGS
 
+Before version 2.83 this module had broken both decoder and encoder.
+Encoder inserted additional spaces, incorrectly encoded input data
+and produced invalid MIME strings. Decoder lot of times discarded
+white space characters, incorrectly interpreted data or decoded
+Base64 string as Quoted-Printable.
+
+As of version 2.83 encoder should be fully compliant of RFC 2047.
+Due to bugs in previous versions of encoder, decoder is by default in
+less strict compatible mode. It should be able to decode strings
+encoded by pre 2.83 version of this module. But this default mode is
+not correct according to RFC 2047.
+
+In default mode decoder try to decode every substring which looks like
+MIME encoded data. So it means that MIME data does not need to be
+separated by white space. To enforce correct strict mode, set package
+variable $Encode::MIME::Header::STRICT_DECODE to 1, e.g. by localizing:
+
+C<require Encode::MIME::Header; local $Encode::MIME::Header::STRICT_DECODE = 1;>
+
 It would be nice to support encoding to non-UTF8, such as =?ISO-2022-JP?
 and =?ISO-8859-1?= but that makes the implementation too complicated.
 These days major mail agents all support =?UTF-8? so I think it is
index 86955c8..86e66c3 100644 (file)
@@ -6,7 +6,7 @@ use warnings;
 use parent qw(Encode::MIME::Header);
 
 $Encode::Encoding{'MIME-Header-ISO_2022_JP'} =
-  bless { encode => 'B', bpl => 76, Name => 'MIME-Header-ISO_2022_JP' } =>
+  bless { decode_b => '1', decode_q => '1', encode => 'B', bpl => 76, Name => 'MIME-Header-ISO_2022_JP' } =>
   __PACKAGE__;
 
 use constant HEAD => '=?ISO-2022-JP?B?';
@@ -14,7 +14,7 @@ use constant TAIL => '?=';
 
 use Encode::CJKConstants qw(%RE);
 
-our $VERSION = do { my @r = ( q$Revision: 1.4 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
+our $VERSION = do { my @r = ( q$Revision: 1.7 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
 
 # I owe the below codes totally to
 #   Jcode by Dan Kogai & http://www.din.or.jp/~ohzaki/perl.htm#JP_Base64
index c731509..b23f6ca 100644 (file)
@@ -367,7 +367,7 @@ Unicode character should belong).
 
 Not very popular.  Needs CNS 11643-1 and -2 which are not available in
 this module.  CNS 11643 is supported (via euc-tw) in Encode::HanExtra.
-Autrijus Tang may add support for this encoding in his module in future.
+Audrey Tang may add support for this encoding in her module in future.
 
 =item Various HP-UX encodings
 
index a0caf65..b401595 100644 (file)
@@ -14,6 +14,10 @@ BEGIN {
     print "1..0 # encoding pragma does not support EBCDIC platforms\n";
     exit(0);
     }
+    if ("$]" >= 5.025) {
+    print "1..0 # encoding pragma not supported in Perl 5.26\n";
+    exit(0);
+    }
     if ($] <= 5.008 and !$Config{perl_patchlevel}){
     print "1..0 # Skip: Perl 5.8.1 or later required\n";
     exit 0;
index 7c78a68..37fccba 100644 (file)
@@ -19,6 +19,10 @@ BEGIN {
     print "1..0 # Skip: Perl 5.8.1 or later required\n";
     exit 0;
     }
+    if ($] >= 5.025003){
+    print "1..0 # Skip: Perl 5.25.2 or lower required\n";
+    exit 0;
+    }
 }
 
 no warnings "deprecated";
index 05fc6c2..3004ed2 100644 (file)
@@ -18,6 +18,10 @@ BEGIN {
     print "1..0 # encoding pragma does not support EBCDIC platforms\n";
     exit(0);
     }
+    if ("$]" >= 5.025) {
+    print "1..0 # encoding pragma not supported in Perl 5.26\n";
+    exit(0);
+    }
 }
 use lib qw(t ext/Encode/t ../ext/Encode/t); # latter 2 for perl core
 use Mod_EUCJP;
index 9c6caa3..047452f 100644 (file)
@@ -15,6 +15,10 @@ BEGIN {
     print "1..0 # encoding pragma does not support EBCDIC platforms\n";
     exit(0);
     }
+    if ($] >= 5.025003){
+    print "1..0 # Skip: Perl 5.25.2 or lower required\n";
+    exit 0;
+    }
 }
 
 no warnings "deprecated";
index 1153b8e..7a305a0 100644 (file)
@@ -14,8 +14,9 @@ use Encode qw<find_encoding>;
 my $locale_encoding = encoding::_get_locale_encoding;
 
 SKIP: {
-    is(ref $locale_encoding, '', '_get_locale_encoding returns a scalar value')
-       or skip 'no locale encoding found', 1;
+    defined $locale_encoding or skip 'no locale encoding found', 3;
+
+    is(ref $locale_encoding, '', '_get_locale_encoding returns a scalar value');
 
     my $enc = find_encoding($locale_encoding);
     ok(defined $enc, 'encoding returned is supported')
index 21f9e47..18d1921 100644 (file)
@@ -12,6 +12,10 @@ BEGIN {
     print "1..0 # encoding pragma does not support EBCDIC platforms\n";
     exit(0);
     }
+    if ("$]" >= 5.025) {
+    print "1..0 # encoding pragma not supported in Perl 5.26\n";
+    exit(0);
+    }
 }
 
 print "1..33\n";
index 3abe86b..5f437ff 100644 (file)
@@ -17,6 +17,10 @@ BEGIN {
     print "1..0 # Skip: EBCDIC\n";
     exit 0;
     }
+    if ("$]" >= 5.025) {
+    print "1..0 # encoding pragma not supported in Perl 5.26\n";
+    exit(0);
+    }
     $| = 1;
 }
 
index b031aa4..a9e6086 100644 (file)
@@ -1,5 +1,5 @@
 #
-# $Id: mime-header.t,v 2.8 2016/01/25 14:54:13 dankogai Exp dankogai $
+# $Id: mime-header.t,v 2.12 2016/04/11 07:17:02 dankogai Exp dankogai $
 # This script is written in utf8
 #
 BEGIN {
@@ -19,114 +19,128 @@ BEGIN {
     $| = 1;
 }
 
-no utf8;
-
 use strict;
-#use Test::More qw(no_plan);
-use Test::More tests => 14;
-use_ok("Encode::MIME::Header");
-
-my $eheader =<<'EOS';
-From: =?US-ASCII?Q?Keith_Moore?= <moore@cs.utk.edu>
-To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>
-CC: =?ISO-8859-1?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be>
-Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
- =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
-EOS
-
-my $dheader=<<"EOS";
-From: Keith Moore <moore\@cs.utk.edu>
-To: Keld J\xF8rn Simonsen <keld\@dkuug.dk>
-CC: Andr\xE9 Pirard <PIRARD\@vm1.ulg.ac.be>
-Subject: If you can read this you understand the example.
-EOS
-
-is(Encode::decode('MIME-Header', $eheader), $dheader, "decode ASCII (RFC2047)");
 
 use utf8;
+use charnames ":full";
 
-my $uheader =<<'EOS';
-From: =?US-ASCII?Q?Keith_Moore?= <moore@cs.utk.edu>
-To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>
-CC: =?ISO-8859-1?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be>
-Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
- =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
-EOS
-
-is(Encode::decode('MIME-Header', $uheader), $dheader, "decode UTF-8 (RFC2047)");
-
-my $lheader =<<'EOS';
-From: =?US-ASCII*en-US?Q?Keith_Moore?= <moore@cs.utk.edu>
-To: =?ISO-8859-1*da-DK?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>
-CC: =?ISO-8859-1*fr-BE?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be>
-Subject: =?ISO-8859-1*en?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
- =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
-EOS
-
-is(Encode::decode('MIME-Header', $lheader), $dheader, "decode language tag (RFC2231)");
-
-
-$dheader=<<'EOS';
-From: 小飼 弾 <dankogai@dan.co.jp>
-To: dankogai@dan.co.jp (小飼=Kogai, 弾=Dan)
-Subject: 漢字、カタカナ、ひらがなを含む、非常に長いタイトル行が一体全体どのようにしてEncodeされるのか?
-EOS
-
-my $bheader =<<'EOS';
-From: =?UTF-8?B?5bCP6aO8IOW8viA8ZGFua29nYWlAZGFuLmNvLmpwPg==?=
-To: =?UTF-8?B?ZGFua29nYWlAZGFuLmNvLmpwICjlsI/po7w9S29nYWksIOW8vj1EYW4p?=
-Subject: 
- =?UTF-8?B?5ryi5a2X44CB44Kr44K/44Kr44OK44CB44Gy44KJ44GM44Gq44KS5ZCr44KA?=
- =?UTF-8?B?44CB6Z2e5bi444Gr6ZW344GE44K/44Kk44OI44Or6KGM44GM5LiA5L2T5YWo?=
- =?UTF-8?B?5L2T44Gp44Gu44KI44GG44Gr44GX44GmRW5jb2Rl44GV44KM44KL44Gu44GL?=
- =?UTF-8?B?77yf?=
-EOS
+use Test::More tests => 130;
+use_ok("Encode::MIME::Header");
 
-my $qheader=<<'EOS';
-From: =?UTF-8?Q?=E5=B0=8F=E9=A3=BC=20=E5=BC=BE=20=3Cdankogai=40?=
- =?UTF-8?Q?dan=2Eco=2Ejp=3E?=
-To: =?UTF-8?Q?dankogai=40dan=2Eco=2Ejp=20=28?=
- =?UTF-8?Q?=E5=B0=8F=E9=A3=BC=3DKogai=2C=20=E5=BC=BE=3DDan?= =?UTF-8?Q?=29?=
-Subject: 
- =?UTF-8?Q?=E6=BC=A2=E5=AD=97=E3=80=81=E3=82=AB=E3=82=BF=E3=82=AB=E3=83=8A?=
- =?UTF-8?Q?=E3=80=81=E3=81=B2=E3=82=89=E3=81=8C=E3=81=AA=E3=82=92=E5=90=AB?=
- =?UTF-8?Q?=E3=82=80=E3=80=81=E9=9D=9E=E5=B8=B8=E3=81=AB=E9=95=B7=E3=81=84?=
- =?UTF-8?Q?=E3=82=BF=E3=82=A4=E3=83=88=E3=83=AB=E8=A1=8C=E3=81=8C=E4=B8=80?=
- =?UTF-8?Q?=E4=BD=93=E5=85=A8=E4=BD=93=E3=81=A9=E3=81=AE=E3=82=88=E3=81=86?=
- =?UTF-8?Q?=E3=81=AB=E3=81=97=E3=81=A6Encode=E3=81=95=E3=82=8C?=
- =?UTF-8?Q?=E3=82=8B=E3=81=AE=E3=81=8B=EF=BC=9F?=
-EOS
+my @decode_tests = (
+    # RFC2047 p.5
+    "=?iso-8859-1?q?this=20is=20some=20text?=" => "this is some text",
+    # RFC2047 p.10
+    "=?US-ASCII?Q?Keith_Moore?=" => "Keith Moore",
+    "=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?=" => "Keld Jørn Simonsen",
+    "=?ISO-8859-1?Q?Andr=E9?= Pirard" => "André Pirard",
+    "=?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=\r\n =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=" => "If you can read this you understand the example.",
+    "=?ISO-8859-1?Q?Olle_J=E4rnefors?=" => "Olle Järnefors",
+    "=?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?=" => "Patrik Fältström",
+    # RFC2047 p.11
+    "(=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)" => "(םולש ןב ילטפנ)",
+    "(=?ISO-8859-1?Q?a?=)" => "(a)",
+    "(=?ISO-8859-1?Q?a?= b)" => "(a b)",
+    "(=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)" => "(ab)",
+    "(=?ISO-8859-1?Q?a?=  =?ISO-8859-1?Q?b?=)" => "(ab)",
+    "(=?ISO-8859-1?Q?a?=\r\n\t=?ISO-8859-1?Q?b?=)" => "(ab)",
+    # RFC2047 p.12
+    "(=?ISO-8859-1?Q?a_b?=)" => '(a b)',
+    "(=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)" => "(a b)",
+    # RFC2231 p.6
+    "=?US-ASCII*EN?Q?Keith_Moore?=" => "Keith Moore",
+    # others
+    "=?US-ASCII*en-US?Q?Keith_Moore?=" => "Keith Moore",
+    "=?ISO-8859-1*da-DK?Q?Keld_J=F8rn_Simonsen?=" => "Keld Jørn Simonsen",
+    "=?ISO-8859-1*fr-BE?Q?Andr=E9?= Pirard" => "André Pirard",
+    "=?ISO-8859-1*en?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=" => "If you can read this you understand the example.",
+    # RT67569
+    "foo =?us-ascii?q?bar?=" => "foo bar",
+    "foo\r\n =?us-ascii?q?bar?=" => "foo bar",
+    "=?us-ascii?q?foo?= bar" => "foo bar",
+    "=?us-ascii?q?foo?=\r\n bar" => "foo bar",
+    "foo bar" => "foo bar",
+    "foo\r\n bar" => "foo bar",
+    "=?us-ascii?q?foo?= =?us-ascii?q?bar?=" => "foobar",
+    "=?us-ascii?q?foo?=\r\n =?us-ascii?q?bar?=" => "foobar",
+    "=?us-ascii?q?foo bar?=" => "=?us-ascii?q?foo bar?=",
+    "=?us-ascii?q?foo\r\n bar?=" => "=?us-ascii?q?foo bar?=",
+    # RT40027
+    "a: b\r\n c" => "a: b c",
+    # RT104422
+    "=?utf-8?Q?pre?= =?utf-8?B?IGZvbw==?=\r\n =?utf-8?Q?bar?=" => "pre foobar",
+);
+
+my @decode_default_tests = (
+    @decode_tests,
+    '=?us-ascii?q?foo=20=3cbar=40baz=2efoo=3e=20bar?=' => 'foo <bar@baz.foo> bar',
+    '"=?us-ascii?q?foo=20=3cbar=40baz=2efoo=3e=20bar?="' => '"foo <bar@baz.foo> bar"',
+    "=?us-ascii?q?foo?==?us-ascii?q?bar?=" => "foobar",
+    "foo=?us-ascii?q?bar?=" => "foobar",
+    "foo =?us-ascii?q?=20?==?us-ascii?q?bar?=" => "foo  bar",
+    # Encode::MIME::Header pre 2.83
+    "[=?UTF-8?B?ZsOzcnVt?=]=?UTF-8?B?IHNwcsOhdmE=?=" => "[fórum] správa",
+    "test:=?UTF-8?B?IHNwcsOhdmE=?=" => "test: správa",
+    "=?UTF-8?B?dMOpc3Q=?=:=?UTF-8?B?IHNwcsOhdmE=?=", "tést: správa",
+);
+
+my @decode_strict_tests = (
+    @decode_tests,
+    '=?us-ascii?q?foo=20=3cbar=40baz=2efoo=3e=20bar?=' => 'foo <bar@baz.foo> bar',
+    '"=?us-ascii?q?foo=20=3cbar=40baz=2efoo=3e=20bar?="' => '"=?us-ascii?q?foo=20=3cbar=40baz=2efoo=3e=20bar?="',
+);
+
+my @encode_tests = (
+    "小飼 弾" => "=?UTF-8?B?5bCP6aO8IOW8vg==?=", "=?UTF-8?Q?=E5=B0=8F=E9=A3=BC_=E5=BC=BE?=",
+    "漢字、カタカナ、ひらがなを含む、非常に長いタイトル行が一体全体どのようにしてEncodeされるのか?" => "=?UTF-8?B?5ryi5a2X44CB44Kr44K/44Kr44OK44CB44Gy44KJ44GM44Gq44KS5ZCr44KA?=\r\n =?UTF-8?B?44CB6Z2e5bi444Gr6ZW344GE44K/44Kk44OI44Or6KGM44GM5LiA5L2T5YWo?=\r\n =?UTF-8?B?5L2T44Gp44Gu44KI44GG44Gr44GX44GmRW5jb2Rl44GV44KM44KL44Gu44GL?=\r\n =?UTF-8?B?77yf?=", "=?UTF-8?Q?=E6=BC=A2=E5=AD=97=E3=80=81=E3=82=AB=E3=82=BF=E3=82=AB=E3=83=8A?=\r\n =?UTF-8?Q?=E3=80=81=E3=81=B2=E3=82=89=E3=81=8C=E3=81=AA=E3=82=92=E5=90=AB?=\r\n =?UTF-8?Q?=E3=82=80=E3=80=81=E9=9D=9E=E5=B8=B8=E3=81=AB=E9=95=B7=E3=81=84?=\r\n =?UTF-8?Q?=E3=82=BF=E3=82=A4=E3=83=88=E3=83=AB=E8=A1=8C=E3=81=8C=E4=B8=80?=\r\n =?UTF-8?Q?=E4=BD=93=E5=85=A8=E4=BD=93=E3=81=A9=E3=81=AE=E3=82=88=E3=81=86?=\r\n =?UTF-8?Q?=E3=81=AB=E3=81=97=E3=81=A6Encode=E3=81=95=E3=82=8C=E3=82=8B?=\r\n =?UTF-8?Q?=E3=81=AE=E3=81=8B=EF=BC=9F?=",
+    # double encode
+    "What is =?UTF-8?B?w4RwZmVs?= ?" => "=?UTF-8?B?V2hhdCBpcyA9P1VURi04P0I/dzRSd1ptVnM/PSA/?=", "=?UTF-8?Q?What_is_=3D=3FUTF-8=3FB=3Fw4RwZmVs=3F=3D_=3F?=",
+    # pound 1024
+    "\N{POUND SIGN}1024" => "=?UTF-8?B?wqMxMDI0?=", "=?UTF-8?Q?=C2=A31024?=",
+    # latin1 characters
+    "\x{fc}" => "=?UTF-8?B?w7w=?=", "=?UTF-8?Q?=C3=BC?=",
+    # RT42627
+    Encode::decode_utf8("\x{c2}\x{a3}xxxxxxxxxxxxxxxxxxx0") => "=?UTF-8?B?wqN4eHh4eHh4eHh4eHh4eHh4eHh4MA==?=", "=?UTF-8?Q?=C2=A3xxxxxxxxxxxxxxxxxxx0?=",
+    # RT87831
+    "0" => "=?UTF-8?B?MA==?=", "=?UTF-8?Q?0?=",
+    # RT88717
+    "Hey foo\x{2024}bar:whee" => "=?UTF-8?B?SGV5IGZvb+KApGJhcjp3aGVl?=", "=?UTF-8?Q?Hey_foo=E2=80=A4bar=3Awhee?=",
+    # valid q chars
+    "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz !*+-/" => "=?UTF-8?B?MDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpams=?=\r\n =?UTF-8?B?bG1ub3BxcnN0dXZ3eHl6ICEqKy0v?=", "=?UTF-8?Q?0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_?=\r\n =?UTF-8?Q?!*+-/?=",
+    # invalid q chars
+    "." => "=?UTF-8?B?Lg==?=", "=?UTF-8?Q?=2E?=",
+    "," => "=?UTF-8?B?LA==?=", "=?UTF-8?Q?=2C?=",
+);
+
+sub info {
+    my ($str) = @_;
+    $str = Encode::encode_utf8($str);
+    $str =~ s/\r/\\r/gs;
+    $str =~ s/\n/\\n/gs;
+    return $str;
+}
 
-is(Encode::decode('MIME-Header', $bheader), $dheader, "decode B");
-is(Encode::decode('MIME-Header', $qheader), $dheader, "decode Q");
-is(Encode::encode('MIME-B', $dheader)."\n", $bheader, "encode B");
-is(Encode::encode('MIME-Q', $dheader)."\n", $qheader, "encode Q");
+my @splice;
 
-$dheader = "What is =?UTF-8?B?w4RwZmVs?= ?";
-$bheader = "=?UTF-8?B?V2hhdCBpcyA9P1VURi04P0I/dzRSd1ptVnM/PSA/?=";
-$qheader = "=?UTF-8?Q?What=20is=20=3D=3FUTF=2D8=3FB=3Fw4R?="
-         . "\n " . "=?UTF-8?Q?wZmVs=3F=3D=20=3F?=";
-is(Encode::encode('MIME-B', $dheader), $bheader, "Double decode B");
-is(Encode::encode('MIME-Q', $dheader), $qheader, "Double decode Q");
-{
-    # From: Dave Evans <dave@rudolf.org.uk>
-    # Subject: Bug in Encode::MIME::Header
-    # Message-Id: <3F43440B.7060606@rudolf.org.uk>
-    use charnames ":full";
-    my $pound_1024 = "\N{POUND SIGN}1024";
-    is(Encode::encode('MIME-Q' => $pound_1024), '=?UTF-8?Q?=C2=A31024?=',
-       'pound 1024');
+@splice = @encode_tests;
+while (my ($d, $b, $q) = splice @splice, 0, 3) {
+    is Encode::encode('MIME-Header', $d) => $b, info("encode default: $d => $b");
+    is Encode::encode('MIME-B', $d) => $b, info("encode base64: $d => $b");
+    is Encode::encode('MIME-Q', $d) => $q, info("encode qp: $d => $q");
+    is Encode::decode('MIME-B', $b) => $d, info("decode base64: $b => $d");
+    is Encode::decode('MIME-Q', $q) => $d, info("decode qp: $b => $d");
 }
 
-is(Encode::encode('MIME-Q', "\x{fc}"), '=?UTF-8?Q?=C3=BC?=', 'Encode latin1 characters');
+@splice = @decode_default_tests;
+while (my ($e, $d) = splice @splice, 0, 2) {
+    is Encode::decode('MIME-Header', $e) => $d, info("decode default: $e => $d");
+}
 
-# RT42627
+local $Encode::MIME::Header::STRICT_DECODE = 1;
 
-my $rt42627 = Encode::decode_utf8("\x{c2}\x{a3}xxxxxxxxxxxxxxxxxxx0");
-is(Encode::encode('MIME-Q', $rt42627), 
-   '=?UTF-8?Q?=C2=A3xxxxxxxxxxxxxxxxxxx?= =?UTF-8?Q?0?=',
-   'MIME-Q encoding does not truncate trailing zeros');
+@splice = @decode_strict_tests;
+while (my ($e, $d) = splice @splice, 0, 2) {
+    is Encode::decode('MIME-Header', $e) => $d, info("decode strict: $e => $d");
+}
 
-# RT87831
-is(Encode::encode('MIME-Header', '0'), '=?UTF-8?B?MA==?=', 'RT87831');
-__END__;
+__END__
index 2c3ac61..f557875 100644 (file)
@@ -326,7 +326,7 @@ sub list_dynamic {
     $^O ne 'MSWin32' ? (
         [ 'bscode', '', '' ],
         [ 'bscodemulti', '', '' ],
-        [ 'subdirscomplex', '', '' ],
+        $^O ne 'VMS' ? ([ 'subdirscomplex', '', '' ]) : (),
     ) : (), # DynaLoader different
     [ 'subdirs', '', '' ],
     [ 'subdirsstatic', ' LINKTYPE=dynamic', ' LINKTYPE=dynamic' ],
index 2cc49f4..09409b8 100644 (file)
@@ -6,7 +6,7 @@ use warnings;
 
 use Math::BigInt::Calc 1.999706;
 
-our $VERSION = '0.40';
+our $VERSION = '0.42';
 
 ##############################################################################
 # global constants, flags and accessory
index 4c2c9b8..dd625bd 100644 (file)
@@ -1,27 +1,30 @@
 package Math::BigFloat;
 
-# 
+#
 # Mike grinned. 'Two down, infinity to go' - Mike Nostrus in 'Before and After'
 #
 
-# The following hash values are internally used:
-#   _e : exponent (ref to $CALC object)
-#   _m : mantissa (ref to $CALC object)
-#   _es        : sign of _e
-# sign : +,-,+inf,-inf, or "NaN" if not a number
-#   _a : accuracy
-#   _p : precision
+# The following hash values are used internally:
+# sign  : "+", "-", "+inf", "-inf", or "NaN" if not a number
+#   _m  : mantissa ($CALC object)
+#   _es : sign of _e
+#   _e  : exponent ($CALC object)
+#   _a  : accuracy
+#   _p  : precision
 
 use 5.006001;
 use strict;
 use warnings;
 
-our $VERSION = '1.999715';
+use Carp ();
+use Math::BigInt ();
+
+our $VERSION = '1.999726';
 $VERSION = eval $VERSION;
 
 require Exporter;
-our @ISA       = qw/Math::BigInt/;
-our @EXPORT_OK = qw/bpi/;
+our @ISA        = qw/Math::BigInt/;
+our @EXPORT_OK  = qw/bpi/;
 
 # $_trap_inf/$_trap_nan are internal and should never be accessed from outside
 our ($AUTOLOAD, $accuracy, $precision, $div_scale, $round_mode, $rnd_mode,
@@ -30,20 +33,174 @@ our ($AUTOLOAD, $accuracy, $precision, $div_scale, $round_mode, $rnd_mode,
 my $class = "Math::BigFloat";
 
 use overload
-  '<=>'        =>      sub { my $rc = $_[2] ? ref($_[0])->bcmp($_[1], $_[0])
-                                     : ref($_[0])->bcmp($_[0], $_[1]);
-                     $rc = 1 unless defined $rc;
-                     $rc <=> 0;
-               },
-# we need '>=' to get things like "1 >= NaN" right:
-  '>=' =>      sub { my $rc = $_[2] ? ref($_[0])->bcmp($_[1],$_[0])
-                                     : ref($_[0])->bcmp($_[0],$_[1]);
-                     # if there was a NaN involved, return false
-                     return '' unless defined $rc;
-                     $rc >= 0;
-               },
-  'int'        =>      sub { $_[0]->as_number() },             # 'trunc' to bigint
-;
+
+  # overload key: with_assign
+
+  '+'     =>      sub { $_[0] -> copy() -> badd($_[1]); },
+
+  '-'     =>      sub { my $c = $_[0] -> copy();
+                        $_[2] ? $c -> bneg() -> badd($_[1])
+                              : $c -> bsub($_[1]); },
+
+  '*'     =>      sub { $_[0] -> copy() -> bmul($_[1]); },
+
+  '/'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bdiv($_[0])
+                              : $_[0] -> copy() -> bdiv($_[1]); },
+
+  '%'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bmod($_[0])
+                              : $_[0] -> copy() -> bmod($_[1]); },
+
+  '**'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bpow($_[0])
+                              : $_[0] -> copy() -> bpow($_[1]); },
+
+  '<<'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> blsft($_[0])
+                              : $_[0] -> copy() -> blsft($_[1]); },
+
+  '>>'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> brsft($_[0])
+                              : $_[0] -> copy() -> brsft($_[1]); },
+
+  # overload key: assign
+
+  '+='    =>      sub { $_[0]->badd($_[1]); },
+
+  '-='    =>      sub { $_[0]->bsub($_[1]); },
+
+  '*='    =>      sub { $_[0]->bmul($_[1]); },
+
+  '/='    =>      sub { scalar $_[0]->bdiv($_[1]); },
+
+  '%='    =>      sub { $_[0]->bmod($_[1]); },
+
+  '**='   =>      sub { $_[0]->bpow($_[1]); },
+
+
+  '<<='   =>      sub { $_[0]->blsft($_[1]); },
+
+  '>>='   =>      sub { $_[0]->brsft($_[1]); },
+
+#  'x='    =>      sub { },
+
+#  '.='    =>      sub { },
+
+  # overload key: num_comparison
+
+  '<'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> blt($_[0])
+                              : $_[0] -> blt($_[1]); },
+
+  '<='    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> ble($_[0])
+                              : $_[0] -> ble($_[1]); },
+
+  '>'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bgt($_[0])
+                              : $_[0] -> bgt($_[1]); },
+
+  '>='    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bge($_[0])
+                              : $_[0] -> bge($_[1]); },
+
+  '=='    =>      sub { $_[0] -> beq($_[1]); },
+
+  '!='    =>      sub { $_[0] -> bne($_[1]); },
+
+  # overload key: 3way_comparison
+
+  '<=>'   =>      sub { my $cmp = $_[0] -> bcmp($_[1]);
+                        defined($cmp) && $_[2] ? -$cmp : $cmp; },
+
+  'cmp'   =>      sub { $_[2] ? "$_[1]" cmp $_[0] -> bstr()
+                              : $_[0] -> bstr() cmp "$_[1]"; },
+
+  # overload key: str_comparison
+
+#  'lt'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrlt($_[0])
+#                              : $_[0] -> bstrlt($_[1]); },
+#
+#  'le'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrle($_[0])
+#                              : $_[0] -> bstrle($_[1]); },
+#
+#  'gt'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrgt($_[0])
+#                              : $_[0] -> bstrgt($_[1]); },
+#
+#  'ge'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrge($_[0])
+#                              : $_[0] -> bstrge($_[1]); },
+#
+#  'eq'    =>      sub { $_[0] -> bstreq($_[1]); },
+#
+#  'ne'    =>      sub { $_[0] -> bstrne($_[1]); },
+
+  # overload key: binary
+
+  '&'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> band($_[0])
+                              : $_[0] -> copy() -> band($_[1]); },
+
+  '&='    =>      sub { $_[0] -> band($_[1]); },
+
+  '|'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bior($_[0])
+                              : $_[0] -> copy() -> bior($_[1]); },
+
+  '|='    =>      sub { $_[0] -> bior($_[1]); },
+
+  '^'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bxor($_[0])
+                              : $_[0] -> copy() -> bxor($_[1]); },
+
+  '^='    =>      sub { $_[0] -> bxor($_[1]); },
+
+#  '&.'    =>      sub { },
+
+#  '&.='   =>      sub { },
+
+#  '|.'    =>      sub { },
+
+#  '|.='   =>      sub { },
+
+#  '^.'    =>      sub { },
+
+#  '^.='   =>      sub { },
+
+  # overload key: unary
+
+  'neg'   =>      sub { $_[0] -> copy() -> bneg(); },
+
+#  '!'     =>      sub { },
+
+  '~'     =>      sub { $_[0] -> copy() -> bnot(); },
+
+#  '~.'    =>      sub { },
+
+  # overload key: mutators
+
+  '++'    =>      sub { $_[0] -> binc() },
+
+  '--'    =>      sub { $_[0] -> bdec() },
+
+  # overload key: func
+
+  'atan2' =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> batan2($_[0])
+                              : $_[0] -> copy() -> batan2($_[1]); },
+
+  'cos'   =>      sub { $_[0] -> copy() -> bcos(); },
+
+  'sin'   =>      sub { $_[0] -> copy() -> bsin(); },
+
+  'exp'   =>      sub { $_[0] -> copy() -> bexp($_[1]); },
+
+  'abs'   =>      sub { $_[0] -> copy() -> babs(); },
+
+  'log'   =>      sub { $_[0] -> copy() -> blog(); },
+
+  'sqrt'  =>      sub { $_[0] -> copy() -> bsqrt(); },
+
+  'int'   =>      sub { $_[0] -> copy() -> bint(); },
+
+  # overload key: conversion
+
+  'bool'  =>      sub { $_[0] -> is_zero() ? '' : 1; },
+
+  '""'    =>      sub { $_[0] -> bstr(); },
+
+  '0+'    =>      sub { $_[0] -> numify(); },
+
+  '='     =>      sub { $_[0]->copy(); },
+
+  ;
 
 ##############################################################################
 # global constants, flags and assorted stuff
@@ -70,67 +227,133 @@ $_trap_nan = 0;
 $_trap_inf = 0;
 
 # constant for easier life
-my $nan = 'NaN'; 
+my $nan = 'NaN';
 
-my $IMPORT = 0;        # was import() called yet? used to make require work
+my $IMPORT = 0; # was import() called yet? used to make require work
 
-# some digits of accuracy for blog(undef,10); which we use in blog() for speed
-my $LOG_10 = 
+# some digits of accuracy for blog(undef, 10); which we use in blog() for speed
+my $LOG_10 =
  '2.3025850929940456840179914546843642076011014886287729760333279009675726097';
 my $LOG_10_A = length($LOG_10)-1;
 # ditto for log(2)
-my $LOG_2 = 
+my $LOG_2 =
  '0.6931471805599453094172321214581765680755001343602552541206800094933936220';
 my $LOG_2_A = length($LOG_2)-1;
-my $HALF = '0.5';                      # made into an object if nec.
+my $HALF = '0.5';                       # made into an object if nec.
 
 ##############################################################################
 # the old code had $rnd_mode, so we need to support it, too
 
-sub TIESCALAR   { my ($class) = @_; bless \$round_mode, $class; }
-sub FETCH       { return $round_mode; }
-sub STORE       { $rnd_mode = $_[0]->round_mode($_[1]); }
+sub TIESCALAR {
+    my ($class) = @_;
+    bless \$round_mode, $class;
+}
+
+sub FETCH {
+    return $round_mode;
+}
+
+sub STORE {
+    $rnd_mode = $_[0]->round_mode($_[1]);
+}
+
+BEGIN {
+    # when someone sets $rnd_mode, we catch this and check the value to see
+    # whether it is valid or not.
+    $rnd_mode   = 'even';
+    tie $rnd_mode, 'Math::BigFloat';
+
+    # we need both of them in this package:
+    *as_int = \&as_number;
+}
 
-BEGIN
-  {
-  # when someone sets $rnd_mode, we catch this and check the value to see
-  # whether it is valid or not. 
-  $rnd_mode   = 'even'; tie $rnd_mode, 'Math::BigFloat';
+sub DESTROY {
+    # going through AUTOLOAD for every DESTROY is costly, avoid it by empty sub
+}
+
+sub AUTOLOAD {
+    my $name = $AUTOLOAD;
+
+    $name =~ s/(.*):://;        # split package
+    my $c = $1 || $class;
+    no strict 'refs';
+    $c->import() if $IMPORT == 0;
+    if (!_method_alias($name)) {
+        if (!defined $name) {
+            # delayed load of Carp and avoid recursion
+            Carp::croak("$c: Can't call a method without name");
+        }
+        if (!_method_hand_up($name)) {
+            # delayed load of Carp and avoid recursion
+            Carp::croak("Can't call $c\-\>$name, not a valid method");
+        }
+        # try one level up, but subst. bxxx() for fxxx() since MBI only got bxxx()
+        $name =~ s/^f/b/;
+        return &{"Math::BigInt"."::$name"}(@_);
+    }
+    my $bname = $name;
+    $bname =~ s/^f/b/;
+    $c .= "::$name";
+    *{$c} = \&{$bname};
+    &{$c};                      # uses @_
+}
 
-  # we need both of them in this package:
-  *as_int = \&as_number;
-  }
 ##############################################################################
 
 {
-  # valid method aliases for AUTOLOAD
-  my %methods = map { $_ => 1 }  
-   qw / fadd fsub fmul fdiv fround ffround fsqrt fmod fstr fsstr fpow fnorm
-        fint facmp fcmp fzero fnan finf finc fdec ffac fneg
-       fceil ffloor frsft flsft fone flog froot fexp
-      /;
-  # valid methods that can be handed up (for AUTOLOAD)
-  my %hand_ups = map { $_ => 1 }  
-   qw / is_nan is_inf is_negative is_positive is_pos is_neg
-        accuracy precision div_scale round_mode fabs fnot
-        objectify upgrade downgrade
-       bone binf bnan bzero
-       bsub
-      /;
-
-  sub _method_alias { exists $methods{$_[0]||''}; } 
-  sub _method_hand_up { exists $hand_ups{$_[0]||''}; } 
+    # valid method aliases for AUTOLOAD
+    my %methods = map { $_ => 1 }
+      qw / fadd fsub fmul fdiv fround ffround fsqrt fmod fstr fsstr fpow fnorm
+           fint facmp fcmp fzero fnan finf finc fdec ffac fneg
+           fceil ffloor frsft flsft fone flog froot fexp
+         /;
+    # valid methods that can be handed up (for AUTOLOAD)
+    my %hand_ups = map { $_ => 1 }
+      qw / is_nan is_inf is_negative is_positive is_pos is_neg
+           accuracy precision div_scale round_mode fabs fnot
+           objectify upgrade downgrade
+           bone binf bnan bzero
+           bsub
+         /;
+
+    sub _method_alias { exists $methods{$_[0]||''}; }
+    sub _method_hand_up { exists $hand_ups{$_[0]||''}; }
 }
 
-##############################################################################
-# constructors
+sub DEBUG () { 0; }
+
+sub isa {
+    my ($self, $class) = @_;
+    return if $class =~ /^Math::BigInt/; # we aren't one of these
+    UNIVERSAL::isa($self, $class);
+}
+
+sub config {
+    # return (later set?) configuration data as hash ref
+    my $class = shift || 'Math::BigFloat';
+
+    if (@_ == 1 && ref($_[0]) ne 'HASH') {
+        my $cfg = $class->SUPER::config();
+        return $cfg->{$_[0]};
+    }
+
+    my $cfg = $class->SUPER::config(@_);
+
+    # now we need only to override the ones that are different from our parent
+    $cfg->{class} = $class;
+    $cfg->{with} = $MBI;
+    $cfg;
+}
+
+###############################################################################
+# Constructor methods
+###############################################################################
 
 sub new {
-    # Create a new BigFloat object from a string or another bigfloat object.
+    # Create a new Math::BigFloat object from a string or another bigfloat object.
     # _e: exponent
     # _m: mantissa
-    # sign  => sign ("+", "-", "+inf", "-inf", or "NaN"
+    # sign  => ("+", "-", "+inf", "-inf", or "NaN")
 
     my $self    = shift;
     my $selfref = ref $self;
@@ -141,8 +364,7 @@ sub new {
     # avoid numify-calls by not using || on $wanted!
 
     unless (defined $wanted) {
-        require Carp;
-        Carp::carp("Use of uninitialized value in new");
+        #Carp::carp("Use of uninitialized value in new");
         return $self->bzero(@r);
     }
 
@@ -185,3128 +407,2267 @@ sub new {
         return $self->binf($sgn);
     }
 
-    # Shortcut for simple forms like '12' that have no trailing zeros.
-    if ($wanted =~ /^([+-]?)0*([1-9][0-9]*[1-9])$/) {
-        $self->{_e} = $MBI->_zero();
-        $self->{_es} = '+';
-        $self->{sign} = $1 || '+';
-        $self->{_m} = $MBI->_new($2);
-        return $self->round(@r) if !$downgrade;
-    }
-
-  my ($mis,$miv,$mfv,$es,$ev) = Math::BigInt::_split($wanted);
-  if (!ref $mis)
-    {
-    if ($_trap_nan)
-      {
-      require Carp;
-      Carp::croak ("$wanted is not a number initialized to $class");
-      }
-    
-    return $downgrade->bnan() if $downgrade;
-    
-    $self->{_e} = $MBI->_zero();
-    $self->{_es} = '+';
-    $self->{_m} = $MBI->_zero();
-    $self->{sign} = $nan;
-    }
-  else
-    {
-    # make integer from mantissa by adjusting exp, then convert to int
-    $self->{_e} = $MBI->_new($$ev);            # exponent
-    $self->{_es} = $$es || '+';
-    my $mantissa = "$$miv$$mfv";               # create mant.
-    $mantissa =~ s/^0+(\d)/$1/;                        # strip leading zeros
-    $self->{_m} = $MBI->_new($mantissa);       # create mant.
-
-    # 3.123E0 = 3123E-3, and 3.123E-2 => 3123E-5
-    if (CORE::length($$mfv) != 0)
-      {
-      my $len = $MBI->_new( CORE::length($$mfv));
-      ($self->{_e}, $self->{_es}) =
-       _e_sub ($self->{_e}, $len, $self->{_es}, '+');
-      }
-    # we can only have trailing zeros on the mantissa if $$mfv eq ''
-    else
-      {
-      # Use a regexp to count the trailing zeros in $$miv instead of _zeros()
-      # because that is faster, especially when _m is not stored in base 10.
-      my $zeros = 0; $zeros = CORE::length($1) if $$miv =~ /[1-9](0*)$/; 
-      if ($zeros != 0)
-        {
-        my $z = $MBI->_new($zeros);
-        # turn '120e2' into '12e3'
-        $MBI->_rsft ( $self->{_m}, $z, 10);
-        ($self->{_e}, $self->{_es}) =
-         _e_add ( $self->{_e}, $z, $self->{_es}, '+');
-        }
-      }
-    $self->{sign} = $$mis;
-
-    # for something like 0Ey, set y to 0, and -0 => +0
-    # Check $$miv for being '0' and $$mfv eq '', because otherwise _m could not
-    # have become 0. That's faster than to call $MBI->_is_zero().
-    $self->{sign} = '+', $self->{_e} = $MBI->_zero()
-     if $$miv eq '0' and $$mfv eq '';
-
-    return $self->round(@r) if !$downgrade;
-    }
-  # if downgrade, inf, NaN or integers go down
+    # Handle explicit NaNs (not the ones returned due to invalid input).
 
-  if ($downgrade && $self->{_es} eq '+')
-    {
-    if ($MBI->_is_zero( $self->{_e} ))
-      {
-      return $downgrade->new($$mis . $MBI->_str( $self->{_m} ));
-      }
-    return $downgrade->new($self->bsstr()); 
+    if ($wanted =~ /^\s*([+-]?)nan\s*\z/i) {
+        return $downgrade->new($wanted) if $downgrade;
+        $self = $class -> bnan();
+        $self->round(@r) unless @r >= 2 && !defined $r[0] && !defined $r[1];
+        return $self;
     }
-  $self->bnorm()->round(@r);                   # first normalize, then round
-  }
-
-sub copy {
-    my $self    = shift;
-    my $selfref = ref $self;
-    my $class   = $selfref || $self;
-
-    # If called as a class method, the object to copy is the next argument.
-
-    $self = shift() unless $selfref;
-
-    my $copy = bless {}, $class;
-
-    $copy->{sign} = $self->{sign};
-    $copy->{_es}  = $self->{_es};
-    $copy->{_m}   = $MBI->_copy($self->{_m});
-    $copy->{_e}   = $MBI->_copy($self->{_e});
-    $copy->{_a}   = $self->{_a} if exists $self->{_a};
-    $copy->{_p}   = $self->{_p} if exists $self->{_p};
 
-    return $copy;
-}
+    # Handle hexadecimal numbers.
 
-sub _bnan
-  {
-  # used by parent class bone() to initialize number to NaN
-  my $self = shift;
-  
-  if ($_trap_nan)
-    {
-    require Carp;
-    my $class = ref($self);
-    Carp::croak ("Tried to set $self to NaN in $class\::_bnan()");
-    }
-
-  $IMPORT=1;                                   # call our import only once
-  $self->{_m} = $MBI->_zero();
-  $self->{_e} = $MBI->_zero();
-  $self->{_es} = '+';
-  }
-
-sub _binf
-  {
-  # used by parent class bone() to initialize number to +-inf
-  my $self = shift;
-  
-  if ($_trap_inf)
-    {
-    require Carp;
-    my $class = ref($self);
-    Carp::croak ("Tried to set $self to +-inf in $class\::_binf()");
-    }
-
-  $IMPORT=1;                                   # call our import only once
-  $self->{_m} = $MBI->_zero();
-  $self->{_e} = $MBI->_zero();
-  $self->{_es} = '+';
-  }
-
-sub _bone
-  {
-  # used by parent class bone() to initialize number to 1
-  my $self = shift;
-  $IMPORT=1;                                   # call our import only once
-  $self->{_m} = $MBI->_one();
-  $self->{_e} = $MBI->_zero();
-  $self->{_es} = '+';
-  }
-
-sub _bzero
-  {
-  # used by parent class bzero() to initialize number to 0
-  my $self = shift;
-  $IMPORT=1;                                   # call our import only once
-  $self->{_m} = $MBI->_zero();
-  $self->{_e} = $MBI->_zero();
-  $self->{_es} = '+';
-  }
-
-sub isa
-  {
-  my ($self,$class) = @_;
-  return if $class =~ /^Math::BigInt/;         # we aren't one of these
-  UNIVERSAL::isa($self,$class);
-  }
-
-sub config
-  {
-  # return (later set?) configuration data as hash ref
-  my $class = shift || 'Math::BigFloat';
-
-  if (@_ == 1 && ref($_[0]) ne 'HASH')
-    {
-    my $cfg = $class->SUPER::config();
-    return $cfg->{$_[0]};
+    if ($wanted =~ /^\s*[+-]?0[Xx]/) {
+        $self = $class -> from_hex($wanted);
+        $self->round(@r) unless @r >= 2 && !defined $r[0] && !defined $r[1];
+        return $self;
     }
 
-  my $cfg = $class->SUPER::config(@_);
-
-  # now we need only to override the ones that are different from our parent
-  $cfg->{class} = $class;
-  $cfg->{with} = $MBI;
-  $cfg;
-  }
-
-##############################################################################
-# string conversion
+    # Handle binary numbers.
 
-sub bstr 
-  {
-  # (ref to BFLOAT or num_str ) return num_str
-  # Convert number from internal format to (non-scientific) string format.
-  # internal format is always normalized (no leading zeros, "-0" => "+0")
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+    if ($wanted =~ /^\s*[+-]?0[Bb]/) {
+        $self = $class -> from_bin($wanted);
+        $self->round(@r) unless @r >= 2 && !defined $r[0] && !defined $r[1];
+        return $self;
+    }
 
-  if ($x->{sign} !~ /^[+-]$/)
-    {
-    return $x->{sign} unless $x->{sign} eq '+inf';      # -inf, NaN
-    return 'inf';                                       # +inf
+    # Shortcut for simple forms like '12' that have no trailing zeros.
+    if ($wanted =~ /^([+-]?)0*([1-9][0-9]*[1-9])$/) {
+        $self->{_e}   = $MBI -> _zero();
+        $self->{_es}  = '+';
+        $self->{sign} = $1 || '+';
+        $self->{_m}   = $MBI -> _new($2);
+        if (!$downgrade) {
+            $self->round(@r) unless @r >= 2 && !defined $r[0] && !defined $r[1];
+            return $self;
+        }
     }
 
-  my $es = '0'; my $len = 1; my $cad = 0; my $dot = '.';
+    my ($mis, $miv, $mfv, $es, $ev) = Math::BigInt::_split($wanted);
+    if (!ref $mis) {
+        if ($_trap_nan) {
+            Carp::croak("$wanted is not a number initialized to $class");
+        }
 
-  # $x is zero?
-  my $not_zero = !($x->{sign} eq '+' && $MBI->_is_zero($x->{_m}));
-  if ($not_zero)
-    {
-    $es = $MBI->_str($x->{_m});
-    $len = CORE::length($es);
-    my $e = $MBI->_num($x->{_e});      
-    $e = -$e if $x->{_es} eq '-';
-    if ($e < 0)
-      {
-      $dot = '';
-      # if _e is bigger than a scalar, the following will blow your memory
-      if ($e <= -$len)
-        {
-        my $r = abs($e) - $len;
-        $es = '0.'. ('0' x $r) . $es; $cad = -($len+$r);
+        return $downgrade->bnan() if $downgrade;
+
+        $self->{_e} = $MBI->_zero();
+        $self->{_es} = '+';
+        $self->{_m} = $MBI->_zero();
+        $self->{sign} = $nan;
+    } else {
+        # make integer from mantissa by adjusting exp, then convert to int
+        $self->{_e} = $MBI->_new($$ev); # exponent
+        $self->{_es} = $$es || '+';
+        my $mantissa = "$$miv$$mfv";     # create mant.
+        $mantissa =~ s/^0+(\d)/$1/;      # strip leading zeros
+        $self->{_m} = $MBI->_new($mantissa); # create mant.
+
+        # 3.123E0 = 3123E-3, and 3.123E-2 => 3123E-5
+        if (CORE::length($$mfv) != 0) {
+            my $len = $MBI->_new(CORE::length($$mfv));
+            ($self->{_e}, $self->{_es}) =
+              _e_sub($self->{_e}, $len, $self->{_es}, '+');
         }
-      else
-        {
-        substr($es,$e,0) = '.'; $cad = $MBI->_num($x->{_e});
-        $cad = -$cad if $x->{_es} eq '-';
+        # we can only have trailing zeros on the mantissa if $$mfv eq ''
+        else {
+            # Use a regexp to count the trailing zeros in $$miv instead of
+            # _zeros() because that is faster, especially when _m is not stored
+            # in base 10.
+            my $zeros = 0;
+            $zeros = CORE::length($1) if $$miv =~ /[1-9](0*)$/;
+            if ($zeros != 0) {
+                my $z = $MBI->_new($zeros);
+                # turn '120e2' into '12e3'
+                $MBI->_rsft($self->{_m}, $z, 10);
+                ($self->{_e}, $self->{_es}) =
+                  _e_add($self->{_e}, $z, $self->{_es}, '+');
+            }
         }
-      }
-    elsif ($e > 0)
-      {
-      # expand with zeros
-      $es .= '0' x $e; $len += $e; $cad = 0;
-      }
-    } # if not zero
-
-  $es = '-'.$es if $x->{sign} eq '-';
-  # if set accuracy or precision, pad with zeros on the right side
-  if ((defined $x->{_a}) && ($not_zero))
-    {
-    # 123400 => 6, 0.1234 => 4, 0.001234 => 4
-    my $zeros = $x->{_a} - $cad;               # cad == 0 => 12340
-    $zeros = $x->{_a} - $len if $cad != $len;
-    $es .= $dot.'0' x $zeros if $zeros > 0;
-    }
-  elsif ((($x->{_p} || 0) < 0))
-    {
-    # 123400 => 6, 0.1234 => 4, 0.001234 => 6
-    my $zeros = -$x->{_p} + $cad;
-    $es .= $dot.'0' x $zeros if $zeros > 0;
-    }
-  $es;
-  }
-
-sub bsstr
-  {
-  # (ref to BFLOAT or num_str ) return num_str
-  # Convert number from internal format to scientific string format.
-  # internal format is always normalized (no leading zeros, "-0E0" => "+0E0")
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+        $self->{sign} = $$mis;
 
-  if ($x->{sign} !~ /^[+-]$/)
-    {
-    return $x->{sign} unless $x->{sign} eq '+inf';      # -inf, NaN
-    return 'inf';                                       # +inf
-    }
-  my $sep = 'e'.$x->{_es};
-  my $sign = $x->{sign}; $sign = '' if $sign eq '+';
-  $sign . $MBI->_str($x->{_m}) . $sep . $MBI->_str($x->{_e});
-  }
-    
-sub numify 
-  {
-  # Make a Perl scalar number from a Math::BigFloat object.
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
-
-  if ($x -> is_nan()) {
-      require Math::Complex;
-      my $inf = Math::Complex::Inf();
-      return $inf - $inf;
-  }
-
-  if ($x -> is_inf()) {
-      require Math::Complex;
-      my $inf = Math::Complex::Inf();
-      return $x -> is_negative() ? -$inf : $inf;
-  }
-
-  # Create a string and let Perl's atoi()/atof() handle the rest.
-  return 0 + $x -> bsstr();
-  }
+        # for something like 0Ey, set y to 0, and -0 => +0
+        # Check $$miv for being '0' and $$mfv eq '', because otherwise _m could not
+        # have become 0. That's faster than to call $MBI->_is_zero().
+        $self->{sign} = '+', $self->{_e} = $MBI->_zero()
+          if $$miv eq '0' and $$mfv eq '';
 
-##############################################################################
-# public stuff (usually prefixed with "b")
-
-sub bneg
-  {
-  # (BINT or num_str) return BINT
-  # negate number or make a negated number from string
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
-
-  return $x if $x->modify('bneg');
-
-  # for +0 do not negate (to have always normalized +0). Does nothing for 'NaN'
-  $x->{sign} =~ tr/+-/-+/ unless ($x->{sign} eq '+' && $MBI->_is_zero($x->{_m}));
-  $x;
-  }
-
-# tels 2001-08-04 
-# XXX TODO this must be overwritten and return NaN for non-integer values
-# band(), bior(), bxor(), too
-#sub bnot
-#  {
-#  $class->SUPER::bnot($class,@_);
-#  }
-
-sub bcmp 
-  {
-  # Compares 2 values.  Returns one of undef, <0, =0, >0. (suitable for sort)
-
-  # set up parameters
-  my ($self,$x,$y) = (ref($_[0]),@_);
-
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y) = objectify(2,@_);
+        if (!$downgrade) {
+            $self->round(@r) unless @r >= 2 && !defined $r[0] && !defined $r[1];
+            return $self;
+        }
     }
 
-  return $upgrade->bcmp($x,$y) if defined $upgrade &&
-    ((!$x->isa($self)) || (!$y->isa($self)));
+    # if downgrade, inf, NaN or integers go down
 
-  # Handle all 'nan' cases.
+    if ($downgrade && $self->{_es} eq '+') {
+        if ($MBI->_is_zero($self->{_e})) {
+            return $downgrade->new($$mis . $MBI->_str($self->{_m}));
+        }
+        return $downgrade->new($self->bsstr());
+    }
+    $self->bnorm();
+    $self->round(@r) unless @r >= 2 && !defined $r[0] && !defined $r[1];
+    return $self;
+}
 
-  return undef if ($x->{sign} eq $nan) || ($y->{sign} eq $nan);
+sub from_hex {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
 
-  # Handle all '+inf' and '-inf' cases.
+    my $str = shift;
 
-  return  0 if ($x->{sign} eq '+inf' && $y->{sign} eq '+inf' ||
-                $x->{sign} eq '-inf' && $y->{sign} eq '-inf');
-  return +1 if $x->{sign} eq '+inf';    # x = +inf and y < +inf
-  return -1 if $x->{sign} eq '-inf';    # x = -inf and y > -inf
-  return -1 if $y->{sign} eq '+inf';    # x < +inf and y = +inf
-  return +1 if $y->{sign} eq '-inf';    # x > -inf and y = -inf
+    # If called as a class method, initialize a new object.
 
-  # Handle all cases with opposite signs.
+    $self = $class -> bzero() unless $selfref;
 
-  return +1 if $x->{sign} eq '+' && $y->{sign} eq '-';  # also does 0 <=> -y
-  return -1 if $x->{sign} eq '-' && $y->{sign} eq '+';  # also does -x <=> 0
+    if ($str =~ s/
+                     ^
 
-  # Handle all remaining zero cases.
+                     # sign
+                     ( [+-]? )
 
-  my $xz = $x->is_zero();
-  my $yz = $y->is_zero();
-  return  0 if $xz && $yz;                              # 0 <=> 0
-  return -1 if $xz && $y->{sign} eq '+';                # 0 <=> +y
-  return +1 if $yz && $x->{sign} eq '+';                # +x <=> 0
+                     # optional "hex marker"
+                     (?: 0? x )?
 
-  # Both arguments are now finite, non-zero numbers with the same sign.
+                     # significand using the hex digits 0..9 and a..f
+                     (
+                         [0-9a-fA-F]+ (?: _ [0-9a-fA-F]+ )*
+                         (?:
+                             \.
+                             (?: [0-9a-fA-F]+ (?: _ [0-9a-fA-F]+ )* )?
+                         )?
+                     |
+                         \.
+                         [0-9a-fA-F]+ (?: _ [0-9a-fA-F]+ )*
+                     )
 
-  my $cmp;
+                     # exponent (power of 2) using decimal digits
+                     (?:
+                         [Pp]
+                         ( [+-]? )
+                         ( \d+ (?: _ \d+ )* )
+                     )?
 
-  # The next step is to compare the exponents, but since each mantissa is an
-  # integer of arbitrary value, the exponents must be normalized by the length
-  # of the mantissas before we can compare them.
+                     $
+                 //x)
+    {
+        my $s_sign  = $1 || '+';
+        my $s_value = $2;
+        my $e_sign  = $3 || '+';
+        my $e_value = $4 || '0';
+        $s_value =~ tr/_//d;
+        $e_value =~ tr/_//d;
 
-  my $mxl = $MBI->_len($x->{_m});
-  my $myl = $MBI->_len($y->{_m});
+        # The significand must be multiplied by 2 raised to this exponent.
 
-  # If the mantissas have the same length, there is no point in normalizing the
-  # exponents by the length of the mantissas, so treat that as a special case.
+        my $two_expon = $class -> new($e_value);
+        $two_expon -> bneg() if $e_sign eq '-';
 
-  if ($mxl == $myl) {
+        # If there is a dot in the significand, remove it and adjust the
+        # exponent according to the number of digits in the fraction part of
+        # the significand. Since the digits in the significand are in base 16,
+        # but the exponent is only in base 2, multiply the exponent adjustment
+        # value by log(16) / log(2) = 4.
 
-      # First handle the two cases where the exponents have different signs.
+        my $idx = index($s_value, '.');
+        if ($idx >= 0) {
+            substr($s_value, $idx, 1) = '';
+            $two_expon -= $class -> new(CORE::length($s_value))
+                                 -> bsub($idx)
+                                 -> bmul("4");
+        }
 
-      if ($x->{_es} eq '+' && $y->{_es} eq '-') {
-          $cmp = +1;
-      }
+        $self -> {sign} = $s_sign;
+        $self -> {_m}   = $MBI -> _from_hex('0x' . $s_value);
 
-      elsif ($x->{_es} eq '-' && $y->{_es} eq '+') {
-          $cmp = -1;
-      }
+        if ($two_expon > 0) {
+            my $factor = $class -> new("2") -> bpow($two_expon);
+            $self -> bmul($factor);
+        } elsif ($two_expon < 0) {
+            my $factor = $class -> new("0.5") -> bpow(-$two_expon);
+            $self -> bmul($factor);
+        }
 
-      # Then handle the case where the exponents have the same sign.
+        return $self;
+    }
 
-      else {
-          $cmp = $MBI->_acmp($x->{_e}, $y->{_e});
-          $cmp = -$cmp if $x->{_es} eq '-';
-      }
+    return $self->bnan();
+}
 
-      # Adjust for the sign, which is the same for x and y, and bail out if
-      # we're done.
+sub from_oct {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
 
-      $cmp = -$cmp if $x->{sign} eq '-';        # 124 > 123, but -124 < -123
-      return $cmp if $cmp;
+    my $str = shift;
 
-  }
+    # If called as a class method, initialize a new object.
 
-  # We must normalize each exponent by the length of the corresponding
-  # mantissa. Life is a lot easier if we first make both exponents
-  # non-negative. We do this by adding the same positive value to both
-  # exponent. This is safe, because when comparing the exponents, only the
-  # relative difference is important.
+    $self = $class -> bzero() unless $selfref;
 
-  my $ex;
-  my $ey;
+    if ($str =~ s/
+                     ^
 
-  if ($x->{_es} eq '+') {
+                     # sign
+                     ( [+-]? )
 
-      # If the exponent of x is >= 0 and the exponent of y is >= 0, there is no
-      # need to do anything special.
+                     # significand using the octal digits 0..7
+                     (
+                         [0-7]+ (?: _ [0-7]+ )*
+                         (?:
+                             \.
+                             (?: [0-7]+ (?: _ [0-7]+ )* )?
+                         )?
+                     |
+                         \.
+                         [0-7]+ (?: _ [0-7]+ )*
+                     )
+
+                     # exponent (power of 2) using decimal digits
+                     (?:
+                         [Pp]
+                         ( [+-]? )
+                         ( \d+ (?: _ \d+ )* )
+                     )?
 
-      if ($y->{_es} eq '+') {
-          $ex = $MBI->_copy($x->{_e});
-          $ey = $MBI->_copy($y->{_e});
-      }
+                     $
+                 //x)
+    {
+        my $s_sign  = $1 || '+';
+        my $s_value = $2;
+        my $e_sign  = $3 || '+';
+        my $e_value = $4 || '0';
+        $s_value =~ tr/_//d;
+        $e_value =~ tr/_//d;
 
-      # If the exponent of x is >= 0 and the exponent of y is < 0, add the
-      # absolute value of the exponent of y to both.
+        # The significand must be multiplied by 2 raised to this exponent.
 
-      else {
-          $ex = $MBI->_copy($x->{_e});
-          $ex = $MBI->_add($ex, $y->{_e});      # ex + |ey|
-          $ey = $MBI->_zero();                  # -ex + |ey| = 0
-      }
+        my $two_expon = $class -> new($e_value);
+        $two_expon -> bneg() if $e_sign eq '-';
 
-  } else {
+        # If there is a dot in the significand, remove it and adjust the
+        # exponent according to the number of digits in the fraction part of
+        # the significand. Since the digits in the significand are in base 8,
+        # but the exponent is only in base 2, multiply the exponent adjustment
+        # value by log(8) / log(2) = 3.
 
-      # If the exponent of x is < 0 and the exponent of y is >= 0, add the
-      # absolute value of the exponent of x to both.
+        my $idx = index($s_value, '.');
+        if ($idx >= 0) {
+            substr($s_value, $idx, 1) = '';
+            $two_expon -= $class -> new(CORE::length($s_value))
+                                 -> bsub($idx)
+                                 -> bmul("3");
+        }
 
-      if ($y->{_es} eq '+') {
-          $ex = $MBI->_zero();                  # -ex + |ex| = 0
-          $ey = $MBI->_copy($y->{_e});
-          $ey = $MBI->_add($ey, $x->{_e});      # ey + |ex|
-      }
+        $self -> {sign} = $s_sign;
+        $self -> {_m}   = $MBI -> _from_oct($s_value);
 
-      # If the exponent of x is < 0 and the exponent of y is < 0, add the
-      # absolute values of both exponents to both exponents.
+        if ($two_expon > 0) {
+            my $factor = $class -> new("2") -> bpow($two_expon);
+            $self -> bmul($factor);
+        } elsif ($two_expon < 0) {
+            my $factor = $class -> new("0.5") -> bpow(-$two_expon);
+            $self -> bmul($factor);
+        }
 
-      else {
-          $ex = $MBI->_copy($y->{_e});          # -ex + |ey| + |ex| = |ey|
-          $ey = $MBI->_copy($x->{_e});          # -ey + |ex| + |ey| = |ex|
-      }
+        return $self;
+    }
 
-  }
+    return $self->bnan();
+}
 
-  # Now we can normalize the exponents by adding lengths of the mantissas.
+sub from_bin {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
 
-  $MBI->_add($ex, $MBI->_new($mxl));
-  $MBI->_add($ey, $MBI->_new($myl));
+    my $str = shift;
 
-  # We're done if the exponents are different.
+    # If called as a class method, initialize a new object.
 
-  $cmp = $MBI->_acmp($ex, $ey);
-  $cmp = -$cmp if $x->{sign} eq '-';            # 124 > 123, but -124 < -123
-  return $cmp if $cmp;
+    $self = $class -> bzero() unless $selfref;
 
-  # Compare the mantissas, but first normalize them by padding the shorter
-  # mantissa with zeros (shift left) until it has the same length as the longer
-  # mantissa.
+    if ($str =~ s/
+                     ^
 
-  my $mx = $x->{_m};
-  my $my = $y->{_m};
+                     # sign
+                     ( [+-]? )
 
-  if ($mxl > $myl) {
-      $my = $MBI->_lsft($MBI->_copy($my), $MBI->_new($mxl - $myl), 10);
-  } elsif ($mxl < $myl) {
-      $mx = $MBI->_lsft($MBI->_copy($mx), $MBI->_new($myl - $mxl), 10);
-  }
+                     # optional "bin marker"
+                     (?: 0? b )?
 
-  $cmp = $MBI->_acmp($mx, $my);
-  $cmp = -$cmp if $x->{sign} eq '-';            # 124 > 123, but -124 < -123
-  return $cmp;
+                     # significand using the binary digits 0 and 1
+                     (
+                         [01]+ (?: _ [01]+ )*
+                         (?:
+                             \.
+                             (?: [01]+ (?: _ [01]+ )* )?
+                         )?
+                     |
+                         \.
+                         [01]+ (?: _ [01]+ )*
+                     )
 
-  }
+                     # exponent (power of 2) using decimal digits
+                     (?:
+                         [Pp]
+                         ( [+-]? )
+                         ( \d+ (?: _ \d+ )* )
+                     )?
 
-sub bacmp 
-  {
-  # Compares 2 values, ignoring their signs. 
-  # Returns one of undef, <0, =0, >0. (suitable for sort)
-  
-  # set up parameters
-  my ($self,$x,$y) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
+                     $
+                 //x)
     {
-    ($self,$x,$y) = objectify(2,@_);
-    }
+        my $s_sign  = $1 || '+';
+        my $s_value = $2;
+        my $e_sign  = $3 || '+';
+        my $e_value = $4 || '0';
+        $s_value =~ tr/_//d;
+        $e_value =~ tr/_//d;
 
-  return $upgrade->bacmp($x,$y) if defined $upgrade &&
-    ((!$x->isa($self)) || (!$y->isa($self)));
+        # The significand must be multiplied by 2 raised to this exponent.
 
-  # handle +-inf and NaN's
-  if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/)
-    {
-    return undef if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
-    return 0 if ($x->is_inf() && $y->is_inf());
-    return 1 if ($x->is_inf() && !$y->is_inf());
-    return -1;
-    }
-
-  # shortcut 
-  my $xz = $x->is_zero();
-  my $yz = $y->is_zero();
-  return 0 if $xz && $yz;                              # 0 <=> 0
-  return -1 if $xz && !$yz;                            # 0 <=> +y
-  return 1 if $yz && !$xz;                             # +x <=> 0
-
-  # adjust so that exponents are equal
-  my $lxm = $MBI->_len($x->{_m});
-  my $lym = $MBI->_len($y->{_m});
-  my ($xes,$yes) = (1,1);
-  $xes = -1 if $x->{_es} ne '+';
-  $yes = -1 if $y->{_es} ne '+';
-  # the numify somewhat limits our length, but makes it much faster
-  my $lx = $lxm + $xes * $MBI->_num($x->{_e});
-  my $ly = $lym + $yes * $MBI->_num($y->{_e});
-  my $l = $lx - $ly;
-  return $l <=> 0 if $l != 0;
-  
-  # lengths (corrected by exponent) are equal
-  # so make mantissa equal-length by padding with zero (shift left)
-  my $diff = $lxm - $lym;
-  my $xm = $x->{_m};           # not yet copy it
-  my $ym = $y->{_m};
-  if ($diff > 0)
-    {
-    $ym = $MBI->_copy($y->{_m});
-    $ym = $MBI->_lsft($ym, $MBI->_new($diff), 10);
-    }
-  elsif ($diff < 0)
-    {
-    $xm = $MBI->_copy($x->{_m});
-    $xm = $MBI->_lsft($xm, $MBI->_new(-$diff), 10);
-    }
-  $MBI->_acmp($xm,$ym);
-  }
+        my $two_expon = $class -> new($e_value);
+        $two_expon -> bneg() if $e_sign eq '-';
 
-sub badd 
-  {
-  # add second arg (BFLOAT or string) to first (BFLOAT) (modifies first)
-  # return result as BFLOAT
+        # If there is a dot in the significand, remove it and adjust the
+        # exponent according to the number of digits in the fraction part of
+        # the significand.
 
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
-    }
-  return $x if $x->modify('badd');
+        my $idx = index($s_value, '.');
+        if ($idx >= 0) {
+            substr($s_value, $idx, 1) = '';
+            $two_expon -= $class -> new(CORE::length($s_value))
+                                 -> bsub($idx);
+        }
 
-  # inf and NaN handling
-  if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/))
-    {
-    # NaN first
-    return $x->bnan() if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
-    # inf handling
-    if (($x->{sign} =~ /^[+-]inf$/) && ($y->{sign} =~ /^[+-]inf$/))
-      {
-      # +inf++inf or -inf+-inf => same, rest is NaN
-      return $x if $x->{sign} eq $y->{sign};
-      return $x->bnan();
-      }
-    # +-inf + something => +inf; something +-inf => +-inf
-    $x->{sign} = $y->{sign}, return $x if $y->{sign} =~ /^[+-]inf$/;
-    return $x;
+        $self -> {sign} = $s_sign;
+        $self -> {_m}   = $MBI -> _from_bin('0b' . $s_value);
+
+        if ($two_expon > 0) {
+            my $factor = $class -> new("2") -> bpow($two_expon);
+            $self -> bmul($factor);
+        } elsif ($two_expon < 0) {
+            my $factor = $class -> new("0.5") -> bpow(-$two_expon);
+            $self -> bmul($factor);
+        }
+
+        return $self;
     }
 
-  return $upgrade->badd($x,$y,@r) if defined $upgrade &&
-   ((!$x->isa($self)) || (!$y->isa($self)));
+    return $self->bnan();
+}
 
-  $r[3] = $y;                                          # no push!
+sub bzero {
+    # create/assign '+0'
 
-  # speed: no add for 0+y or x+0
-  return $x->bround(@r) if $y->is_zero();              # x+0
-  if ($x->is_zero())                                   # 0+y
-    {
-    # make copy, clobbering up x (modify in place!)
-    $x->{_e} = $MBI->_copy($y->{_e});
-    $x->{_es} = $y->{_es};
-    $x->{_m} = $MBI->_copy($y->{_m});
-    $x->{sign} = $y->{sign} || $nan;
-    return $x->round(@r);
+    if (@_ == 0) {
+        #Carp::carp("Using bone() as a function is deprecated;",
+        #           " use bone() as a method instead");
+        unshift @_, __PACKAGE__;
     }
-  # take lower of the two e's and adapt m1 to it to match m2
-  my $e = $y->{_e};
-  $e = $MBI->_zero() if !defined $e;           # if no BFLOAT?
-  $e = $MBI->_copy($e);                                # make copy (didn't do it yet)
 
-  my $es;
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
 
-  ($e,$es) = _e_sub($e, $x->{_e}, $y->{_es} || '+', $x->{_es});
+    $self->import() if $IMPORT == 0;            # make require work
+    return if $self->modify('bzero');
 
-  my $add = $MBI->_copy($y->{_m});
+    $self = bless {}, $class unless $selfref;
 
-  if ($es eq '-')                              # < 0
-    {
-    $MBI->_lsft( $x->{_m}, $e, 10);
-    ($x->{_e},$x->{_es}) = _e_add($x->{_e}, $e, $x->{_es}, $es);
-    }
-  elsif (!$MBI->_is_zero($e))                  # > 0
-    {
-    $MBI->_lsft($add, $e, 10);
-    }
-  # else: both e are the same, so just leave them
+    $self -> {sign} = '+';
+    $self -> {_m}   = $MBI -> _zero();
+    $self -> {_es}  = '+';
+    $self -> {_e}   = $MBI -> _zero();
 
-  if ($x->{sign} eq $y->{sign})
-    {
-    # add
-    $x->{_m} = $MBI->_add($x->{_m}, $add);
+    if (@_ > 0) {
+        if (@_ > 3) {
+            # call like: $x->bzero($a, $p, $r, $y);
+            ($self, $self->{_a}, $self->{_p}) = $self->_find_round_parameters(@_);
+        } else {
+            # call like: $x->bzero($a, $p, $r);
+            $self->{_a} = $_[0]
+              if !defined $self->{_a} || (defined $_[0] && $_[0] > $self->{_a});
+            $self->{_p} = $_[1]
+              if !defined $self->{_p} || (defined $_[1] && $_[1] > $self->{_p});
+        }
     }
-  else
-    {
-    ($x->{_m}, $x->{sign}) = 
-     _e_add($x->{_m}, $add, $x->{sign}, $y->{sign});
+
+    return $self;
+}
+
+sub bone {
+    # Create or assign '+1' (or -1 if given sign '-').
+
+    if (@_ == 0 || (defined($_[0]) && ($_[0] eq '+' || $_[0] eq '-'))) {
+        #Carp::carp("Using bone() as a function is deprecated;",
+        #           " use bone() as a method instead");
+        unshift @_, __PACKAGE__;
     }
 
-  # delete trailing zeros, then round
-  $x->bnorm()->round(@r);
-  }
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
 
-# sub bsub is inherited from Math::BigInt!
+    $self->import() if $IMPORT == 0;            # make require work
+    return if $self->modify('bone');
 
-sub binc
-  {
-  # increment arg by one
-  my ($self,$x,@r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
+    my $sign = shift;
+    $sign = defined $sign && $sign =~ /^\s*-/ ? "-" : "+";
 
-  return $x if $x->modify('binc');
+    $self = bless {}, $class unless $selfref;
 
-  if ($x->{_es} eq '-')
-    {
-    return $x->badd($self->bone(),@r); #  digits after dot
-    }
+    $self -> {sign} = $sign;
+    $self -> {_m}   = $MBI -> _one();
+    $self -> {_es}  = '+';
+    $self -> {_e}   = $MBI -> _zero();
 
-  if (!$MBI->_is_zero($x->{_e}))               # _e == 0 for NaN, inf, -inf
-    {
-    # 1e2 => 100, so after the shift below _m has a '0' as last digit
-    $x->{_m} = $MBI->_lsft($x->{_m}, $x->{_e},10);     # 1e2 => 100
-    $x->{_e} = $MBI->_zero();                          # normalize
-    $x->{_es} = '+';
-    # we know that the last digit of $x will be '1' or '9', depending on the
-    # sign
-    }
-  # now $x->{_e} == 0
-  if ($x->{sign} eq '+')
-    {
-    $MBI->_inc($x->{_m});
-    return $x->bnorm()->bround(@r);
-    }
-  elsif ($x->{sign} eq '-')
-    {
-    $MBI->_dec($x->{_m});
-    $x->{sign} = '+' if $MBI->_is_zero($x->{_m}); # -1 +1 => -0 => +0
-    return $x->bnorm()->bround(@r);
+    if (@_ > 0) {
+        if (@_ > 3) {
+            # call like: $x->bone($sign, $a, $p, $r, $y, ...);
+            ($self, $self->{_a}, $self->{_p}) = $self->_find_round_parameters(@_);
+        } else {
+            # call like: $x->bone($sign, $a, $p, $r);
+            $self->{_a} = $_[0]
+              if ((!defined $self->{_a}) || (defined $_[0] && $_[0] > $self->{_a}));
+            $self->{_p} = $_[1]
+              if ((!defined $self->{_p}) || (defined $_[1] && $_[1] > $self->{_p}));
+        }
     }
-  # inf, nan handling etc
-  $x->badd($self->bone(),@r);                  # badd() does round 
-  }
 
-sub bdec
-  {
-  # decrement arg by one
-  my ($self,$x,@r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
+    return $self;
+}
 
-  return $x if $x->modify('bdec');
+sub binf {
+    # create/assign a '+inf' or '-inf'
 
-  if ($x->{_es} eq '-')
+    if (@_ == 0 || (defined($_[0]) && !ref($_[0]) &&
+                    $_[0] =~ /^\s*[+-](inf(inity)?)?\s*$/))
     {
-    return $x->badd($self->bone('-'),@r);      #  digits after dot
+        #Carp::carp("Using binf() as a function is deprecated;",
+        #           " use binf() as a method instead");
+        unshift @_, __PACKAGE__;
     }
 
-  if (!$MBI->_is_zero($x->{_e}))
-    {
-    $x->{_m} = $MBI->_lsft($x->{_m}, $x->{_e},10);     # 1e2 => 100
-    $x->{_e} = $MBI->_zero();                          # normalize
-    $x->{_es} = '+';
-    }
-  # now $x->{_e} == 0
-  my $zero = $x->is_zero();
-  # <= 0
-  if (($x->{sign} eq '-') || $zero)
-    {
-    $MBI->_inc($x->{_m});
-    $x->{sign} = '-' if $zero;                         # 0 => 1 => -1
-    $x->{sign} = '+' if $MBI->_is_zero($x->{_m});      # -1 +1 => -0 => +0
-    return $x->bnorm()->round(@r);
-    }
-  # > 0
-  elsif ($x->{sign} eq '+')
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
     {
-    $MBI->_dec($x->{_m});
-    return $x->bnorm()->round(@r);
+        no strict 'refs';
+        if (${"${class}::_trap_inf"}) {
+            Carp::croak("Tried to create +-inf in $class->binf()");
+        }
     }
-  # inf, nan handling etc
-  $x->badd($self->bone('-'),@r);               # does round
-  } 
 
-sub DEBUG () { 0; }
+    $self->import() if $IMPORT == 0;            # make require work
+    return if $self->modify('binf');
 
-sub blog
-  {
-  my ($self,$x,$base,$a,$p,$r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
+    my $sign = shift;
+    $sign = defined $sign && $sign =~ /^\s*-/ ? "-" : "+";
 
-  # If called as $x -> blog() or $x -> blog(undef), don't objectify the
-  # undefined base, since undef signals that the base is Euler's number.
-  #unless (ref($x) && !defined($base)) {
-  #    # objectify is costly, so avoid it
-  #    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
-  #        ($self,$x,$base,$a,$p,$r) = objectify(2,@_);
-  #    }
-  #}
+    $self = bless {}, $class unless $selfref;
 
-  return $x if $x->modify('blog');
+    $self -> {sign} = $sign . 'inf';
+    $self -> {_m}   = $MBI -> _zero();
+    $self -> {_es}  = '+';
+    $self -> {_e}   = $MBI -> _zero();
 
-  return $x -> bnan() if $x -> is_nan();
+    return $self;
+}
 
-  # we need to limit the accuracy to protect against overflow
-  my $fallback = 0;
-  my ($scale,@params);
-  ($x,@params) = $x->_find_round_parameters($a,$p,$r);
+sub bnan {
+    # create/assign a 'NaN'
 
-  # no rounding at all, so must use fallback
-  if (scalar @params == 0)
-    {
-    # simulate old behaviour
-    $params[0] = $self->div_scale();   # and round to it as accuracy
-    $params[1] = undef;                        # P = undef
-    $scale = $params[0]+4;             # at least four more for proper round
-    $params[2] = $r;                   # round mode by caller or undef
-    $fallback = 1;                     # to clear a/p afterwards
-    }
-  else
-    {
-    # the 4 below is empirical, and there might be cases where it is not
-    # enough...
-    $scale = abs($params[0] || $params[1]) + 4;        # take whatever is defined
-    }
-
-  my $done = 0;
-  if (defined $base) {
-      $base = $self -> new($base) unless ref $base;
-      if ($base -> is_nan() || $base -> is_one()) {
-          $x -> bnan();
-          $done = 1;
-      } elsif ($base -> is_inf() || $base -> is_zero()) {
-          if ($x -> is_inf() || $x -> is_zero()) {
-              $x -> bnan();
-          } else {
-              $x -> bzero(@params);
-          }
-          $done = 1;
-      } elsif ($base -> is_negative()) {        # -inf < base < 0
-          if ($x -> is_one()) {                 #     x = 1
-              $x -> bzero(@params);
-          } elsif ($x == $base) {
-              $x -> bone('+', @params);         #     x = base
-          } else {
-              $x -> bnan();                     #     otherwise
-          }
-          $done = 1;
-      } elsif ($x == $base) {
-          $x -> bone('+', @params);             # 0 < base && 0 < x < inf
-          $done = 1;
-      }
-  }
-
-  # We now know that the base is either undefined or positive and finite.
-
-  unless ($done) {
-      if ($x -> is_inf()) {             #   x = +/-inf
-          my $sign = defined $base && $base < 1 ? '-' : '+';
-          $x -> binf($sign);
-          $done = 1;
-      } elsif ($x -> is_neg()) {        #   -inf < x < 0
-          $x -> bnan();
-          $done = 1;
-      } elsif ($x -> is_one()) {        #   x = 1
-          $x -> bzero(@params);
-          $done = 1;
-      } elsif ($x -> is_zero()) {       #   x = 0
-          my $sign = defined $base && $base < 1 ? '+' : '-';
-          $x -> binf($sign);
-          $done = 1;
-      }
-  }
-
-  if ($done) {
-      if ($fallback) {
-        # clear a/p after round, since user did not request it
-          delete $x->{_a};
-          delete $x->{_p};
-        }
-      return $x;
-      }
-
-  # when user set globals, they would interfere with our calculation, so
-  # disable them and later re-enable them
-  no strict 'refs';
-  my $abr = "$self\::accuracy"; my $ab = $$abr; $$abr = undef;
-  my $pbr = "$self\::precision"; my $pb = $$pbr; $$pbr = undef;
-  # we also need to disable any set A or P on $x (_find_round_parameters took
-  # them already into account), since these would interfere, too
-  delete $x->{_a}; delete $x->{_p};
-  # need to disable $upgrade in BigInt, to avoid deep recursion
-  local $Math::BigInt::upgrade = undef;
-  local $Math::BigFloat::downgrade = undef;
-
-  # upgrade $x if $x is not a BigFloat (handle BigInt input)
-  # XXX TODO: rebless!
-  if (!$x->isa('Math::BigFloat'))
-    {
-    $x = Math::BigFloat->new($x);
-    $self = ref($x);
+    if (@_ == 0) {
+        #Carp::carp("Using bnan() as a function is deprecated;",
+        #           " use bnan() as a method instead");
+        unshift @_, __PACKAGE__;
     }
-  
-  $done = 0;
 
-  # If the base is defined and an integer, try to calculate integer result
-  # first. This is very fast, and in case the real result was found, we can
-  # stop right here.
-  if (defined $base && $base->is_int() && $x->is_int())
-    {
-    my $i = $MBI->_copy( $x->{_m} );
-    $MBI->_lsft( $i, $x->{_e}, 10 ) unless $MBI->_is_zero($x->{_e});
-    my $int = Math::BigInt->bzero();
-    $int->{value} = $i;
-    $int->blog($base->as_number());
-    # if ($exact)
-    if ($base->as_number()->bpow($int) == $x)
-      {
-      # found result, return it
-      $x->{_m} = $int->{value};
-      $x->{_e} = $MBI->_zero();
-      $x->{_es} = '+';
-      $x->bnorm();
-      $done = 1;
-      }
-    }
-
-  if ($done == 0)
-    {
-    # base is undef, so base should be e (Euler's number), so first calculate the
-    # log to base e (using reduction by 10 (and probably 2)):
-    $self->_log_10($x,$scale);
-
-    # and if a different base was requested, convert it
-    if (defined $base)
-      {
-      $base = Math::BigFloat->new($base) unless $base->isa('Math::BigFloat');
-      # not ln, but some other base (don't modify $base)
-      $x->bdiv( $base->copy()->blog(undef,$scale), $scale );
-      }
-    }
-  # shortcut to not run through _find_round_parameters again
-  if (defined $params[0])
-    {
-    $x->bround($params[0],$params[2]);         # then round accordingly
-    }
-  else
-    {
-    $x->bfround($params[1],$params[2]);                # then round accordingly
-    }
-  if ($fallback)
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
     {
-    # clear a/p after round, since user did not request it
-    delete $x->{_a}; delete $x->{_p};
+        no strict 'refs';
+        if (${"${class}::_trap_nan"}) {
+            Carp::croak("Tried to create NaN in $class->bnan()");
+        }
     }
-  # restore globals
-  $$abr = $ab; $$pbr = $pb;
 
-  $x;
-  }
+    $self->import() if $IMPORT == 0;            # make require work
+    return if $self->modify('bnan');
 
-sub _len_to_steps
-  {
-  # Given D (digits in decimal), compute N so that N! (N factorial) is
-  # at least D digits long. D should be at least 50.
-  my $d = shift;
+    $self = bless {}, $class unless $selfref;
 
-  # two constants for the Ramanujan estimate of ln(N!)
-  my $lg2 = log(2 * 3.14159265) / 2;
-  my $lg10 = log(10);
+    $self -> {sign} = $nan;
+    $self -> {_m}   = $MBI -> _zero();
+    $self -> {_es}  = '+';
+    $self -> {_e}   = $MBI -> _zero();
 
-  # D = 50 => N => 42, so L = 40 and R = 50
-  my $l = 40; my $r = $d;
+    return $self;
+}
 
-  # Otherwise this does not work under -Mbignum and we do not yet have "no bignum;" :(
-  $l = $l->numify if ref($l);
-  $r = $r->numify if ref($r);
-  $lg2 = $lg2->numify if ref($lg2);
-  $lg10 = $lg10->numify if ref($lg10);
+sub bpi {
 
-  # binary search for the right value (could this be written as the reverse of lg(n!)?)
-  while ($r - $l > 1)
-    {
-    my $n = int(($r - $l) / 2) + $l;
-    my $ramanujan = 
-      int(($n * log($n) - $n + log( $n * (1 + 4*$n*(1+2*$n)) ) / 6 + $lg2) / $lg10);
-    $ramanujan > $d ? $r = $n : $l = $n;
-    }
-  $l;
-  }
-
-sub bnok
-  {
-  # Calculate n over k (binomial coefficient or "choose" function) as integer.
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
+    # Called as                 Argument list
+    # ---------                 -------------
+    # Math::BigFloat->bpi()     ("Math::BigFloat")
+    # Math::BigFloat->bpi(10)   ("Math::BigFloat", 10)
+    # $x->bpi()                 ($x)
+    # $x->bpi(10)               ($x, 10)
+    # Math::BigFloat::bpi()     ()
+    # Math::BigFloat::bpi(10)   (10)
+    #
+    # In ambiguous cases, we favour the OO-style, so the following case
+    #
+    #   $n = Math::BigFloat->new("10");
+    #   $x = Math::BigFloat->bpi($n);
+    #
+    # which gives an argument list with the single element $n, is resolved as
+    #
+    #   $n->bpi();
+
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    my @r;                      # rounding paramters
+
+    # If bpi() is called as a function ...
+    #
+    # This cludge is necessary because we still support bpi() as a function. If
+    # bpi() is called with either no argument or one argument, and that one
+    # argument is either undefined or a scalar that looks like a number, then
+    # we assume bpi() is called as a function.
+
+    if (@_ == 0 &&
+        (defined($self) && !ref($self) && $self =~ /^\s*[+-]?\d/i)
+          ||
+        !defined($self))
     {
-    ($self,$x,$y,@r) = objectify(2,@_);
+        $r[0]  = $self;
+        $class = __PACKAGE__;
+        $self  = $class -> bzero(@r);       # initialize
     }
 
-  return $x if $x->modify('bnok');
+    # ... or if bpi() is called as a method ...
 
-  return $x->bnan() if $x->is_nan() || $y->is_nan();
-  return $x->binf() if $x->is_inf();
+    else {
+        @r = @_;
+        if ($selfref) {                     # bpi() called as instance method
+            return $self if $self -> modify('bpi');
+        } else {                            # bpi() called as class method
+            $self = $class -> bzero(@r);    # initialize
+        }
+    }
 
-  my $u = $x->as_int();
-  $u->bnok($y->as_int());
+    ($self, @r) = $self -> _find_round_parameters(@r);
 
-  $x->{_m} = $u->{value};
-  $x->{_e} = $MBI->_zero();
-  $x->{_es} = '+';
-  $x->{sign} = '+';
-  $x->bnorm(@r);
-  }
+    # The accuracy, i.e., the number of digits. Pi has one digit before the
+    # dot, so a precision of 4 digits is equivalent to an accuracy of 5 digits.
 
-sub bexp
-  {
-  # Calculate e ** X (Euler's number to the power of X)
-  my ($self,$x,$a,$p,$r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
+    my $n = defined $r[0] ? $r[0]
+          : defined $r[1] ? 1 - $r[1]
+          : $self -> div_scale();
 
-  return $x if $x->modify('bexp');
+    my $rmode = defined $r[2] ? $r[2] : $self -> round_mode();
 
-  return $x->binf() if $x->{sign} eq '+inf';
-  return $x->bzero() if $x->{sign} eq '-inf';
+    my $pi;
 
-  # we need to limit the accuracy to protect against overflow
-  my $fallback = 0;
-  my ($scale,@params);
-  ($x,@params) = $x->_find_round_parameters($a,$p,$r);
+    if ($n <= 1000) {
 
-  # also takes care of the "error in _find_round_parameters?" case
-  return $x if $x->{sign} eq 'NaN';
+        # 75 x 14 = 1050 digits
 
-  # no rounding at all, so must use fallback
-  if (scalar @params == 0)
-    {
-    # simulate old behaviour
-    $params[0] = $self->div_scale();   # and round to it as accuracy
-    $params[1] = undef;                        # P = undef
-    $scale = $params[0]+4;             # at least four more for proper round
-    $params[2] = $r;                   # round mode by caller or undef
-    $fallback = 1;                     # to clear a/p afterwards
-    }
-  else
-    {
-    # the 4 below is empirical, and there might be cases where it's not enough...
-    $scale = abs($params[0] || $params[1]) + 4;        # take whatever is defined
-    }
+        my $all_digits = <<EOF;
+314159265358979323846264338327950288419716939937510582097494459230781640628
+620899862803482534211706798214808651328230664709384460955058223172535940812
+848111745028410270193852110555964462294895493038196442881097566593344612847
+564823378678316527120190914564856692346034861045432664821339360726024914127
+372458700660631558817488152092096282925409171536436789259036001133053054882
+046652138414695194151160943305727036575959195309218611738193261179310511854
+807446237996274956735188575272489122793818301194912983367336244065664308602
+139494639522473719070217986094370277053921717629317675238467481846766940513
+200056812714526356082778577134275778960917363717872146844090122495343014654
+958537105079227968925892354201995611212902196086403441815981362977477130996
+051870721134999999837297804995105973173281609631859502445945534690830264252
+230825334468503526193118817101000313783875288658753320838142061717766914730
+359825349042875546873115956286388235378759375195778185778053217122680661300
+192787661119590921642019893809525720106548586327886593615338182796823030195
+EOF
 
-  return $x->bone(@params) if $x->is_zero();
+        # Should we round up?
 
-  if (!$x->isa('Math::BigFloat'))
-    {
-    $x = Math::BigFloat->new($x);
-    $self = ref($x);
-    }
-  
-  # when user set globals, they would interfere with our calculation, so
-  # disable them and later re-enable them
-  no strict 'refs';
-  my $abr = "$self\::accuracy"; my $ab = $$abr; $$abr = undef;
-  my $pbr = "$self\::precision"; my $pb = $$pbr; $$pbr = undef;
-  # we also need to disable any set A or P on $x (_find_round_parameters took
-  # them already into account), since these would interfere, too
-  delete $x->{_a}; delete $x->{_p};
-  # need to disable $upgrade in BigInt, to avoid deep recursion
-  local $Math::BigInt::upgrade = undef;
-  local $Math::BigFloat::downgrade = undef;
-
-  my $x_org = $x->copy();
-
-  # We use the following Taylor series:
-
-  #           x    x^2   x^3   x^4
-  #  e = 1 + --- + --- + --- + --- ...
-  #           1!    2!    3!    4!
-
-  # The difference for each term is X and N, which would result in:
-  # 2 copy, 2 mul, 2 add, 1 inc, 1 div operations per term
-
-  # But it is faster to compute exp(1) and then raising it to the
-  # given power, esp. if $x is really big and an integer because:
-
-  #  * The numerator is always 1, making the computation faster
-  #  * the series converges faster in the case of x == 1
-  #  * We can also easily check when we have reached our limit: when the
-  #    term to be added is smaller than "1E$scale", we can stop - f.i.
-  #    scale == 5, and we have 1/40320, then we stop since 1/40320 < 1E-5.
-  #  * we can compute the *exact* result by simulating bigrat math:
-
-  #  1   1    gcd(3,4) = 1    1*24 + 1*6    5
-  #  - + -                  = ---------- =  --                 
-  #  6   24                      6*24       24
-
-  # We do not compute the gcd() here, but simple do:
-  #  1   1    1*24 + 1*6   30
-  #  - + -  = --------- =  --                 
-  #  6   24       6*24     144
-
-  # In general:
-  #  a   c    a*d + c*b        and note that c is always 1 and d = (b*f)
-  #  - + -  = ---------
-  #  b   d       b*d
-
-  # This leads to:         which can be reduced by b to:
-  #  a   1     a*b*f + b    a*f + 1
-  #  - + -   = --------- =  -------
-  #  b   b*f     b*b*f        b*f
-
-  # The first terms in the series are:
-
-  # 1     1    1    1    1    1     1     1     13700
-  # -- + -- + -- + -- + -- + --- + --- + ---- = -----
-  # 1     1    2    6   24   120   720   5040   5040
-
-  # Note that we cannot simple reduce 13700/5040 to 685/252, but must keep A and B!
-
-  if ($scale <= 75)
-    {
-    # set $x directly from a cached string form
-    $x->{_m} = $MBI->_new(
-    "27182818284590452353602874713526624977572470936999595749669676277240766303535476");
-    $x->{sign} = '+';
-    $x->{_es} = '-';
-    $x->{_e} = $MBI->_new(79);
-    }
-  else
-    {
-    # compute A and B so that e = A / B.
-    # After some terms we end up with this, so we use it as a starting point:
-    my $A = $MBI->_new("90933395208605785401971970164779391644753259799242");
-    my $F = $MBI->_new(42); my $step = 42;
-
-    # Compute how many steps we need to take to get $A and $B sufficiently big
-    my $steps = _len_to_steps($scale - 4);
-#    print STDERR "# Doing $steps steps for ", $scale-4, " digits\n";
-    while ($step++ <= $steps)
-      {
-      # calculate $a * $f + 1
-      $A = $MBI->_mul($A, $F);
-      $A = $MBI->_inc($A);
-      # increment f
-      $F = $MBI->_inc($F);
-      }
-    # compute $B as factorial of $steps (this is faster than doing it manually)
-    my $B = $MBI->_fac($MBI->_new($steps));
-    
-#  print "A ", $MBI->_str($A), "\nB ", $MBI->_str($B), "\n";
-
-    # compute A/B with $scale digits in the result (truncate, not round)
-    $A = $MBI->_lsft( $A, $MBI->_new($scale), 10);
-    $A = $MBI->_div( $A, $B );
-
-    $x->{_m} = $A;
-    $x->{sign} = '+';
-    $x->{_es} = '-';
-    $x->{_e} = $MBI->_new($scale);
-    }
+        my $round_up;
 
-  # $x contains now an estimate of e, with some surplus digits, so we can round
-  if (!$x_org->is_one())
-    {
-    # Reduce size of fractional part, followup with integer power of two.
-    my $lshift = 0;
-    while ($lshift < 30 && $x_org->bacmp(2 << $lshift) > 0)
-      {
-        $lshift++;
-      }
-    # Raise $x to the wanted power and round it.
-    if ($lshift == 0)
-      {
-        $x->bpow($x_org, @params);
-      }
-    else
-      {
-        my($mul, $rescale) = (1 << $lshift, $scale+1+$lshift);
-        $x->bpow(scalar $x_org->bdiv($mul,$rescale),$rescale)->bpow($mul, @params);
-      }
-    }
-  else
-    {
-    # else just round the already computed result
-    delete $x->{_a}; delete $x->{_p};
-    # shortcut to not run through _find_round_parameters again
-    if (defined $params[0])
-      {
-      $x->bround($params[0],$params[2]);               # then round accordingly
-      }
-    else
-      {
-      $x->bfround($params[1],$params[2]);              # then round accordingly
-      }
-    }
-  if ($fallback)
-    {
-    # clear a/p after round, since user did not request it
-    delete $x->{_a}; delete $x->{_p};
-    }
-  # restore globals
-  $$abr = $ab; $$pbr = $pb;
-
-  $x;                                          # return modified $x
-  }
-
-sub _log
-  {
-  # internal log function to calculate ln() based on Taylor series.
-  # Modifies $x in place.
-  my ($self,$x,$scale) = @_;
-
-  # in case of $x == 1, result is 0
-  return $x->bzero() if $x->is_one();
-
-  # XXX TODO: rewrite this in a similar manner to bexp()
-
-  # http://www.efunda.com/math/taylor_series/logarithmic.cfm?search_string=log
-
-  # u = x-1, v = x+1
-  #              _                               _
-  # Taylor:     |    u    1   u^3   1   u^5       |
-  # ln (x)  = 2 |   --- + - * --- + - * --- + ... |  x > 0
-  #             |_   v    3   v^3   5   v^5      _|
-
-  # This takes much more steps to calculate the result and is thus not used
-  # u = x-1
-  #              _                               _
-  # Taylor:     |    u    1   u^2   1   u^3       |
-  # ln (x)  = 2 |   --- + - * --- + - * --- + ... |  x > 1/2
-  #             |_   x    2   x^2   3   x^3      _|
-
-  my ($limit,$v,$u,$below,$factor,$two,$next,$over,$f);
-
-  $v = $x->copy(); $v->binc();         # v = x+1
-  $x->bdec(); $u = $x->copy();         # u = x-1; x = x-1
-  $x->bdiv($v,$scale);                 # first term: u/v
-  $below = $v->copy();
-  $over = $u->copy();
-  $u *= $u; $v *= $v;                          # u^2, v^2
-  $below->bmul($v);                            # u^3, v^3
-  $over->bmul($u);
-  $factor = $self->new(3); $f = $self->new(2);
-
-  my $steps = 0;
-  $limit = $self->new("1E-". ($scale-1));
-  while (3 < 5)
-    {
-    # we calculate the next term, and add it to the last
-    # when the next term is below our limit, it won't affect the outcome
-    # anymore, so we stop
-
-    # calculating the next term simple from over/below will result in quite
-    # a time hog if the input has many digits, since over and below will
-    # accumulate more and more digits, and the result will also have many
-    # digits, but in the end it is rounded to $scale digits anyway. So if we
-    # round $over and $below first, we save a lot of time for the division
-    # (not with log(1.2345), but try log (123**123) to see what I mean. This
-    # can introduce a rounding error if the division result would be f.i.
-    # 0.1234500000001 and we round it to 5 digits it would become 0.12346, but
-    # if we truncated $over and $below we might get 0.12345. Does this matter
-    # for the end result? So we give $over and $below 4 more digits to be
-    # on the safe side (unscientific error handling as usual... :+D
-
-    $next = $over->copy->bround($scale+4)->bdiv(
-      $below->copy->bmul($factor)->bround($scale+4), 
-      $scale);
-
-## old version:    
-##    $next = $over->copy()->bdiv($below->copy()->bmul($factor),$scale);
-
-    last if $next->bacmp($limit) <= 0;
-
-    delete $next->{_a}; delete $next->{_p};
-    $x->badd($next);
-    # calculate things for the next term
-    $over *= $u; $below *= $v; $factor->badd($f);
-    if (DEBUG)
-      {
-      $steps++; print "step $steps = $x\n" if $steps % 10 == 0;
-      }
-    }
-  print "took $steps steps\n" if DEBUG;
-  $x->bmul($f);                                        # $x *= 2
-  }
-
-sub _log_10
-  {
-  # Internal log function based on reducing input to the range of 0.1 .. 9.99
-  # and then "correcting" the result to the proper one. Modifies $x in place.
-  my ($self,$x,$scale) = @_;
-
-  # Taking blog() from numbers greater than 10 takes a *very long* time, so we
-  # break the computation down into parts based on the observation that:
-  #  blog(X*Y) = blog(X) + blog(Y)
-  # We set Y here to multiples of 10 so that $x becomes below 1 - the smaller
-  # $x is the faster it gets. Since 2*$x takes about 10 times as
-  # long, we make it faster by about a factor of 100 by dividing $x by 10.
-
-  # The same observation is valid for numbers smaller than 0.1, e.g. computing
-  # log(1) is fastest, and the further away we get from 1, the longer it takes.
-  # So we also 'break' this down by multiplying $x with 10 and subtract the
-  # log(10) afterwards to get the correct result.
-
-  # To get $x even closer to 1, we also divide by 2 and then use log(2) to
-  # correct for this. For instance if $x is 2.4, we use the formula:
-  #  blog(2.4 * 2) == blog (1.2) + blog(2)
-  # and thus calculate only blog(1.2) and blog(2), which is faster in total
-  # than calculating blog(2.4).
-
-  # In addition, the values for blog(2) and blog(10) are cached.
-
-  # Calculate nr of digits before dot:
-  my $dbd = $MBI->_num($x->{_e});
-  $dbd = -$dbd if $x->{_es} eq '-';
-  $dbd += $MBI->_len($x->{_m});
-
-  # more than one digit (e.g. at least 10), but *not* exactly 10 to avoid
-  # infinite recursion
-
-  my $calc = 1;                                        # do some calculation?
-
-  # disable the shortcut for 10, since we need log(10) and this would recurse
-  # infinitely deep
-  if ($x->{_es} eq '+' && $MBI->_is_one($x->{_e}) && $MBI->_is_one($x->{_m}))
-    {
-    $dbd = 0;                                  # disable shortcut
-    # we can use the cached value in these cases
-    if ($scale <= $LOG_10_A)
-      {
-      $x->bzero(); $x->badd($LOG_10);          # modify $x in place
-      $calc = 0;                               # no need to calc, but round
-      }
-    # if we can't use the shortcut, we continue normally
-    }
-  else
-    {
-    # disable the shortcut for 2, since we maybe have it cached
-    if (($MBI->_is_zero($x->{_e}) && $MBI->_is_two($x->{_m})))
-      {
-      $dbd = 0;                                        # disable shortcut
-      # we can use the cached value in these cases
-      if ($scale <= $LOG_2_A)
-        {
-        $x->bzero(); $x->badd($LOG_2);         # modify $x in place
-        $calc = 0;                             # no need to calc, but round
-        }
-      # if we can't use the shortcut, we continue normally
-      }
-    }
+        # From the string above, we need to extract the number of digits we
+        # want plus extra characters for the newlines.
 
-  # if $x = 0.1, we know the result must be 0-log(10)
-  if ($calc != 0 && $x->{_es} eq '-' && $MBI->_is_one($x->{_e}) &&
-      $MBI->_is_one($x->{_m}))
-    {
-    $dbd = 0;                                  # disable shortcut
-    # we can use the cached value in these cases
-    if ($scale <= $LOG_10_A)
-      {
-      $x->bzero(); $x->bsub($LOG_10);
-      $calc = 0;                               # no need to calc, but round
-      }
-    }
+        my $nchrs = $n + int($n / 75);
 
-  return if $calc == 0;                                # already have the result
+        # Extract the digits we want.
 
-  # default: these correction factors are undef and thus not used
-  my $l_10;                            # value of ln(10) to A of $scale
-  my $l_2;                             # value of ln(2) to A of $scale
+        my $digits = substr($all_digits, 0, $nchrs);
 
-  my $two = $self->new(2);
+        # Find out whether we should round up or down. Since pi is a
+        # transcendental number, we only have to look at one digit after the
+        # last digit we want.
 
-  # $x == 2 => 1, $x == 13 => 2, $x == 0.1 => 0, $x == 0.01 => -1
-  # so don't do this shortcut for 1 or 0
-  if (($dbd > 1) || ($dbd < 0))
-    {
-    # convert our cached value to an object if not already (avoid doing this
-    # at import() time, since not everybody needs this)
-    $LOG_10 = $self->new($LOG_10,undef,undef) unless ref $LOG_10;
-
-    #print "x = $x, dbd = $dbd, calc = $calc\n";
-    # got more than one digit before the dot, or more than one zero after the
-    # dot, so do:
-    #  log(123)    == log(1.23) + log(10) * 2
-    #  log(0.0123) == log(1.23) - log(10) * 2
-  
-    if ($scale <= $LOG_10_A)
-      {
-      # use cached value
-      $l_10 = $LOG_10->copy();         # copy for mul
-      }
-    else
-      {
-      # else: slower, compute and cache result
-      # also disable downgrade for this code path
-      local $Math::BigFloat::downgrade = undef;
-
-      # shorten the time to calculate log(10) based on the following:
-      # log(1.25 * 8) = log(1.25) + log(8)
-      #               = log(1.25) + log(2) + log(2) + log(2)
-
-      # first get $l_2 (and possible compute and cache log(2))
-      $LOG_2 = $self->new($LOG_2,undef,undef) unless ref $LOG_2;
-      if ($scale <= $LOG_2_A)
-        {
-        # use cached value
-        $l_2 = $LOG_2->copy();                 # copy() for the mul below
-        }
-      else
-        {
-        # else: slower, compute and cache result
-        $l_2 = $two->copy(); $self->_log($l_2, $scale); # scale+4, actually
-        $LOG_2 = $l_2->copy();                 # cache the result for later
-                                               # the copy() is for mul below
-        $LOG_2_A = $scale;
+        if ($rmode eq '+inf') {
+            $round_up = 1;
+        } elsif ($rmode eq 'trunc' || $rmode eq 'zero' || $rmode eq '-inf') {
+            $round_up = 0;
+        } else {
+            my $next_digit = substr($all_digits, $nchrs, 1);
+            $round_up = $next_digit lt '5' ? 0 : 1;
         }
 
-      # now calculate log(1.25):
-      $l_10 = $self->new('1.25'); $self->_log($l_10, $scale); # scale+4, actually
-
-      # log(1.25) + log(2) + log(2) + log(2):
-      $l_10->badd($l_2);
-      $l_10->badd($l_2);
-      $l_10->badd($l_2);
-      $LOG_10 = $l_10->copy();         # cache the result for later
-                                       # the copy() is for mul below
-      $LOG_10_A = $scale;
-      }
-    $dbd-- if ($dbd > 1);              # 20 => dbd=2, so make it dbd=1 
-    $l_10->bmul( $self->new($dbd));    # log(10) * (digits_before_dot-1)
-    my $dbd_sign = '+';
-    if ($dbd < 0)
-      {
-      $dbd = -$dbd;
-      $dbd_sign = '-';
-      }
-    ($x->{_e}, $x->{_es}) = 
-       _e_sub( $x->{_e}, $MBI->_new($dbd), $x->{_es}, $dbd_sign); # 123 => 1.23
-    }
-
-  # Now: 0.1 <= $x < 10 (and possible correction in l_10)
-
-  ### Since $x in the range 0.5 .. 1.5 is MUCH faster, we do a repeated div
-  ### or mul by 2 (maximum times 3, since x < 10 and x > 0.1)
-
-  $HALF = $self->new($HALF) unless ref($HALF);
-
-  my $twos = 0;                                # default: none (0 times)       
-  while ($x->bacmp($HALF) <= 0)                # X <= 0.5
-    {
-    $twos--; $x->bmul($two);
-    }
-  while ($x->bacmp($two) >= 0)         # X >= 2
-    {
-    $twos++; $x->bdiv($two,$scale+4);          # keep all digits
-    }
-  $x->bround($scale+4);
-  # $twos > 0 => did mul 2, < 0 => did div 2 (but we never did both)
-  # So calculate correction factor based on ln(2):
-  if ($twos != 0)
-    {
-    $LOG_2 = $self->new($LOG_2,undef,undef) unless ref $LOG_2;
-    if ($scale <= $LOG_2_A)
-      {
-      # use cached value
-      $l_2 = $LOG_2->copy();                   # copy() for the mul below
-      }
-    else
-      {
-      # else: slower, compute and cache result
-      # also disable downgrade for this code path
-      local $Math::BigFloat::downgrade = undef;
-      $l_2 = $two->copy(); $self->_log($l_2, $scale); # scale+4, actually
-      $LOG_2 = $l_2->copy();                   # cache the result for later
-                                               # the copy() is for mul below
-      $LOG_2_A = $scale;
-      }
-    $l_2->bmul($twos);         # * -2 => subtract, * 2 => add
-    }
-  else
-    {
-      undef $l_2;
-    }
-  
-  $self->_log($x,$scale);                      # need to do the "normal" way
-  $x->badd($l_10) if defined $l_10;            # correct it by ln(10)
-  $x->badd($l_2) if defined $l_2;              # and maybe by ln(2)
-
-  # all done, $x contains now the result
-  $x;
-  }
-
-sub blcm 
-  { 
-  # (BFLOAT or num_str, BFLOAT or num_str) return BFLOAT
-  # does not modify arguments, but returns new object
-  # Lowest Common Multiplicator
-
-  my ($self,@arg) = objectify(0,@_);
-  my $x = $self->new(shift @arg);
-  while (@arg) { $x = Math::BigInt::__lcm($x,shift @arg); } 
-  $x;
-  }
-
-sub bgcd
-  {
-  # (BINT or num_str, BINT or num_str) return BINT
-  # does not modify arguments, but returns new object
-
-  my $y = shift;
-  $y = __PACKAGE__->new($y) if !ref($y);
-  my $self = ref($y);
-  my $x = $y->copy()->babs();                  # keep arguments
-
-  return $x->bnan() if $x->{sign} !~ /^[+-]$/  # x NaN?
-       || !$x->is_int();                       # only for integers now
-
-  while (@_)
-    {
-    my $t = shift; $t = $self->new($t) if !ref($t);
-    $y = $t->copy()->babs();
-    
-    return $x->bnan() if $y->{sign} !~ /^[+-]$/        # y NaN?
-       || !$y->is_int();                       # only for integers now
+        # Remove the newlines.
 
-    # greatest common divisor
-    while (! $y->is_zero())
-      {
-      ($x,$y) = ($y->copy(), $x->copy()->bmod($y));
-      }
+        $digits =~ tr/0-9//cd;
 
-    last if $x->is_one();
-    }
-  $x;
-  }
+        # Now do the rounding. We could easily make the regex substitution
+        # handle all cases, but we avoid using the regex engine when it is
+        # simple to avoid it.
 
-##############################################################################
+        if ($round_up) {
+            my $last_digit = substr($digits, -1, 1);
+            if ($last_digit lt '9') {
+                substr($digits, -1, 1) = ++$last_digit;
+            } else {
+                $digits =~ s/([0-8])(9+)$/ ($1 + 1) . ("0" x CORE::length($2)) /e;
+            }
+        }
 
-sub _e_add {
-    # Internal helper sub to take two positive integers and their signs and
-    # then add them. Input ($CALC, $CALC, ('+'|'-'), ('+'|'-')), output
-    # ($CALC, ('+'|'-')).
+        # Append the exponent and convert to an object.
 
-    my ($x, $y, $xs, $ys) = @_;
+        $pi = Math::BigFloat -> new($digits . 'e-' . ($n - 1));
 
-    # if the signs are equal we can add them (-5 + -3 => -(5 + 3) => -8)
-    if ($xs eq $ys) {
-        $x = $MBI->_add($x, $y);                # +a + +b or -a + -b
     } else {
-        my $a = $MBI->_acmp($x, $y);
-        if ($a == 0) {
-            # This does NOT modify $x in-place. TODO: Fix this?
-            $x = $MBI->_zero();                 # result is 0
-            $xs = '+';
-            return ($x, $xs);
-        }
-        if ($a > 0) {
-            $x = $MBI->_sub($x, $y);            # abs sub
-        } else {                                # a < 0
-            $x = $MBI->_sub ( $y, $x, 1 );      # abs sub
-            $xs = $ys;
+
+        # For large accuracy, the arctan formulas become very inefficient with
+        # Math::BigFloat, so use Brent-Salamin (aka AGM or Gauss-Legendre).
+
+        # Use a few more digits in the intermediate computations.
+        my $nextra = 8;
+
+        $HALF = $class -> new($HALF) unless ref($HALF);
+        my ($an, $bn, $tn, $pn) = ($class -> bone, $HALF -> copy() -> bsqrt($n),
+                                   $HALF -> copy() -> bmul($HALF), $class -> bone);
+        while ($pn < $n) {
+            my $prev_an = $an -> copy();
+            $an -> badd($bn) -> bmul($HALF, $n);
+            $bn -> bmul($prev_an) -> bsqrt($n);
+            $prev_an -> bsub($an);
+            $tn -> bsub($pn * $prev_an * $prev_an);
+            $pn -> badd($pn);
         }
+        $an -> badd($bn);
+        $an -> bmul($an, $n) -> bdiv(4 * $tn, $n);
+
+        $an -> round(@r);
+        $pi = $an;
+    }
+
+    if (defined $r[0]) {
+        $pi -> accuracy($r[0]);
+    } elsif (defined $r[1]) {
+        $pi -> precision($r[1]);
     }
 
-    $xs = '+' if $xs eq '-' && $MBI->_is_zero($x);      # no "-0"
+    for my $key (qw/ sign _m _es _e _a _p /) {
+        $self -> {$key} = $pi -> {$key};
+    }
 
-    return ($x, $xs);
+    return $self;
 }
 
-sub _e_sub {
-  # Internal helper sub to take two positive integers and their signs and
-  # then subtract them. Input ($CALC,$CALC,('+'|'-'),('+'|'-')), 
-  # output ($CALC,('+'|'-'))
-  my ($x,$y,$xs,$ys) = @_;
+sub copy {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
 
-  # flip sign
-    $ys = $ys eq '+' ? '-' : '+';       # swap sign of second operand ...
-    _e_add($x, $y, $xs, $ys);           # ... and let _e_add() do the job
-  }
+    # If called as a class method, the object to copy is the next argument.
 
-###############################################################################
-# is_foo methods (is_negative, is_positive are inherited from BigInt)
-
-sub is_int
-  {
-  # return true if arg (BFLOAT or num_str) is an integer
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
-
-  (($x->{sign} =~ /^[+-]$/) &&                 # NaN and +-inf aren't
-   ($x->{_es} eq '+')) ? 1 : 0;                        # 1e-1 => no integer
-  }
-
-sub is_zero
-  {
-  # return true if arg (BFLOAT or num_str) is zero
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
-
-  ($x->{sign} eq '+' && $MBI->_is_zero($x->{_m})) ? 1 : 0;
-  }
-
-sub is_one
-  {
-  # return true if arg (BFLOAT or num_str) is +1 or -1 if signis given
-  my ($self,$x,$sign) = ref($_[0]) ? (undef,@_) : objectify(1,@_);
-
-  $sign = '+' if !defined $sign || $sign ne '-';
-
-  ($x->{sign} eq $sign && 
-   $MBI->_is_zero($x->{_e}) &&
-   $MBI->_is_one($x->{_m}) ) ? 1 : 0; 
-  }
-
-sub is_odd
-  {
-  # return true if arg (BFLOAT or num_str) is odd or false if even
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
-  
-  (($x->{sign} =~ /^[+-]$/) &&         # NaN & +-inf aren't
-   ($MBI->_is_zero($x->{_e})) &&
-   ($MBI->_is_odd($x->{_m}))) ? 1 : 0; 
-  }
-
-sub is_even
-  {
-  # return true if arg (BINT or num_str) is even or false if odd
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
-
-  (($x->{sign} =~ /^[+-]$/) &&                 # NaN & +-inf aren't
-   ($x->{_es} eq '+') &&                       # 123.45 isn't
-   ($MBI->_is_even($x->{_m}))) ? 1 : 0;                # but 1200 is
-  }
-
-sub bmul
-  { 
-  # multiply two numbers
-  
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
-    }
+    $self = shift() unless $selfref;
+
+    my $copy = bless {}, $class;
+
+    $copy->{sign} = $self->{sign};
+    $copy->{_es}  = $self->{_es};
+    $copy->{_m}   = $MBI->_copy($self->{_m});
+    $copy->{_e}   = $MBI->_copy($self->{_e});
+    $copy->{_a}   = $self->{_a} if exists $self->{_a};
+    $copy->{_p}   = $self->{_p} if exists $self->{_p};
+
+    return $copy;
+}
 
-  return $x if $x->modify('bmul');
+sub as_number {
+    # return copy as a bigint representation of this Math::BigFloat number
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
 
-  return $x->bnan() if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+    return $x if $x->modify('as_number');
 
-  # inf handling
-  if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/))
-    {
-    return $x->bnan() if $x->is_zero() || $y->is_zero(); 
-    # result will always be +-inf:
-    # +inf * +/+inf => +inf, -inf * -/-inf => +inf
-    # +inf * -/-inf => -inf, -inf * +/+inf => -inf
-    return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
-    return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
-    return $x->binf('-');
-    }
-  
-  return $upgrade->bmul($x,$y,@r) if defined $upgrade &&
-   ((!$x->isa($self)) || (!$y->isa($self)));
-
-  # aEb * cEd = (a*c)E(b+d)
-  $MBI->_mul($x->{_m},$y->{_m});
-  ($x->{_e}, $x->{_es}) = _e_add($x->{_e}, $y->{_e}, $x->{_es}, $y->{_es});
-
-  $r[3] = $y;                          # no push!
-
-  # adjust sign:
-  $x->{sign} = $x->{sign} ne $y->{sign} ? '-' : '+';
-  $x->bnorm->round(@r);
-  }
-
-sub bmuladd
-  { 
-  # multiply two numbers and add the third to the result
-  
-  # set up parameters
-  my ($self,$x,$y,$z,@r) = objectify(3,@_);
-
-  return $x if $x->modify('bmuladd');
-
-  return $x->bnan() if (($x->{sign} eq $nan) ||
-                       ($y->{sign} eq $nan) ||
-                       ($z->{sign} eq $nan));
-
-  # inf handling
-  if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/))
-    {
-    return $x->bnan() if $x->is_zero() || $y->is_zero(); 
-    # result will always be +-inf:
-    # +inf * +/+inf => +inf, -inf * -/-inf => +inf
-    # +inf * -/-inf => -inf, -inf * +/+inf => -inf
-    return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
-    return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
-    return $x->binf('-');
+    if (!$x->isa('Math::BigFloat')) {
+        # if the object can as_number(), use it
+        return $x->as_number() if $x->can('as_number');
+        # otherwise, get us a float and then a number
+        $x = $x->can('as_float') ? $x->as_float() : $class->new(0+"$x");
     }
 
-  return $upgrade->bmul($x,$y,@r) if defined $upgrade &&
-   ((!$x->isa($self)) || (!$y->isa($self)));
+    return Math::BigInt->binf($x->sign()) if $x->is_inf();
+    return Math::BigInt->bnan()           if $x->is_nan();
 
-  # aEb * cEd = (a*c)E(b+d)
-  $MBI->_mul($x->{_m},$y->{_m});
-  ($x->{_e}, $x->{_es}) = _e_add($x->{_e}, $y->{_e}, $x->{_es}, $y->{_es});
+    my $z = $MBI->_copy($x->{_m});
+    if ($x->{_es} eq '-') {                     # < 0
+        $MBI->_rsft($z, $x->{_e}, 10);
+    } elsif (! $MBI->_is_zero($x->{_e})) {      # > 0
+        $MBI->_lsft($z, $x->{_e}, 10);
+    }
+    $z = Math::BigInt->new($x->{sign} . $MBI->_str($z));
+    $z;
+}
 
-  $r[3] = $y;                          # no push!
+###############################################################################
+# Boolean methods
+###############################################################################
 
-  # adjust sign:
-  $x->{sign} = $x->{sign} ne $y->{sign} ? '-' : '+';
+sub is_zero {
+    # return true if arg (BFLOAT or num_str) is zero
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-  # z=inf handling (z=NaN handled above)
-  $x->{sign} = $z->{sign}, return $x if $z->{sign} =~ /^[+-]inf$/;
+    ($x->{sign} eq '+' && $MBI->_is_zero($x->{_m})) ? 1 : 0;
+}
 
-  # take lower of the two e's and adapt m1 to it to match m2
-  my $e = $z->{_e};
-  $e = $MBI->_zero() if !defined $e;           # if no BFLOAT?
-  $e = $MBI->_copy($e);                                # make copy (didn't do it yet)
+sub is_one {
+    # return true if arg (BFLOAT or num_str) is +1 or -1 if signis given
+    my ($class, $x, $sign) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
 
-  my $es;
+    $sign = '+' if !defined $sign || $sign ne '-';
 
-  ($e,$es) = _e_sub($e, $x->{_e}, $z->{_es} || '+', $x->{_es});
+    ($x->{sign} eq $sign &&
+     $MBI->_is_zero($x->{_e}) &&
+     $MBI->_is_one($x->{_m})) ? 1 : 0;
+}
 
-  my $add = $MBI->_copy($z->{_m});
+sub is_odd {
+    # return true if arg (BFLOAT or num_str) is odd or false if even
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-  if ($es eq '-')                              # < 0
-    {
-    $MBI->_lsft( $x->{_m}, $e, 10);
-    ($x->{_e},$x->{_es}) = _e_add($x->{_e}, $e, $x->{_es}, $es);
-    }
-  elsif (!$MBI->_is_zero($e))                  # > 0
-    {
-    $MBI->_lsft($add, $e, 10);
-    }
-  # else: both e are the same, so just leave them
+    (($x->{sign} =~ /^[+-]$/) && # NaN & +-inf aren't
+     ($MBI->_is_zero($x->{_e})) &&
+     ($MBI->_is_odd($x->{_m}))) ? 1 : 0;
+}
 
-  if ($x->{sign} eq $z->{sign})
-    {
-    # add
-    $x->{_m} = $MBI->_add($x->{_m}, $add);
-    }
-  else
-    {
-    ($x->{_m}, $x->{sign}) = 
-     _e_add($x->{_m}, $add, $x->{sign}, $z->{sign});
-    }
+sub is_even {
+    # return true if arg (BINT or num_str) is even or false if odd
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-  # delete trailing zeros, then round
-  $x->bnorm()->round(@r);
-  }
+    (($x->{sign} =~ /^[+-]$/) &&        # NaN & +-inf aren't
+     ($x->{_es} eq '+') &&              # 123.45 isn't
+     ($MBI->_is_even($x->{_m}))) ? 1 : 0; # but 1200 is
+}
 
-sub bdiv 
-  {
-  # (dividend: BFLOAT or num_str, divisor: BFLOAT or num_str) return 
-    # (BFLOAT, BFLOAT) (quo, rem) or BFLOAT (only quo)
+sub is_int {
+    # return true if arg (BFLOAT or num_str) is an integer
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-  # set up parameters
-  my ($self,$x,$y,$a,$p,$r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,$a,$p,$r) = objectify(2,@_);
-    }
+    (($x->{sign} =~ /^[+-]$/) && # NaN and +-inf aren't
+     ($x->{_es} eq '+')) ? 1 : 0; # 1e-1 => no integer
+}
 
-  return $x if $x->modify('bdiv');
+###############################################################################
+# Comparison methods
+###############################################################################
 
-    my $wantarray = wantarray;          # call only once
+sub bcmp {
+    # Compares 2 values.  Returns one of undef, <0, =0, >0. (suitable for sort)
 
-    # At least one argument is NaN. This is handled the same way as in
-    # Math::BigInt -> bdiv().
+    # set up parameters
+    my ($class, $x, $y) = (ref($_[0]), @_);
 
-    if ($x -> is_nan() || $y -> is_nan()) {
-        return $wantarray ? ($x -> bnan(), $self -> bnan()) : $x -> bnan();
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y) = objectify(2, @_);
     }
 
-    # Divide by zero and modulo zero. This is handled the same way as in
-    # Math::BigInt -> bdiv(). See the comment in the code for Math::BigInt ->
-    # bdiv() for further details.
+    return $upgrade->bcmp($x, $y) if defined $upgrade &&
+      ((!$x->isa($class)) || (!$y->isa($class)));
 
-    if ($y -> is_zero()) {
-        my ($quo, $rem);
-        if ($wantarray) {
-            $rem = $x -> copy();
+    # Handle all 'nan' cases.
+
+    return undef if ($x->{sign} eq $nan) || ($y->{sign} eq $nan);
+
+    # Handle all '+inf' and '-inf' cases.
+
+    return  0 if ($x->{sign} eq '+inf' && $y->{sign} eq '+inf' ||
+                  $x->{sign} eq '-inf' && $y->{sign} eq '-inf');
+    return +1 if $x->{sign} eq '+inf'; # x = +inf and y < +inf
+    return -1 if $x->{sign} eq '-inf'; # x = -inf and y > -inf
+    return -1 if $y->{sign} eq '+inf'; # x < +inf and y = +inf
+    return +1 if $y->{sign} eq '-inf'; # x > -inf and y = -inf
+
+    # Handle all cases with opposite signs.
+
+    return +1 if $x->{sign} eq '+' && $y->{sign} eq '-'; # also does 0 <=> -y
+    return -1 if $x->{sign} eq '-' && $y->{sign} eq '+'; # also does -x <=> 0
+
+    # Handle all remaining zero cases.
+
+    my $xz = $x->is_zero();
+    my $yz = $y->is_zero();
+    return  0 if $xz && $yz;             # 0 <=> 0
+    return -1 if $xz && $y->{sign} eq '+'; # 0 <=> +y
+    return +1 if $yz && $x->{sign} eq '+'; # +x <=> 0
+
+    # Both arguments are now finite, non-zero numbers with the same sign.
+
+    my $cmp;
+
+    # The next step is to compare the exponents, but since each mantissa is an
+    # integer of arbitrary value, the exponents must be normalized by the length
+    # of the mantissas before we can compare them.
+
+    my $mxl = $MBI->_len($x->{_m});
+    my $myl = $MBI->_len($y->{_m});
+
+    # If the mantissas have the same length, there is no point in normalizing the
+    # exponents by the length of the mantissas, so treat that as a special case.
+
+    if ($mxl == $myl) {
+
+        # First handle the two cases where the exponents have different signs.
+
+        if ($x->{_es} eq '+' && $y->{_es} eq '-') {
+            $cmp = +1;
+        } elsif ($x->{_es} eq '-' && $y->{_es} eq '+') {
+            $cmp = -1;
         }
-        if ($x -> is_zero()) {
-            $quo = $x -> bnan();
-        } else {
-            $quo = $x -> binf($x -> {sign});
+
+        # Then handle the case where the exponents have the same sign.
+
+        else {
+            $cmp = $MBI->_acmp($x->{_e}, $y->{_e});
+            $cmp = -$cmp if $x->{_es} eq '-';
         }
-        return $wantarray ? ($quo, $rem) : $quo;
+
+        # Adjust for the sign, which is the same for x and y, and bail out if
+        # we're done.
+
+        $cmp = -$cmp if $x->{sign} eq '-'; # 124 > 123, but -124 < -123
+        return $cmp if $cmp;
+
     }
 
-    # Numerator (dividend) is +/-inf. This is handled the same way as in
-    # Math::BigInt -> bdiv(). See the comment in the code for Math::BigInt ->
-    # bdiv() for further details.
+    # We must normalize each exponent by the length of the corresponding
+    # mantissa. Life is a lot easier if we first make both exponents
+    # non-negative. We do this by adding the same positive value to both
+    # exponent. This is safe, because when comparing the exponents, only the
+    # relative difference is important.
 
-    if ($x -> is_inf()) {
-        my ($quo, $rem);
-        $rem = $self -> bnan() if $wantarray;
-        if ($y -> is_inf()) {
-            $quo = $x -> bnan();
-        } else {
-            my $sign = $x -> bcmp(0) == $y -> bcmp(0) ? '+' : '-';
-            $quo = $x -> binf($sign);
+    my $ex;
+    my $ey;
+
+    if ($x->{_es} eq '+') {
+
+        # If the exponent of x is >= 0 and the exponent of y is >= 0, there is no
+        # need to do anything special.
+
+        if ($y->{_es} eq '+') {
+            $ex = $MBI->_copy($x->{_e});
+            $ey = $MBI->_copy($y->{_e});
         }
-        return $wantarray ? ($quo, $rem) : $quo;
-    }
 
-  # Denominator (divisor) is +/-inf. This is handled the same way as in
-  # Math::BigInt -> bdiv(), with one exception: In scalar context,
-  # Math::BigFloat does true division (although rounded), not floored division
-  # (F-division), so a finite number divided by +/-inf is always zero. See the
-  # comment in the code for Math::BigInt -> bdiv() for further details.
-
-  if ($y -> is_inf()) {
-      my ($quo, $rem);
-      if ($wantarray) {
-          if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
-              $rem = $x -> copy();
-              $quo = $x -> bzero();
-          } else {
-              $rem = $self -> binf($y -> {sign});
-              $quo = $x -> bone('-');
-          }
-          return ($quo, $rem);
-      } else {
-        if ($y -> is_inf()) {
-            if ($x -> is_nan() || $x -> is_inf()) {
-                return $x -> bnan();
-            } else {
-                return $x -> bzero();
-            }
+        # If the exponent of x is >= 0 and the exponent of y is < 0, add the
+        # absolute value of the exponent of y to both.
+
+        else {
+            $ex = $MBI->_copy($x->{_e});
+            $ex = $MBI->_add($ex, $y->{_e}); # ex + |ey|
+            $ey = $MBI->_zero();             # -ex + |ey| = 0
         }
-    }
-    }
 
-  # At this point, both the numerator and denominator are finite numbers, and
-  # the denominator (divisor) is non-zero.
+    } else {
 
-  # x == 0?
-  return wantarray ? ($x,$self->bzero()) : $x if $x->is_zero();
+        # If the exponent of x is < 0 and the exponent of y is >= 0, add the
+        # absolute value of the exponent of x to both.
 
-  # upgrade ?
-  return $upgrade->bdiv($upgrade->new($x),$y,$a,$p,$r) if defined $upgrade;
+        if ($y->{_es} eq '+') {
+            $ex = $MBI->_zero(); # -ex + |ex| = 0
+            $ey = $MBI->_copy($y->{_e});
+            $ey = $MBI->_add($ey, $x->{_e}); # ey + |ex|
+        }
 
-  # we need to limit the accuracy to protect against overflow
-  my $fallback = 0;
-  my (@params,$scale);
-  ($x,@params) = $x->_find_round_parameters($a,$p,$r,$y);
+        # If the exponent of x is < 0 and the exponent of y is < 0, add the
+        # absolute values of both exponents to both exponents.
 
-  return $x if $x->is_nan();           # error in _find_round_parameters?
+        else {
+            $ex = $MBI->_copy($y->{_e}); # -ex + |ey| + |ex| = |ey|
+            $ey = $MBI->_copy($x->{_e}); # -ey + |ex| + |ey| = |ex|
+        }
 
-  # no rounding at all, so must use fallback
-    if (scalar @params == 0)
-    {
-    # simulate old behaviour
-    $params[0] = $self->div_scale();   # and round to it as accuracy
-    $scale = $params[0]+4;             # at least four more for proper round
-    $params[2] = $r;                   # round mode by caller or undef
-    $fallback = 1;                     # to clear a/p afterwards
-    } else {
-    # the 4 below is empirical, and there might be cases where it is not
-    # enough...
-    $scale = abs($params[0] || $params[1]) + 4;        # take whatever is defined
     }
 
-    my $rem;
-    $rem = $self -> bzero() if wantarray;
+    # Now we can normalize the exponents by adding lengths of the mantissas.
 
-  $y = $self->new($y) unless $y->isa('Math::BigFloat');
+    $MBI->_add($ex, $MBI->_new($mxl));
+    $MBI->_add($ey, $MBI->_new($myl));
 
-  my $lx = $MBI -> _len($x->{_m}); my $ly = $MBI -> _len($y->{_m});
-  $scale = $lx if $lx > $scale;
-  $scale = $ly if $ly > $scale;
-  my $diff = $ly - $lx;
-  $scale += $diff if $diff > 0;                # if lx << ly, but not if ly << lx!
+    # We're done if the exponents are different.
 
-  # check that $y is not 1 nor -1 and cache the result:
-  my $y_not_one = !($MBI->_is_zero($y->{_e}) && $MBI->_is_one($y->{_m}));
+    $cmp = $MBI->_acmp($ex, $ey);
+    $cmp = -$cmp if $x->{sign} eq '-'; # 124 > 123, but -124 < -123
+    return $cmp if $cmp;
 
-  # flipping the sign of $y will also flip the sign of $x for the special
-  # case of $x->bsub($x); so we can catch it below:
-  my $xsign = $x->{sign};
-  $y->{sign} =~ tr/+-/-+/;
+    # Compare the mantissas, but first normalize them by padding the shorter
+    # mantissa with zeros (shift left) until it has the same length as the longer
+    # mantissa.
 
-  if ($xsign ne $x->{sign})
-    {
-    # special case of $x /= $x results in 1
-    $x->bone();                        # "fixes" also sign of $y, since $x is $y
-    }
-  else
-    {
-    # correct $y's sign again
-    $y->{sign} =~ tr/+-/-+/;
-    # continue with normal div code:
-
-    # make copy of $x in case of list context for later remainder calculation
-    if (wantarray && $y_not_one)
-      {
-      $rem = $x->copy();
-      }
-
-    $x->{sign} = $x->{sign} ne $y->sign() ? '-' : '+'; 
-
-    # check for / +-1 ( +/- 1E0)
-    if ($y_not_one)
-      {
-      # promote BigInts and it's subclasses (except when already a BigFloat)
-      $y = $self->new($y) unless $y->isa('Math::BigFloat'); 
-
-      # calculate the result to $scale digits and then round it
-      # a * 10 ** b / c * 10 ** d => a/c * 10 ** (b-d)
-      $MBI->_lsft($x->{_m},$MBI->_new($scale),10);
-      $MBI->_div ($x->{_m},$y->{_m});  # a/c
-
-      # correct exponent of $x
-      ($x->{_e},$x->{_es}) = _e_sub($x->{_e}, $y->{_e}, $x->{_es}, $y->{_es});
-      # correct for 10**scale
-      ($x->{_e},$x->{_es}) = _e_sub($x->{_e}, $MBI->_new($scale), $x->{_es}, '+');
-      $x->bnorm();             # remove trailing 0's
-      }
-    } # end else $x != $y
-
-  # shortcut to not run through _find_round_parameters again
-  if (defined $params[0])
-    {
-    delete $x->{_a};                           # clear before round
-    $x->bround($params[0],$params[2]);         # then round accordingly
-    }
-  else
-    {
-    delete $x->{_p};                           # clear before round
-    $x->bfround($params[1],$params[2]);                # then round accordingly
-    }
-  if ($fallback)
-    {
-    # clear a/p after round, since user did not request it
-    delete $x->{_a}; delete $x->{_p};
-    }
+    my $mx = $x->{_m};
+    my $my = $y->{_m};
 
-  if (wantarray)
-    {
-    if ($y_not_one)
-      {
-      $x -> bfloor();
-      $rem->bmod($y,@params);                  # copy already done
-      }
-    if ($fallback)
-      {
-      # clear a/p after round, since user did not request it
-      delete $rem->{_a}; delete $rem->{_p};
-      }
-    return ($x,$rem);
-    }
-  $x;
-  }
-
-sub bmod 
-  {
-  # (dividend: BFLOAT or num_str, divisor: BFLOAT or num_str) return remainder
-
-  # set up parameters
-  my ($self,$x,$y,$a,$p,$r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,$a,$p,$r) = objectify(2,@_);
+    if ($mxl > $myl) {
+        $my = $MBI->_lsft($MBI->_copy($my), $MBI->_new($mxl - $myl), 10);
+    } elsif ($mxl < $myl) {
+        $mx = $MBI->_lsft($MBI->_copy($mx), $MBI->_new($myl - $mxl), 10);
     }
 
-  return $x if $x->modify('bmod');
+    $cmp = $MBI->_acmp($mx, $my);
+    $cmp = -$cmp if $x->{sign} eq '-'; # 124 > 123, but -124 < -123
+    return $cmp;
 
-    # At least one argument is NaN. This is handled the same way as in
-    # Math::BigInt -> bmod().
+}
 
-    if ($x -> is_nan() || $y -> is_nan()) {
-        return $x -> bnan();
-    } 
+sub bacmp {
+    # Compares 2 values, ignoring their signs.
+    # Returns one of undef, <0, =0, >0. (suitable for sort)
 
-    # Modulo zero. This is handled the same way as in Math::BigInt -> bmod().
+    # set up parameters
+    my ($class, $x, $y) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y) = objectify(2, @_);
+    }
+
+    return $upgrade->bacmp($x, $y) if defined $upgrade &&
+      ((!$x->isa($class)) || (!$y->isa($class)));
+
+    # handle +-inf and NaN's
+    if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/) {
+        return undef if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+        return 0 if ($x->is_inf() && $y->is_inf());
+        return 1 if ($x->is_inf() && !$y->is_inf());
+        return -1;
+    }
+
+    # shortcut
+    my $xz = $x->is_zero();
+    my $yz = $y->is_zero();
+    return 0 if $xz && $yz;     # 0 <=> 0
+    return -1 if $xz && !$yz;   # 0 <=> +y
+    return 1 if $yz && !$xz;    # +x <=> 0
+
+    # adjust so that exponents are equal
+    my $lxm = $MBI->_len($x->{_m});
+    my $lym = $MBI->_len($y->{_m});
+    my ($xes, $yes) = (1, 1);
+    $xes = -1 if $x->{_es} ne '+';
+    $yes = -1 if $y->{_es} ne '+';
+    # the numify somewhat limits our length, but makes it much faster
+    my $lx = $lxm + $xes * $MBI->_num($x->{_e});
+    my $ly = $lym + $yes * $MBI->_num($y->{_e});
+    my $l = $lx - $ly;
+    return $l <=> 0 if $l != 0;
+
+    # lengths (corrected by exponent) are equal
+    # so make mantissa equal-length by padding with zero (shift left)
+    my $diff = $lxm - $lym;
+    my $xm = $x->{_m};          # not yet copy it
+    my $ym = $y->{_m};
+    if ($diff > 0) {
+        $ym = $MBI->_copy($y->{_m});
+        $ym = $MBI->_lsft($ym, $MBI->_new($diff), 10);
+    } elsif ($diff < 0) {
+        $xm = $MBI->_copy($x->{_m});
+        $xm = $MBI->_lsft($xm, $MBI->_new(-$diff), 10);
+    }
+    $MBI->_acmp($xm, $ym);
+}
 
-    if ($y -> is_zero()) {
-    return $x;
-    }
+###############################################################################
+# Arithmetic methods
+###############################################################################
 
-    # Numerator (dividend) is +/-inf. This is handled the same way as in
-    # Math::BigInt -> bmod().
+sub bneg {
+    # (BINT or num_str) return BINT
+    # negate number or make a negated number from string
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-    if ($x -> is_inf()) {
-        return $x -> bnan();
-    }
+    return $x if $x->modify('bneg');
 
-    # Denominator (divisor) is +/-inf. This is handled the same way as in
-    # Math::BigInt -> bmod().
+    # for +0 do not negate (to have always normalized +0). Does nothing for 'NaN'
+    $x->{sign} =~ tr/+-/-+/ unless ($x->{sign} eq '+' && $MBI->_is_zero($x->{_m}));
+    $x;
+}
 
-    if ($y -> is_inf()) {
-        if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
-            return $x;
+sub bnorm {
+    # adjust m and e so that m is smallest possible
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    return $x if $x->{sign} !~ /^[+-]$/; # inf, nan etc
+
+    my $zeros = $MBI->_zeros($x->{_m}); # correct for trailing zeros
+    if ($zeros != 0) {
+        my $z = $MBI->_new($zeros);
+        $x->{_m} = $MBI->_rsft($x->{_m}, $z, 10);
+        if ($x->{_es} eq '-') {
+            if ($MBI->_acmp($x->{_e}, $z) >= 0) {
+                $x->{_e} = $MBI->_sub($x->{_e}, $z);
+                $x->{_es} = '+' if $MBI->_is_zero($x->{_e});
+            } else {
+                $x->{_e} = $MBI->_sub($MBI->_copy($z), $x->{_e});
+                $x->{_es} = '+';
+            }
         } else {
-            return $x -> binf($y -> sign());
+            $x->{_e} = $MBI->_add($x->{_e}, $z);
         }
+    } else {
+        # $x can only be 0Ey if there are no trailing zeros ('0' has 0 trailing
+        # zeros). So, for something like 0Ey, set y to 1, and -0 => +0
+        $x->{sign} = '+', $x->{_es} = '+', $x->{_e} = $MBI->_one()
+          if $MBI->_is_zero($x->{_m});
     }
 
-  return $x->bzero() if $x->is_zero()
- || ($x->is_int() &&
-  # check that $y == +1 or $y == -1:
-    ($MBI->_is_zero($y->{_e}) && $MBI->_is_one($y->{_m})));
+    $x;
+}
 
-  my $cmp = $x->bacmp($y);                     # equal or $x < $y?
-    if ($cmp == 0) {                            # $x == $y => result 0
-        return $x -> bzero($a, $p);
-    }
+sub binc {
+    # increment arg by one
+    my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
 
-  # only $y of the operands negative? 
-    my $neg = $x->{sign} ne $y->{sign} ? 1 : 0;
+    return $x if $x->modify('binc');
 
-  $x->{sign} = $y->{sign};                             # calc sign first
-    if ($cmp < 0 && $neg == 0) {                # $x < $y => result $x
-        return $x -> round($a, $p, $r);
+    if ($x->{_es} eq '-') {
+        return $x->badd($class->bone(), @r); #  digits after dot
     }
-  
-  my $ym = $MBI->_copy($y->{_m});
-  
-  # 2e1 => 20
-  $MBI->_lsft( $ym, $y->{_e}, 10) 
-   if $y->{_es} eq '+' && !$MBI->_is_zero($y->{_e});
-  # if $y has digits after dot
-  my $shifty = 0;                      # correct _e of $x by this
-  if ($y->{_es} eq '-')                        # has digits after dot
+
+    if (!$MBI->_is_zero($x->{_e})) # _e == 0 for NaN, inf, -inf
     {
-    # 123 % 2.5 => 1230 % 25 => 5 => 0.5
-    $shifty = $MBI->_num($y->{_e});    # no more digits after dot
-    $MBI->_lsft($x->{_m}, $y->{_e}, 10);# 123 => 1230, $y->{_m} is already 25
+        # 1e2 => 100, so after the shift below _m has a '0' as last digit
+        $x->{_m} = $MBI->_lsft($x->{_m}, $x->{_e}, 10); # 1e2 => 100
+        $x->{_e} = $MBI->_zero();                      # normalize
+        $x->{_es} = '+';
+        # we know that the last digit of $x will be '1' or '9', depending on the
+        # sign
     }
-  # $ym is now mantissa of $y based on exponent 0
+    # now $x->{_e} == 0
+    if ($x->{sign} eq '+') {
+        $MBI->_inc($x->{_m});
+        return $x->bnorm()->bround(@r);
+    } elsif ($x->{sign} eq '-') {
+        $MBI->_dec($x->{_m});
+        $x->{sign} = '+' if $MBI->_is_zero($x->{_m}); # -1 +1 => -0 => +0
+        return $x->bnorm()->bround(@r);
+    }
+    # inf, nan handling etc
+    $x->badd($class->bone(), @r); # badd() does round
+}
 
-  my $shiftx = 0;                      # correct _e of $x by this
-  if ($x->{_es} eq '-')                        # has digits after dot
-    {
-    # 123.4 % 20 => 1234 % 200
-    $shiftx = $MBI->_num($x->{_e});    # no more digits after dot
-    $MBI->_lsft($ym, $x->{_e}, 10);    # 123 => 1230
+sub bdec {
+    # decrement arg by one
+    my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+    return $x if $x->modify('bdec');
+
+    if ($x->{_es} eq '-') {
+        return $x->badd($class->bone('-'), @r); #  digits after dot
     }
-  # 123e1 % 20 => 1230 % 20
-  if ($x->{_es} eq '+' && !$MBI->_is_zero($x->{_e}))
-    {
-    $MBI->_lsft( $x->{_m}, $x->{_e},10);       # es => '+' here
+
+    if (!$MBI->_is_zero($x->{_e})) {
+        $x->{_m} = $MBI->_lsft($x->{_m}, $x->{_e}, 10); # 1e2 => 100
+        $x->{_e} = $MBI->_zero();                      # normalize
+        $x->{_es} = '+';
     }
+    # now $x->{_e} == 0
+    my $zero = $x->is_zero();
+    # <= 0
+    if (($x->{sign} eq '-') || $zero) {
+        $MBI->_inc($x->{_m});
+        $x->{sign} = '-' if $zero;                # 0 => 1 => -1
+        $x->{sign} = '+' if $MBI->_is_zero($x->{_m}); # -1 +1 => -0 => +0
+        return $x->bnorm()->round(@r);
+    }
+    # > 0
+    elsif ($x->{sign} eq '+') {
+        $MBI->_dec($x->{_m});
+        return $x->bnorm()->round(@r);
+    }
+    # inf, nan handling etc
+    $x->badd($class->bone('-'), @r); # does round
+}
 
-  $x->{_e} = $MBI->_new($shiftx);
-  $x->{_es} = '+'; 
-  $x->{_es} = '-' if $shiftx != 0 || $shifty != 0;
-  $MBI->_add( $x->{_e}, $MBI->_new($shifty)) if $shifty != 0;
-  
-  # now mantissas are equalized, exponent of $x is adjusted, so calc result
+sub badd {
+    # add second arg (BFLOAT or string) to first (BFLOAT) (modifies first)
+    # return result as BFLOAT
 
-  $x->{_m} = $MBI->_mod( $x->{_m}, $ym);
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
 
-  $x->{sign} = '+' if $MBI->_is_zero($x->{_m});                # fix sign for -0
-  $x->bnorm();
+    return $x if $x->modify('badd');
 
-    if ($neg != 0 && ! $x -> is_zero())   # one of them negative => correct in place
-    {
-    my $r = $y - $x;
-    $x->{_m} = $r->{_m};
-    $x->{_e} = $r->{_e};
-    $x->{_es} = $r->{_es};
-    $x->{sign} = '+' if $MBI->_is_zero($x->{_m});      # fix sign for -0
-    $x->bnorm();
+    # inf and NaN handling
+    if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/)) {
+        # NaN first
+        return $x->bnan() if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+        # inf handling
+        if (($x->{sign} =~ /^[+-]inf$/) && ($y->{sign} =~ /^[+-]inf$/)) {
+            # +inf++inf or -inf+-inf => same, rest is NaN
+            return $x if $x->{sign} eq $y->{sign};
+            return $x->bnan();
+        }
+        # +-inf + something => +inf; something +-inf => +-inf
+        $x->{sign} = $y->{sign}, return $x if $y->{sign} =~ /^[+-]inf$/;
+        return $x;
     }
 
-  $x->round($a,$p,$r,$y);      # round and return
-  }
+    return $upgrade->badd($x, $y, @r) if defined $upgrade &&
+      ((!$x->isa($class)) || (!$y->isa($class)));
+
+    $r[3] = $y;                 # no push!
 
-sub broot
-  {
-  # calculate $y'th root of $x
-  
-  # set up parameters
-  my ($self,$x,$y,$a,$p,$r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
+    # speed: no add for 0+y or x+0
+    return $x->bround(@r) if $y->is_zero(); # x+0
+    if ($x->is_zero())                      # 0+y
     {
-    ($self,$x,$y,$a,$p,$r) = objectify(2,@_);
+        # make copy, clobbering up x (modify in place!)
+        $x->{_e} = $MBI->_copy($y->{_e});
+        $x->{_es} = $y->{_es};
+        $x->{_m} = $MBI->_copy($y->{_m});
+        $x->{sign} = $y->{sign} || $nan;
+        return $x->round(@r);
     }
 
-  return $x if $x->modify('broot');
+    # take lower of the two e's and adapt m1 to it to match m2
+    my $e = $y->{_e};
+    $e = $MBI->_zero() if !defined $e; # if no BFLOAT?
+    $e = $MBI->_copy($e);              # make copy (didn't do it yet)
 
-  # NaN handling: $x ** 1/0, x or y NaN, or y inf/-inf or y == 0
-  return $x->bnan() if $x->{sign} !~ /^\+/ || $y->is_zero() ||
-         $y->{sign} !~ /^\+$/;
+    my $es;
 
-  return $x if $x->is_zero() || $x->is_one() || $x->is_inf() || $y->is_one();
-  
-  # we need to limit the accuracy to protect against overflow
-  my $fallback = 0;
-  my (@params,$scale);
-  ($x,@params) = $x->_find_round_parameters($a,$p,$r);
+    ($e, $es) = _e_sub($e, $x->{_e}, $y->{_es} || '+', $x->{_es});
 
-  return $x if $x->is_nan();           # error in _find_round_parameters?
+    my $add = $MBI->_copy($y->{_m});
 
-  # no rounding at all, so must use fallback
-  if (scalar @params == 0) 
-    {
-    # simulate old behaviour
-    $params[0] = $self->div_scale();   # and round to it as accuracy
-    $scale = $params[0]+4;             # at least four more for proper round
-    $params[2] = $r;                   # round mode by caller or undef
-    $fallback = 1;                     # to clear a/p afterwards
-    }
-  else
+    if ($es eq '-')             # < 0
     {
-    # the 4 below is empirical, and there might be cases where it is not
-    # enough...
-    $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
-    }
-
-  # when user set globals, they would interfere with our calculation, so
-  # disable them and later re-enable them
-  no strict 'refs';
-  my $abr = "$self\::accuracy"; my $ab = $$abr; $$abr = undef;
-  my $pbr = "$self\::precision"; my $pb = $$pbr; $$pbr = undef;
-  # we also need to disable any set A or P on $x (_find_round_parameters took
-  # them already into account), since these would interfere, too
-  delete $x->{_a}; delete $x->{_p};
-  # need to disable $upgrade in BigInt, to avoid deep recursion
-  local $Math::BigInt::upgrade = undef;        # should be really parent class vs MBI
-
-  # remember sign and make $x positive, since -4 ** (1/2) => -2
-  my $sign = 0; $sign = 1 if $x->{sign} eq '-'; $x->{sign} = '+';
-
-  my $is_two = 0;
-  if ($y->isa('Math::BigFloat'))
+        $MBI->_lsft($x->{_m}, $e, 10);
+        ($x->{_e}, $x->{_es}) = _e_add($x->{_e}, $e, $x->{_es}, $es);
+    } elsif (!$MBI->_is_zero($e)) # > 0
     {
-    $is_two = ($y->{sign} eq '+' && $MBI->_is_two($y->{_m}) && $MBI->_is_zero($y->{_e}));
+        $MBI->_lsft($add, $e, 10);
     }
-  else
-    {
-    $is_two = ($y == 2);
+    # else: both e are the same, so just leave them
+
+    if ($x->{sign} eq $y->{sign}) {
+        # add
+        $x->{_m} = $MBI->_add($x->{_m}, $add);
+    } else {
+        ($x->{_m}, $x->{sign}) =
+          _e_add($x->{_m}, $add, $x->{sign}, $y->{sign});
     }
 
-  # normal square root if $y == 2:
-  if ($is_two)
-    {
-    $x->bsqrt($scale+4);
+    # delete trailing zeros, then round
+    $x->bnorm()->round(@r);
+}
+
+sub bsub {
+    # (BINT or num_str, BINT or num_str) return BINT
+    # subtract second arg from first, modify first
+
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
     }
-  elsif ($y->is_one('-'))
-    {
-    # $x ** -1 => 1/$x
-    my $u = $self->bone()->bdiv($x,$scale);
-    # copy private parts over
-    $x->{_m} = $u->{_m};
-    $x->{_e} = $u->{_e};
-    $x->{_es} = $u->{_es};
-    }
-  else
-    {
-    # calculate the broot() as integer result first, and if it fits, return
-    # it rightaway (but only if $x and $y are integer):
-
-    my $done = 0;                              # not yet
-    if ($y->is_int() && $x->is_int())
-      {
-      my $i = $MBI->_copy( $x->{_m} );
-      $MBI->_lsft( $i, $x->{_e}, 10 ) unless $MBI->_is_zero($x->{_e});
-      my $int = Math::BigInt->bzero();
-      $int->{value} = $i;
-      $int->broot($y->as_number());
-      # if ($exact)
-      if ($int->copy()->bpow($y) == $x)
-        {
-        # found result, return it
-        $x->{_m} = $int->{value};
-        $x->{_e} = $MBI->_zero();
-        $x->{_es} = '+';
-        $x->bnorm();
-        $done = 1;
-        }
-      }
-    if ($done == 0)
-      {
-      my $u = $self->bone()->bdiv($y,$scale+4);
-      delete $u->{_a}; delete $u->{_p};         # otherwise it conflicts
-      $x->bpow($u,$scale+4);                    # el cheapo
-      }
-    }
-  $x->bneg() if $sign == 1;
-  
-  # shortcut to not run through _find_round_parameters again
-  if (defined $params[0])
-    {
-    $x->bround($params[0],$params[2]);         # then round accordingly
-    }
-  else
-    {
-    $x->bfround($params[1],$params[2]);                # then round accordingly
-    }
-  if ($fallback)
-    {
-    # clear a/p after round, since user did not request it
-    delete $x->{_a}; delete $x->{_p};
-    }
-  # restore globals
-  $$abr = $ab; $$pbr = $pb;
-  $x;
-  }
-
-sub bsqrt
-  { 
-  # calculate square root
-  my ($self,$x,$a,$p,$r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
 
-  return $x if $x->modify('bsqrt');
+    return $x if $x -> modify('bsub');
 
-  return $x->bnan() if $x->{sign} !~ /^[+]/;   # NaN, -inf or < 0
-  return $x if $x->{sign} eq '+inf';           # sqrt(inf) == inf
-  return $x->round($a,$p,$r) if $x->is_zero() || $x->is_one();
+    return $upgrade -> new($x) -> bsub($upgrade -> new($y), @r)
+      if defined $upgrade && (!$x -> isa($class) || !$y -> isa($class));
 
-  # we need to limit the accuracy to protect against overflow
-  my $fallback = 0;
-  my (@params,$scale);
-  ($x,@params) = $x->_find_round_parameters($a,$p,$r);
+    return $x -> round(@r) if $y -> is_zero();
 
-  return $x if $x->is_nan();           # error in _find_round_parameters?
-
-  # no rounding at all, so must use fallback
-  if (scalar @params == 0) 
-    {
-    # simulate old behaviour
-    $params[0] = $self->div_scale();   # and round to it as accuracy
-    $scale = $params[0]+4;             # at least four more for proper round
-    $params[2] = $r;                   # round mode by caller or undef
-    $fallback = 1;                     # to clear a/p afterwards
-    }
-  else
-    {
-    # the 4 below is empirical, and there might be cases where it is not
-    # enough...
-    $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
-    }
-
-  # when user set globals, they would interfere with our calculation, so
-  # disable them and later re-enable them
-  no strict 'refs';
-  my $abr = "$self\::accuracy"; my $ab = $$abr; $$abr = undef;
-  my $pbr = "$self\::precision"; my $pb = $$pbr; $$pbr = undef;
-  # we also need to disable any set A or P on $x (_find_round_parameters took
-  # them already into account), since these would interfere, too
-  delete $x->{_a}; delete $x->{_p};
-  # need to disable $upgrade in BigInt, to avoid deep recursion
-  local $Math::BigInt::upgrade = undef;        # should be really parent class vs MBI
-
-  my $i = $MBI->_copy( $x->{_m} );
-  $MBI->_lsft( $i, $x->{_e}, 10 ) unless $MBI->_is_zero($x->{_e});
-  my $xas = Math::BigInt->bzero();
-  $xas->{value} = $i;
-
-  my $gs = $xas->copy()->bsqrt();      # some guess
-
-  if (($x->{_es} ne '-')               # guess can't be accurate if there are
-                                       # digits after the dot
-   && ($xas->bacmp($gs * $gs) == 0))   # guess hit the nail on the head?
-    {
-    # exact result, copy result over to keep $x
-    $x->{_m} = $gs->{value}; $x->{_e} = $MBI->_zero(); $x->{_es} = '+';
-    $x->bnorm();
-    # shortcut to not run through _find_round_parameters again
-    if (defined $params[0])
-      {
-      $x->bround($params[0],$params[2]);       # then round accordingly
-      }
-    else
-      {
-      $x->bfround($params[1],$params[2]);      # then round accordingly
-      }
-    if ($fallback)
-      {
-      # clear a/p after round, since user did not request it
-      delete $x->{_a}; delete $x->{_p};
-      }
-    # re-enable A and P, upgrade is taken care of by "local"
-    ${"$self\::accuracy"} = $ab; ${"$self\::precision"} = $pb;
-    return $x;
-    }
-  # sqrt(2) = 1.4 because sqrt(2*100) = 1.4*10; so we can increase the accuracy
-  # of the result by multiplying the input by 100 and then divide the integer
-  # result of sqrt(input) by 10. Rounding afterwards returns the real result.
-
-  # The following steps will transform 123.456 (in $x) into 123456 (in $y1)
-  my $y1 = $MBI->_copy($x->{_m});
-
-  my $length = $MBI->_len($y1);
-  
-  # Now calculate how many digits the result of sqrt(y1) would have
-  my $digits = int($length / 2);
-
-  # But we need at least $scale digits, so calculate how many are missing
-  my $shift = $scale - $digits;
-
-  # This happens if the input had enough digits
-  # (we take care of integer guesses above)
-  $shift = 0 if $shift < 0; 
-
-  # Multiply in steps of 100, by shifting left two times the "missing" digits
-  my $s2 = $shift * 2;
-
-  # We now make sure that $y1 has the same odd or even number of digits than
-  # $x had. So when _e of $x is odd, we must shift $y1 by one digit left,
-  # because we always must multiply by steps of 100 (sqrt(100) is 10) and not
-  # steps of 10. The length of $x does not count, since an even or odd number
-  # of digits before the dot is not changed by adding an even number of digits
-  # after the dot (the result is still odd or even digits long).
-  $s2++ if $MBI->_is_odd($x->{_e});
-
-  $MBI->_lsft( $y1, $MBI->_new($s2), 10);
-
-  # now take the square root and truncate to integer
-  $y1 = $MBI->_sqrt($y1);
-
-  # By "shifting" $y1 right (by creating a negative _e) we calculate the final
-  # result, which is than later rounded to the desired scale.
-
-  # calculate how many zeros $x had after the '.' (or before it, depending
-  # on sign of $dat, the result should have half as many:
-  my $dat = $MBI->_num($x->{_e});
-  $dat = -$dat if $x->{_es} eq '-';
-  $dat += $length;
-
-  if ($dat > 0)
-    {
-    # no zeros after the dot (e.g. 1.23, 0.49 etc)
-    # preserve half as many digits before the dot than the input had 
-    # (but round this "up")
-    $dat = int(($dat+1)/2);
-    }
-  else
-    {
-    $dat = int(($dat)/2);
-    }
-  $dat -= $MBI->_len($y1);
-  if ($dat < 0)
-    {
-    $dat = abs($dat);
-    $x->{_e} = $MBI->_new( $dat );
-    $x->{_es} = '-';
-    }
-  else
-    {    
-    $x->{_e} = $MBI->_new( $dat );
-    $x->{_es} = '+';
-    }
-  $x->{_m} = $y1;
-  $x->bnorm();
+    # To correctly handle the lone special case $x -> bsub($x), we note the
+    # sign of $x, then flip the sign from $y, and if the sign of $x did change,
+    # too, then we caught the special case:
 
-  # shortcut to not run through _find_round_parameters again
-  if (defined $params[0])
-    {
-    $x->bround($params[0],$params[2]);         # then round accordingly
+    my $xsign = $x -> {sign};
+    $y -> {sign} =~ tr/+-/-+/;  # does nothing for NaN
+    if ($xsign ne $x -> {sign}) {
+        # special case of $x -> bsub($x) results in 0
+        return $x -> bzero(@r) if $xsign =~ /^[+-]$/;
+        return $x -> bnan();    # NaN, -inf, +inf
     }
-  else
-    {
-    $x->bfround($params[1],$params[2]);                # then round accordingly
-    }
-  if ($fallback)
-    {
-    # clear a/p after round, since user did not request it
-    delete $x->{_a}; delete $x->{_p};
-    }
-  # restore globals
-  $$abr = $ab; $$pbr = $pb;
-  $x;
-  }
+    $x -> badd($y, @r);         # badd does not leave internal zeros
+    $y -> {sign} =~ tr/+-/-+/;  # refix $y (does nothing for NaN)
+    $x;                         # already rounded by badd() or no rounding
+}
 
-sub bfac
-  {
-  # (BFLOAT or num_str, BFLOAT or num_str) return BFLOAT
-  # compute factorial number, modifies first argument
+sub bmul {
+    # multiply two numbers
 
-  # set up parameters
-  my ($self,$x,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  ($self,$x,@r) = objectify(1,@_) if !ref($x);
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
 
-  # inf => inf
-  return $x if $x->modify('bfac') || $x->{sign} eq '+inf';     
+    return $x if $x->modify('bmul');
 
-  return $x->bnan() 
-    if (($x->{sign} ne '+') ||         # inf, NaN, <0 etc => NaN
-     ($x->{_es} ne '+'));              # digits after dot?
+    return $x->bnan() if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
 
-  # use BigInt's bfac() for faster calc
-  if (! $MBI->_is_zero($x->{_e}))
-    {
-    $MBI->_lsft($x->{_m}, $x->{_e},10);        # change 12e1 to 120e0
-    $x->{_e} = $MBI->_zero();          # normalize
-    $x->{_es} = '+';
+    # inf handling
+    if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/)) {
+        return $x->bnan() if $x->is_zero() || $y->is_zero();
+        # result will always be +-inf:
+        # +inf * +/+inf => +inf, -inf * -/-inf => +inf
+        # +inf * -/-inf => -inf, -inf * +/+inf => -inf
+        return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
+        return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
+        return $x->binf('-');
     }
-  $MBI->_fac($x->{_m});                        # calculate factorial
-  $x->bnorm()->round(@r);              # norm again and round result
-  }
-
-sub _pow
-  {
-  # Calculate a power where $y is a non-integer, like 2 ** 0.3
-  my ($x,$y,@r) = @_;
-  my $self = ref($x);
-
-  # if $y == 0.5, it is sqrt($x)
-  $HALF = $self->new($HALF) unless ref($HALF);
-  return $x->bsqrt(@r,$y) if $y->bcmp($HALF) == 0;
-
-  # Using:
-  # a ** x == e ** (x * ln a)
-
-  # u = y * ln x
-  #                _                         _
-  # Taylor:       |   u    u^2    u^3         |
-  # x ** y  = 1 + |  --- + --- + ----- + ...  |
-  #               |_  1    1*2   1*2*3       _|
-
-  # we need to limit the accuracy to protect against overflow
-  my $fallback = 0;
-  my ($scale,@params);
-  ($x,@params) = $x->_find_round_parameters(@r);
-    
-  return $x if $x->is_nan();           # error in _find_round_parameters?
-
-  # no rounding at all, so must use fallback
-  if (scalar @params == 0)
-    {
-    # simulate old behaviour
-    $params[0] = $self->div_scale();   # and round to it as accuracy
-    $params[1] = undef;                        # disable P
-    $scale = $params[0]+4;             # at least four more for proper round
-    $params[2] = $r[2];                        # round mode by caller or undef
-    $fallback = 1;                     # to clear a/p afterwards
-    }
-  else
-    {
-    # the 4 below is empirical, and there might be cases where it is not
-    # enough...
-    $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
-    }
-
-  # when user set globals, they would interfere with our calculation, so
-  # disable them and later re-enable them
-  no strict 'refs';
-  my $abr = "$self\::accuracy"; my $ab = $$abr; $$abr = undef;
-  my $pbr = "$self\::precision"; my $pb = $$pbr; $$pbr = undef;
-  # we also need to disable any set A or P on $x (_find_round_parameters took
-  # them already into account), since these would interfere, too
-  delete $x->{_a}; delete $x->{_p};
-  # need to disable $upgrade in BigInt, to avoid deep recursion
-  local $Math::BigInt::upgrade = undef;
-  my ($limit,$v,$u,$below,$factor,$next,$over);
-
-  $u = $x->copy()->blog(undef,$scale)->bmul($y);
-  my $do_invert = ($u->{sign} eq '-');
-  $u->bneg()  if $do_invert;
-  $v = $self->bone();                          # 1
-  $factor = $self->new(2);                     # 2
-  $x->bone();                                  # first term: 1
-
-  $below = $v->copy();
-  $over = $u->copy();
-
-  $limit = $self->new("1E-". ($scale-1));
-  #my $steps = 0;
-  while (3 < 5)
-    {
-    # we calculate the next term, and add it to the last
-    # when the next term is below our limit, it won't affect the outcome
-    # anymore, so we stop:
-    $next = $over->copy()->bdiv($below,$scale);
-    last if $next->bacmp($limit) <= 0;
-    $x->badd($next);
-    # calculate things for the next term
-    $over *= $u; $below *= $factor; $factor->binc();
 
-    last if $x->{sign} !~ /^[-+]$/;
+    return $upgrade->bmul($x, $y, @r) if defined $upgrade &&
+      ((!$x->isa($class)) || (!$y->isa($class)));
 
-    #$steps++;
-    }
+    # aEb * cEd = (a*c)E(b+d)
+    $MBI->_mul($x->{_m}, $y->{_m});
+    ($x->{_e}, $x->{_es}) = _e_add($x->{_e}, $y->{_e}, $x->{_es}, $y->{_es});
 
-  if ($do_invert)
-    {
-    my $x_copy = $x->copy;
-    $x->bone->bdiv($x_copy, $scale);
-    }
-  
-  # shortcut to not run through _find_round_parameters again
-  if (defined $params[0])
-    {
-    $x->bround($params[0],$params[2]);         # then round accordingly
-    }
-  else
-    {
-    $x->bfround($params[1],$params[2]);                # then round accordingly
-    }
-  if ($fallback)
-    {
-    # clear a/p after round, since user did not request it
-    delete $x->{_a}; delete $x->{_p};
-    }
-  # restore globals
-  $$abr = $ab; $$pbr = $pb;
-  $x;
-  }
-
-sub bpow 
-  {
-  # (BFLOAT or num_str, BFLOAT or num_str) return BFLOAT
-  # compute power of two numbers, second arg is used as integer
-  # modifies first argument
-
-  # set up parameters
-  my ($self,$x,$y,$a,$p,$r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,$a,$p,$r) = objectify(2,@_);
-    }
+    $r[3] = $y;                 # no push!
+
+    # adjust sign:
+    $x->{sign} = $x->{sign} ne $y->{sign} ? '-' : '+';
+    $x->bnorm->round(@r);
+}
 
-  return $x if $x->modify('bpow');
+sub bmuladd {
+    # multiply two numbers and add the third to the result
 
-  return $x->bnan() if $x->{sign} eq $nan || $y->{sign} eq $nan;
-  return $x if $x->{sign} =~ /^[+-]inf$/;
-  
-  # cache the result of is_zero
-  my $y_is_zero = $y->is_zero();
-  return $x->bone() if $y_is_zero;
-  return $x         if $x->is_one() || $y->is_one();
+    # set up parameters
+    my ($class, $x, $y, $z, @r) = objectify(3, @_);
 
-  my $x_is_zero = $x->is_zero();
-  return $x->_pow($y,$a,$p,$r) if !$x_is_zero && !$y->is_int();                # non-integer power
+    return $x if $x->modify('bmuladd');
 
-  my $y1 = $y->as_number()->{value};                   # make MBI part
+    return $x->bnan() if (($x->{sign} eq $nan) ||
+                          ($y->{sign} eq $nan) ||
+                          ($z->{sign} eq $nan));
 
-  # if ($x == -1)
-  if ($x->{sign} eq '-' && $MBI->_is_one($x->{_m}) && $MBI->_is_zero($x->{_e}))
-    {
-    # if $x == -1 and odd/even y => +1/-1  because +-1 ^ (+-1) => +-1
-    return $MBI->_is_odd($y1) ? $x : $x->babs(1);
-    }
-  if ($x_is_zero)
-    {
-    return $x if $y->{sign} eq '+';    # 0**y => 0 (if not y <= 0)
-    # 0 ** -y => 1 / (0 ** y) => 1 / 0! (1 / 0 => +inf)
-    return $x->binf();
+    # inf handling
+    if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/)) {
+        return $x->bnan() if $x->is_zero() || $y->is_zero();
+        # result will always be +-inf:
+        # +inf * +/+inf => +inf, -inf * -/-inf => +inf
+        # +inf * -/-inf => -inf, -inf * +/+inf => -inf
+        return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
+        return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
+        return $x->binf('-');
     }
 
-  my $new_sign = '+';
-  $new_sign = $MBI->_is_odd($y1) ? '-' : '+' if $x->{sign} ne '+';
+    return $upgrade->bmul($x, $y, @r) if defined $upgrade &&
+      ((!$x->isa($class)) || (!$y->isa($class)));
 
-  # calculate $x->{_m} ** $y and $x->{_e} * $y separately (faster)
-  $x->{_m} = $MBI->_pow( $x->{_m}, $y1);
-  $x->{_e} = $MBI->_mul ($x->{_e}, $y1);
+    # aEb * cEd = (a*c)E(b+d)
+    $MBI->_mul($x->{_m}, $y->{_m});
+    ($x->{_e}, $x->{_es}) = _e_add($x->{_e}, $y->{_e}, $x->{_es}, $y->{_es});
 
-  $x->{sign} = $new_sign;
-  $x->bnorm();
-  if ($y->{sign} eq '-')
-    {
-    # modify $x in place!
-    my $z = $x->copy(); $x->bone();
-    return scalar $x->bdiv($z,$a,$p,$r);       # round in one go (might ignore y's A!)
-    }
-  $x->round($a,$p,$r,$y);
-  }
+    $r[3] = $y;                 # no push!
+
+    # adjust sign:
+    $x->{sign} = $x->{sign} ne $y->{sign} ? '-' : '+';
 
-sub bmodpow
-  {
-  # takes a very large number to a very large exponent in a given very
-  # large modulus, quickly, thanks to binary exponentiation. Supports
-  # negative exponents.
-  my ($self,$num,$exp,$mod,@r) = objectify(3,@_);
+    # z=inf handling (z=NaN handled above)
+    $x->{sign} = $z->{sign}, return $x if $z->{sign} =~ /^[+-]inf$/;
 
-  return $num if $num->modify('bmodpow');
+    # take lower of the two e's and adapt m1 to it to match m2
+    my $e = $z->{_e};
+    $e = $MBI->_zero() if !defined $e; # if no BFLOAT?
+    $e = $MBI->_copy($e);              # make copy (didn't do it yet)
 
-  # check modulus for valid values
-  return $num->bnan() if ($mod->{sign} ne '+'           # NaN, - , -inf, +inf
-                       || $mod->is_zero());
+    my $es;
 
-  # check exponent for valid values
-  if ($exp->{sign} =~ /\w/)
+    ($e, $es) = _e_sub($e, $x->{_e}, $z->{_es} || '+', $x->{_es});
+
+    my $add = $MBI->_copy($z->{_m});
+
+    if ($es eq '-')             # < 0
     {
-    # i.e., if it's NaN, +inf, or -inf...
-    return $num->bnan();
+        $MBI->_lsft($x->{_m}, $e, 10);
+        ($x->{_e}, $x->{_es}) = _e_add($x->{_e}, $e, $x->{_es}, $es);
+    } elsif (!$MBI->_is_zero($e)) # > 0
+    {
+        $MBI->_lsft($add, $e, 10);
+    }
+    # else: both e are the same, so just leave them
+
+    if ($x->{sign} eq $z->{sign}) {
+        # add
+        $x->{_m} = $MBI->_add($x->{_m}, $add);
+    } else {
+        ($x->{_m}, $x->{sign}) =
+          _e_add($x->{_m}, $add, $x->{sign}, $z->{sign});
     }
 
-  $num->bmodinv ($mod) if ($exp->{sign} eq '-');
+    # delete trailing zeros, then round
+    $x->bnorm()->round(@r);
+}
 
-  # check num for valid values (also NaN if there was no inverse but $exp < 0)
-  return $num->bnan() if $num->{sign} !~ /^[+-]$/;
+sub bdiv {
+    # (dividend: BFLOAT or num_str, divisor: BFLOAT or num_str) return
+    # (BFLOAT, BFLOAT) (quo, rem) or BFLOAT (only quo)
 
-  # $mod is positive, sign on $exp is ignored, result also positive
+    # set up parameters
+    my ($class, $x, $y, $a, $p, $r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, $a, $p, $r) = objectify(2, @_);
+    }
 
-  # XXX TODO: speed it up when all three numbers are integers
-  $num->bpow($exp)->bmod($mod);
-  }
+    return $x if $x->modify('bdiv');
 
-###############################################################################
-# trigonometric functions
-
-# helper function for bpi() and batan2(), calculates arcus tanges (1/x)
-
-sub _atan_inv
-  {
-  # return a/b so that a/b approximates atan(1/x) to at least limit digits
-  my ($self, $x, $limit) = @_;
-
-  # Taylor:       x^3   x^5   x^7   x^9
-  #    atan = x - --- + --- - --- + --- - ...
-  #                3     5     7     9 
-
-  #               1      1         1        1
-  #    atan 1/x = - - ------- + ------- - ------- + ...
-  #               x   x^3 * 3   x^5 * 5   x^7 * 7 
-
-  #               1      1         1            1
-  #    atan 1/x = - - --------- + ---------- - ----------- + ... 
-  #               5    3 * 125     5 * 3125     7 * 78125
-
-  # Subtraction/addition of a rational:
-
-  #  5    7    5*3 +- 7*4
-  #  - +- -  = ----------
-  #  4    3       4*3
-
-  # Term:  N        N+1
-  #
-  #        a             1                  a * d * c +- b
-  #        ----- +- ------------------  =  ----------------
-  #        b           d * c                b * d * c
-
-  #  since b1 = b0 * (d-2) * c
-
-  #        a             1                  a * d +- b / c
-  #        ----- +- ------------------  =  ----------------
-  #        b           d * c                b * d 
-
-  # and  d = d + 2
-  # and  c = c * x * x
-
-  #        u = d * c
-  #        stop if length($u) > limit 
-  #        a = a * u +- b
-  #        b = b * u
-  #        d = d + 2
-  #        c = c * x * x
-  #        sign = 1 - sign
-
-  my $a = $MBI->_one();
-  my $b = $MBI->_copy($x);
-  my $x2  = $MBI->_mul( $MBI->_copy($x), $b);          # x2 = x * x
-  my $d   = $MBI->_new( 3 );                           # d = 3
-  my $c   = $MBI->_mul( $MBI->_copy($x), $x2);         # c = x ^ 3
-  my $two = $MBI->_new( 2 );
-
-  # run the first step unconditionally
-  my $u = $MBI->_mul( $MBI->_copy($d), $c);
-  $a = $MBI->_mul($a, $u);
-  $a = $MBI->_sub($a, $b);
-  $b = $MBI->_mul($b, $u);
-  $d = $MBI->_add($d, $two);
-  $c = $MBI->_mul($c, $x2);
-
-  # a is now a * (d-3) * c
-  # b is now b * (d-2) * c
-
-  # run the second step unconditionally
-  $u = $MBI->_mul( $MBI->_copy($d), $c);
-  $a = $MBI->_mul($a, $u);
-  $a = $MBI->_add($a, $b);
-  $b = $MBI->_mul($b, $u);
-  $d = $MBI->_add($d, $two);
-  $c = $MBI->_mul($c, $x2);
-
-  # a is now a * (d-3) * (d-5) * c * c  
-  # b is now b * (d-2) * (d-4) * c * c
-
-  # so we can remove c * c from both a and b to shorten the numbers involved:
-  $a = $MBI->_div($a, $x2);
-  $b = $MBI->_div($b, $x2);
-  $a = $MBI->_div($a, $x2);
-  $b = $MBI->_div($b, $x2);
-
-#  my $step = 0; 
-  my $sign = 0;                                                # 0 => -, 1 => +
-  while (3 < 5)
-    {
-#    $step++;
-#    if (($i++ % 100) == 0)
-#      {
-#    print "a=",$MBI->_str($a),"\n";
-#    print "b=",$MBI->_str($b),"\n";
-#      }
-#    print "d=",$MBI->_str($d),"\n";
-#    print "x2=",$MBI->_str($x2),"\n";
-#    print "c=",$MBI->_str($c),"\n";
-
-    my $u = $MBI->_mul( $MBI->_copy($d), $c);
-    # use _alen() for libs like GMP where _len() would be O(N^2)
-    last if $MBI->_alen($u) > $limit;
-    my ($bc,$r) = $MBI->_div( $MBI->_copy($b), $c);
-    if ($MBI->_is_zero($r))
-      {
-      # b / c is an integer, so we can remove c from all terms
-      # this happens almost every time:
-      $a = $MBI->_mul($a, $d);
-      $a = $MBI->_sub($a, $bc) if $sign == 0;
-      $a = $MBI->_add($a, $bc) if $sign == 1;
-      $b = $MBI->_mul($b, $d);
-      }
-    else
-      {
-      # b / c is not an integer, so we keep c in the terms
-      # this happens very rarely, for instance for x = 5, this happens only
-      # at the following steps:
-      # 1, 5, 14, 32, 72, 157, 340, ...
-      $a = $MBI->_mul($a, $u);
-      $a = $MBI->_sub($a, $b) if $sign == 0;
-      $a = $MBI->_add($a, $b) if $sign == 1;
-      $b = $MBI->_mul($b, $u);
-      }
-    $d = $MBI->_add($d, $two);
-    $c = $MBI->_mul($c, $x2);
-    $sign = 1 - $sign;
-
-    }
-
-#  print "Took $step steps for ", $MBI->_str($x),"\n";
-#  print "a=",$MBI->_str($a),"\n"; print "b=",$MBI->_str($b),"\n";
-  # return a/b so that a/b approximates atan(1/x)
-  ($a,$b);
-  }
+    my $wantarray = wantarray;  # call only once
 
-sub bpi {
+    # At least one argument is NaN. This is handled the same way as in
+    # Math::BigInt -> bdiv().
 
-    # Called as                 Argument list
-    # ---------                 -------------
-    # Math::BigFloat->bpi()     ("Math::BigFloat")
-    # Math::BigFloat->bpi(10)   ("Math::BigFloat", 10)
-    # $x->bpi()                 ($x)
-    # $x->bpi(10)               ($x, 10)
-    # Math::BigFloat::bpi()     ()
-    # Math::BigFloat::bpi(10)   (10)
-    #
-    # In ambiguous cases, we favour the OO-style, so the following case
-    #
-    #   $n = Math::BigFloat->new("10");
-    #   $x = Math::BigFloat->bpi($n);
-    #
-    # which gives an argument list with the single element $n, is resolved as
-    #
-    #   $n->bpi();
+    if ($x -> is_nan() || $y -> is_nan()) {
+        return $wantarray ? ($x -> bnan(), $class -> bnan()) : $x -> bnan();
+    }
 
-    my $self    = shift;
-    my $selfref = ref $self;
-    my $class   = $selfref || $self;
+    # Divide by zero and modulo zero. This is handled the same way as in
+    # Math::BigInt -> bdiv(). See the comment in the code for Math::BigInt ->
+    # bdiv() for further details.
 
-    my $accu;                      # accuracy (number of digits)
-    my $prec;                      # precision
-    my $rndm;                      # round mode
+    if ($y -> is_zero()) {
+        my ($quo, $rem);
+        if ($wantarray) {
+            $rem = $x -> copy();
+        }
+        if ($x -> is_zero()) {
+            $quo = $x -> bnan();
+        } else {
+            $quo = $x -> binf($x -> {sign});
+        }
+        return $wantarray ? ($quo, $rem) : $quo;
+    }
 
-    # If bpi() is called as a function ...
-    #
-    # This cludge is necessary because we still support bpi() as a function. If
-    # bpi() is called with either no argument or one argument, and that one
-    # argument is either undefined or a scalar that looks like a number, then
-    # we assume bpi() is called as a function.
+    # Numerator (dividend) is +/-inf. This is handled the same way as in
+    # Math::BigInt -> bdiv(). See the comment in the code for Math::BigInt ->
+    # bdiv() for further details.
 
-    if (@_ == 0 &&
-        (defined($self) && !ref($self) && $self =~ /^\s*[+-]?\d/i)
-          ||
-        !defined($self))
-    {
-        $accu = $self;
-        $class = __PACKAGE__;
-        $self = $class -> bzero();      # initialize
+    if ($x -> is_inf()) {
+        my ($quo, $rem);
+        $rem = $class -> bnan() if $wantarray;
+        if ($y -> is_inf()) {
+            $quo = $x -> bnan();
+        } else {
+            my $sign = $x -> bcmp(0) == $y -> bcmp(0) ? '+' : '-';
+            $quo = $x -> binf($sign);
+        }
+        return $wantarray ? ($quo, $rem) : $quo;
     }
 
-    # ... or if bpi() is called as a method ...
+    # Denominator (divisor) is +/-inf. This is handled the same way as in
+    # Math::BigInt -> bdiv(), with one exception: In scalar context,
+    # Math::BigFloat does true division (although rounded), not floored division
+    # (F-division), so a finite number divided by +/-inf is always zero. See the
+    # comment in the code for Math::BigInt -> bdiv() for further details.
 
-    else {
-        if ($selfref) {                 # bpi() called as instance method
-            return $self if $self -> modify('bpi');
-        } else {                        # bpi() called as class method
-            $self = $class -> bzero();  # initialize
+    if ($y -> is_inf()) {
+        my ($quo, $rem);
+        if ($wantarray) {
+            if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
+                $rem = $x -> copy();
+                $quo = $x -> bzero();
+            } else {
+                $rem = $class -> binf($y -> {sign});
+                $quo = $x -> bone('-');
+            }
+            return ($quo, $rem);
+        } else {
+            if ($y -> is_inf()) {
+                if ($x -> is_nan() || $x -> is_inf()) {
+                    return $x -> bnan();
+                } else {
+                    return $x -> bzero();
+                }
+            }
         }
-        $accu = shift;
-        $prec = shift;
-        $rndm = shift;
     }
 
-    my @r = ($accu, $prec, $rndm);
+    # At this point, both the numerator and denominator are finite numbers, and
+    # the denominator (divisor) is non-zero.
 
-    # We need to limit the accuracy to protect against overflow.
+    # x == 0?
+    return wantarray ? ($x, $class->bzero()) : $x if $x->is_zero();
+
+    # upgrade ?
+    return $upgrade->bdiv($upgrade->new($x), $y, $a, $p, $r) if defined $upgrade;
+
+    # we need to limit the accuracy to protect against overflow
     my $fallback = 0;
-    my ($scale, @params);
-    ($self, @params) = $self -> _find_round_parameters(@r);
+    my (@params, $scale);
+    ($x, @params) = $x->_find_round_parameters($a, $p, $r, $y);
 
-    # Error in _find_round_parameters?
-    #
-    # We can't return here, because that will fail if $self was a NaN when
-    # bpi() was invoked, and we want to assign pi to $x. It is probably not a
-    # good idea that _find_round_parameters() signals invalid round parameters
-    # by silently returning a NaN. Fixme!
-    #return $self if $self && $self->is_nan();
+    return $x if $x->is_nan();  # error in _find_round_parameters?
 
-    # No rounding at all, so must use fallback.
+    # no rounding at all, so must use fallback
     if (scalar @params == 0) {
-        # Simulate old behaviour
-        $params[0] = $self -> div_scale();  # and round to it as accuracy
-        $params[1] = undef;                 # disable P
-        $params[2] = $r[2];                 # round mode by caller or undef
-        $fallback = 1;                      # to clear a/p afterwards
+        # simulate old behaviour
+        $params[0] = $class->div_scale(); # and round to it as accuracy
+        $scale = $params[0]+4;            # at least four more for proper round
+        $params[2] = $r;                  # round mode by caller or undef
+        $fallback = 1;                    # to clear a/p afterwards
+    } else {
+        # the 4 below is empirical, and there might be cases where it is not
+        # enough...
+        $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
     }
 
-    # The accuracy, i.e., the number of digits. Pi has one digit before the
-    # dot, so a precision of 4 digits is equivalent to an accuracy of 5 digits.
+    my $rem;
+    $rem = $class -> bzero() if wantarray;
 
-    my $n = $params[0] || 1 - $params[1];
+    $y = $class->new($y) unless $y->isa('Math::BigFloat');
 
-    if ($n < 1000) {
+    my $lx = $MBI -> _len($x->{_m}); my $ly = $MBI -> _len($y->{_m});
+    $scale = $lx if $lx > $scale;
+    $scale = $ly if $ly > $scale;
+    my $diff = $ly - $lx;
+    $scale += $diff if $diff > 0; # if lx << ly, but not if ly << lx!
 
-        # after 黃見利 (Hwang Chien-Lih) (1997)
-        # pi/4 = 183 * atan(1/239) + 32 * atan(1/1023) – 68 * atan(1/5832)
-        #        + 12 * atan(1/110443) - 12 * atan(1/4841182) - 100 * atan(1/6826318)
+    # check that $y is not 1 nor -1 and cache the result:
+    my $y_not_one = !($MBI->_is_zero($y->{_e}) && $MBI->_is_one($y->{_m}));
 
-        # Use a few more digits in the intermediate computations.
+    # flipping the sign of $y will also flip the sign of $x for the special
+    # case of $x->bsub($x); so we can catch it below:
+    my $xsign = $x->{sign};
+    $y->{sign} =~ tr/+-/-+/;
+
+    if ($xsign ne $x->{sign}) {
+        # special case of $x /= $x results in 1
+        $x->bone();             # "fixes" also sign of $y, since $x is $y
+    } else {
+        # correct $y's sign again
+        $y->{sign} =~ tr/+-/-+/;
+        # continue with normal div code:
 
-        my $nextra = $n < 800 ? 4 : 5;
-        $n += $nextra;
-
-        my ($a, $b) = $class->_atan_inv($MBI->_new(239), $n);
-        my ($c, $d) = $class->_atan_inv($MBI->_new(1023), $n);
-        my ($e, $f) = $class->_atan_inv($MBI->_new(5832), $n);
-        my ($g, $h) = $class->_atan_inv($MBI->_new(110443), $n);
-        my ($i, $j) = $class->_atan_inv($MBI->_new(4841182), $n);
-        my ($k, $l) = $class->_atan_inv($MBI->_new(6826318), $n);
-
-        $MBI->_mul($a, $MBI->_new(732));
-        $MBI->_mul($c, $MBI->_new(128));
-        $MBI->_mul($e, $MBI->_new(272));
-        $MBI->_mul($g, $MBI->_new(48));
-        $MBI->_mul($i, $MBI->_new(48));
-        $MBI->_mul($k, $MBI->_new(400));
-
-        my $x = $class->bone(); $x->{_m} = $a; my $x_d = $class->bone(); $x_d->{_m} = $b;
-        my $y = $class->bone(); $y->{_m} = $c; my $y_d = $class->bone(); $y_d->{_m} = $d;
-        my $z = $class->bone(); $z->{_m} = $e; my $z_d = $class->bone(); $z_d->{_m} = $f;
-        my $u = $class->bone(); $u->{_m} = $g; my $u_d = $class->bone(); $u_d->{_m} = $h;
-        my $v = $class->bone(); $v->{_m} = $i; my $v_d = $class->bone(); $v_d->{_m} = $j;
-        my $w = $class->bone(); $w->{_m} = $k; my $w_d = $class->bone(); $w_d->{_m} = $l;
-        $x->bdiv($x_d, $n);
-        $y->bdiv($y_d, $n);
-        $z->bdiv($z_d, $n);
-        $u->bdiv($u_d, $n);
-        $v->bdiv($v_d, $n);
-        $w->bdiv($w_d, $n);
-
-        delete $x->{_a}; delete $y->{_a}; delete $z->{_a};
-        delete $u->{_a}; delete $v->{_a}; delete $w->{_a};
-        $x->badd($y)->bsub($z)->badd($u)->bsub($v)->bsub($w);
-
-        for my $key (qw/ sign _m _es _e _a _p /) {
-            $self -> {$key} = $x -> {$key} if exists $x -> {$key};
+        # make copy of $x in case of list context for later remainder calculation
+        if (wantarray && $y_not_one) {
+            $rem = $x->copy();
         }
 
-    } else {
+        $x->{sign} = $x->{sign} ne $y->sign() ? '-' : '+';
 
-        # For large accuracy, the arctan formulas become very inefficient with
-        # Math::BigFloat. Switch to Brent-Salamin (aka AGM or Gauss-Legendre).
+        # check for / +-1 (+/- 1E0)
+        if ($y_not_one) {
+            # promote BigInts and it's subclasses (except when already a Math::BigFloat)
+            $y = $class->new($y) unless $y->isa('Math::BigFloat');
 
-        # Use a few more digits in the intermediate computations.
-        my $nextra = 8;
+            # calculate the result to $scale digits and then round it
+            # a * 10 ** b / c * 10 ** d => a/c * 10 ** (b-d)
+            $MBI->_lsft($x->{_m}, $MBI->_new($scale), 10);
+            $MBI->_div($x->{_m}, $y->{_m}); # a/c
 
-        $HALF = $class -> new($HALF) unless ref($HALF);
-        my ($an, $bn, $tn, $pn) = ($class -> bone, $HALF -> copy -> bsqrt($n),
-                                   $HALF -> copy -> bmul($HALF), $class -> bone);
-        while ($pn < $n) {
-            my $prev_an = $an -> copy;
-            $an -> badd($bn) -> bmul($HALF, $n);
-            $bn -> bmul($prev_an) -> bsqrt($n);
-            $prev_an -> bsub($an);
-            $tn -> bsub($pn * $prev_an * $prev_an);
-            $pn -> badd($pn);
+            # correct exponent of $x
+            ($x->{_e}, $x->{_es}) = _e_sub($x->{_e}, $y->{_e}, $x->{_es}, $y->{_es});
+            # correct for 10**scale
+            ($x->{_e}, $x->{_es}) = _e_sub($x->{_e}, $MBI->_new($scale), $x->{_es}, '+');
+            $x->bnorm();        # remove trailing 0's
         }
-        $an -> badd($bn);
-        $an -> bmul($an, $n) -> bdiv(4 * $tn, $n);
+    }                           # end else $x != $y
+
+    # shortcut to not run through _find_round_parameters again
+    if (defined $params[0]) {
+        delete $x->{_a};               # clear before round
+        $x->bround($params[0], $params[2]); # then round accordingly
+    } else {
+        delete $x->{_p};                # clear before round
+        $x->bfround($params[1], $params[2]); # then round accordingly
+    }
+    if ($fallback) {
+        # clear a/p after round, since user did not request it
+        delete $x->{_a}; delete $x->{_p};
+    }
 
-        for my $key (qw/ sign _m _es _e _a _p /) {
-            $self -> {$key} = $an -> {$key} if exists $an -> {$key};;
+    if (wantarray) {
+        if ($y_not_one) {
+            $x -> bfloor();
+            $rem->bmod($y, @params); # copy already done
         }
+        if ($fallback) {
+            # clear a/p after round, since user did not request it
+            delete $rem->{_a}; delete $rem->{_p};
+        }
+        return ($x, $rem);
     }
+    $x;
+}
 
-    $self -> round(@params);
+sub bmod {
+    # (dividend: BFLOAT or num_str, divisor: BFLOAT or num_str) return remainder
 
-    if ($fallback) {
-        delete $self->{_a};
-        delete $self->{_p};
+    # set up parameters
+    my ($class, $x, $y, $a, $p, $r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, $a, $p, $r) = objectify(2, @_);
     }
 
-    return $self;
-}
+    return $x if $x->modify('bmod');
 
-sub bcos
-  {
-  # Calculate a cosinus of x.
-  my ($self,$x,@r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
+    # At least one argument is NaN. This is handled the same way as in
+    # Math::BigInt -> bmod().
+
+    if ($x -> is_nan() || $y -> is_nan()) {
+        return $x -> bnan();
+    }
 
-  # Taylor:      x^2   x^4   x^6   x^8
-  #    cos = 1 - --- + --- - --- + --- ...
-  #               2!    4!    6!    8!
+    # Modulo zero. This is handled the same way as in Math::BigInt -> bmod().
 
-  # we need to limit the accuracy to protect against overflow
-  my $fallback = 0;
-  my ($scale,@params);
-  ($x,@params) = $x->_find_round_parameters(@r);
-    
-  #         constant object       or error in _find_round_parameters?
-  return $x if $x->modify('bcos') || $x->is_nan();
+    if ($y -> is_zero()) {
+        return $x;
+    }
 
-  return $x->bone(@r) if $x->is_zero();
+    # Numerator (dividend) is +/-inf. This is handled the same way as in
+    # Math::BigInt -> bmod().
 
-  # no rounding at all, so must use fallback
-  if (scalar @params == 0)
-    {
-    # simulate old behaviour
-    $params[0] = $self->div_scale();   # and round to it as accuracy
-    $params[1] = undef;                        # disable P
-    $scale = $params[0]+4;             # at least four more for proper round
-    $params[2] = $r[2];                        # round mode by caller or undef
-    $fallback = 1;                     # to clear a/p afterwards
-    }
-  else
-    {
-    # the 4 below is empirical, and there might be cases where it is not
-    # enough...
-    $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
-    }
-
-  # when user set globals, they would interfere with our calculation, so
-  # disable them and later re-enable them
-  no strict 'refs';
-  my $abr = "$self\::accuracy"; my $ab = $$abr; $$abr = undef;
-  my $pbr = "$self\::precision"; my $pb = $$pbr; $$pbr = undef;
-  # we also need to disable any set A or P on $x (_find_round_parameters took
-  # them already into account), since these would interfere, too
-  delete $x->{_a}; delete $x->{_p};
-  # need to disable $upgrade in BigInt, to avoid deep recursion
-  local $Math::BigInt::upgrade = undef;
-  my $last = 0;
-  my $over = $x * $x;                   # X ^ 2
-  my $x2 = $over->copy();               # X ^ 2; difference between terms
-  my $sign = 1;                         # start with -=
-  my $below = $self->new(2); my $factorial = $self->new(3);
-  $x->bone(); delete $x->{_a}; delete $x->{_p};
-
-  my $limit = $self->new("1E-". ($scale-1));
-  #my $steps = 0;
-  while (3 < 5)
-    {
-    # we calculate the next term, and add it to the last
-    # when the next term is below our limit, it won't affect the outcome
-    # anymore, so we stop:
-    my $next = $over->copy()->bdiv($below,$scale);
-    last if $next->bacmp($limit) <= 0;
-
-    if ($sign == 0)
-      {
-      $x->badd($next);
-      }
-    else
-      {
-      $x->bsub($next);
-      }
-    $sign = 1-$sign;                                   # alternate
-    # calculate things for the next term
-    $over->bmul($x2);                                  # $x*$x
-    $below->bmul($factorial); $factorial->binc();      # n*(n+1)
-    $below->bmul($factorial); $factorial->binc();      # n*(n+1)
-    }
-
-  # shortcut to not run through _find_round_parameters again
-  if (defined $params[0])
-    {
-    $x->bround($params[0],$params[2]);         # then round accordingly
+    if ($x -> is_inf()) {
+        return $x -> bnan();
     }
-  else
-    {
-    $x->bfround($params[1],$params[2]);                # then round accordingly
+
+    # Denominator (divisor) is +/-inf. This is handled the same way as in
+    # Math::BigInt -> bmod().
+
+    if ($y -> is_inf()) {
+        if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
+            return $x;
+        } else {
+            return $x -> binf($y -> sign());
+        }
     }
-  if ($fallback)
-    {
-    # clear a/p after round, since user did not request it
-    delete $x->{_a}; delete $x->{_p};
+
+    return $x->bzero() if $x->is_zero()
+      || ($x->is_int() &&
+          # check that $y == +1 or $y == -1:
+          ($MBI->_is_zero($y->{_e}) && $MBI->_is_one($y->{_m})));
+
+    my $cmp = $x->bacmp($y);    # equal or $x < $y?
+    if ($cmp == 0) {            # $x == $y => result 0
+        return $x -> bzero($a, $p);
     }
-  # restore globals
-  $$abr = $ab; $$pbr = $pb;
-  $x;
-  }
 
-sub bsin
-  {
-  # Calculate a sinus of x.
-  my ($self,$x,@r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
+    # only $y of the operands negative?
+    my $neg = $x->{sign} ne $y->{sign} ? 1 : 0;
 
-  # taylor:      x^3   x^5   x^7   x^9
-  #    sin = x - --- + --- - --- + --- ...
-  #               3!    5!    7!    9!
+    $x->{sign} = $y->{sign};     # calc sign first
+    if ($cmp < 0 && $neg == 0) { # $x < $y => result $x
+        return $x -> round($a, $p, $r);
+    }
 
-  # we need to limit the accuracy to protect against overflow
-  my $fallback = 0;
-  my ($scale,@params);
-  ($x,@params) = $x->_find_round_parameters(@r);
-    
-  #         constant object       or error in _find_round_parameters?
-  return $x if $x->modify('bsin') || $x->is_nan();
+    my $ym = $MBI->_copy($y->{_m});
 
-  return $x->bzero(@r) if $x->is_zero();
+    # 2e1 => 20
+    $MBI->_lsft($ym, $y->{_e}, 10)
+      if $y->{_es} eq '+' && !$MBI->_is_zero($y->{_e});
 
-  # no rounding at all, so must use fallback
-  if (scalar @params == 0)
+    # if $y has digits after dot
+    my $shifty = 0;             # correct _e of $x by this
+    if ($y->{_es} eq '-')       # has digits after dot
     {
-    # simulate old behaviour
-    $params[0] = $self->div_scale();   # and round to it as accuracy
-    $params[1] = undef;                        # disable P
-    $scale = $params[0]+4;             # at least four more for proper round
-    $params[2] = $r[2];                        # round mode by caller or undef
-    $fallback = 1;                     # to clear a/p afterwards
-    }
-  else
-    {
-    # the 4 below is empirical, and there might be cases where it is not
-    # enough...
-    $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
-    }
-
-  # when user set globals, they would interfere with our calculation, so
-  # disable them and later re-enable them
-  no strict 'refs';
-  my $abr = "$self\::accuracy"; my $ab = $$abr; $$abr = undef;
-  my $pbr = "$self\::precision"; my $pb = $$pbr; $$pbr = undef;
-  # we also need to disable any set A or P on $x (_find_round_parameters took
-  # them already into account), since these would interfere, too
-  delete $x->{_a}; delete $x->{_p};
-  # need to disable $upgrade in BigInt, to avoid deep recursion
-  local $Math::BigInt::upgrade = undef;
-  my $last = 0;
-  my $over = $x * $x;                  # X ^ 2
-  my $x2 = $over->copy();              # X ^ 2; difference between terms
-  $over->bmul($x);                     # X ^ 3 as starting value
-  my $sign = 1;                                # start with -=
-  my $below = $self->new(6); my $factorial = $self->new(4);
-  delete $x->{_a}; delete $x->{_p};
-
-  my $limit = $self->new("1E-". ($scale-1));
-  #my $steps = 0;
-  while (3 < 5)
-    {
-    # we calculate the next term, and add it to the last
-    # when the next term is below our limit, it won't affect the outcome
-    # anymore, so we stop:
-    my $next = $over->copy()->bdiv($below,$scale);
-    last if $next->bacmp($limit) <= 0;
-
-    if ($sign == 0)
-      {
-      $x->badd($next);
-      }
-    else
-      {
-      $x->bsub($next);
-      }
-    $sign = 1-$sign;                                   # alternate
-    # calculate things for the next term
-    $over->bmul($x2);                                  # $x*$x
-    $below->bmul($factorial); $factorial->binc();      # n*(n+1)
-    $below->bmul($factorial); $factorial->binc();      # n*(n+1)
-    }
-
-  # shortcut to not run through _find_round_parameters again
-  if (defined $params[0])
-    {
-    $x->bround($params[0],$params[2]);         # then round accordingly
+        # 123 % 2.5 => 1230 % 25 => 5 => 0.5
+        $shifty = $MBI->_num($y->{_e});  # no more digits after dot
+        $MBI->_lsft($x->{_m}, $y->{_e}, 10); # 123 => 1230, $y->{_m} is already 25
     }
-  else
+    # $ym is now mantissa of $y based on exponent 0
+
+    my $shiftx = 0;             # correct _e of $x by this
+    if ($x->{_es} eq '-')       # has digits after dot
     {
-    $x->bfround($params[1],$params[2]);                # then round accordingly
+        # 123.4 % 20 => 1234 % 200
+        $shiftx = $MBI->_num($x->{_e}); # no more digits after dot
+        $MBI->_lsft($ym, $x->{_e}, 10); # 123 => 1230
     }
-  if ($fallback)
-    {
-    # clear a/p after round, since user did not request it
-    delete $x->{_a}; delete $x->{_p};
+    # 123e1 % 20 => 1230 % 20
+    if ($x->{_es} eq '+' && !$MBI->_is_zero($x->{_e})) {
+        $MBI->_lsft($x->{_m}, $x->{_e}, 10); # es => '+' here
     }
-  # restore globals
-  $$abr = $ab; $$pbr = $pb;
-  $x;
-  }
 
-sub batan2 {
-    # $y -> batan2($x) returns the arcus tangens of $y / $x.
+    $x->{_e} = $MBI->_new($shiftx);
+    $x->{_es} = '+';
+    $x->{_es} = '-' if $shiftx != 0 || $shifty != 0;
+    $MBI->_add($x->{_e}, $MBI->_new($shifty)) if $shifty != 0;
 
-    # Set up parameters.
-    my ($self, $y, $x, @r) = (ref($_[0]), @_);
+    # now mantissas are equalized, exponent of $x is adjusted, so calc result
 
-    # Objectify is costly, so avoid it if we can.
-    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
-        ($self, $y, $x, @r) = objectify(2, @_);
+    $x->{_m} = $MBI->_mod($x->{_m}, $ym);
+
+    $x->{sign} = '+' if $MBI->_is_zero($x->{_m}); # fix sign for -0
+    $x->bnorm();
+
+    if ($neg != 0 && ! $x -> is_zero()) # one of them negative => correct in place
+    {
+        my $r = $y - $x;
+        $x->{_m} = $r->{_m};
+        $x->{_e} = $r->{_e};
+        $x->{_es} = $r->{_es};
+        $x->{sign} = '+' if $MBI->_is_zero($x->{_m}); # fix sign for -0
+        $x->bnorm();
     }
 
-    # Quick exit if $y is read-only.
-    return $y if $y -> modify('batan2');
+    $x->round($a, $p, $r, $y);     # round and return
+}
 
-    # Handle all NaN cases.
-    return $y -> bnan() if $x->{sign} eq $nan || $y->{sign} eq $nan;
+sub bmodpow {
+    # takes a very large number to a very large exponent in a given very
+    # large modulus, quickly, thanks to binary exponentiation. Supports
+    # negative exponents.
+    my ($class, $num, $exp, $mod, @r) = objectify(3, @_);
 
-    # We need to limit the accuracy to protect against overflow.
+    return $num if $num->modify('bmodpow');
+
+    # check modulus for valid values
+    return $num->bnan() if ($mod->{sign} ne '+' # NaN, -, -inf, +inf
+                            || $mod->is_zero());
+
+    # check exponent for valid values
+    if ($exp->{sign} =~ /\w/) {
+        # i.e., if it's NaN, +inf, or -inf...
+        return $num->bnan();
+    }
+
+    $num->bmodinv ($mod) if ($exp->{sign} eq '-');
+
+    # check num for valid values (also NaN if there was no inverse but $exp < 0)
+    return $num->bnan() if $num->{sign} !~ /^[+-]$/;
+
+    # $mod is positive, sign on $exp is ignored, result also positive
+
+    # XXX TODO: speed it up when all three numbers are integers
+    $num->bpow($exp)->bmod($mod);
+}
+
+sub bpow {
+    # (BFLOAT or num_str, BFLOAT or num_str) return BFLOAT
+    # compute power of two numbers, second arg is used as integer
+    # modifies first argument
+
+    # set up parameters
+    my ($class, $x, $y, $a, $p, $r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, $a, $p, $r) = objectify(2, @_);
+    }
+
+    return $x if $x->modify('bpow');
+
+    return $x->bnan() if $x->{sign} eq $nan || $y->{sign} eq $nan;
+    return $x if $x->{sign} =~ /^[+-]inf$/;
+
+    # cache the result of is_zero
+    my $y_is_zero = $y->is_zero();
+    return $x->bone() if $y_is_zero;
+    return $x         if $x->is_one() || $y->is_one();
+
+    my $x_is_zero = $x->is_zero();
+    return $x->_pow($y, $a, $p, $r) if !$x_is_zero && !$y->is_int(); # non-integer power
+
+    my $y1 = $y->as_number()->{value}; # make MBI part
+
+    # if ($x == -1)
+    if ($x->{sign} eq '-' && $MBI->_is_one($x->{_m}) && $MBI->_is_zero($x->{_e})) {
+        # if $x == -1 and odd/even y => +1/-1  because +-1 ^ (+-1) => +-1
+        return $MBI->_is_odd($y1) ? $x : $x->babs(1);
+    }
+    if ($x_is_zero) {
+        return $x if $y->{sign} eq '+'; # 0**y => 0 (if not y <= 0)
+        # 0 ** -y => 1 / (0 ** y) => 1 / 0! (1 / 0 => +inf)
+        return $x->binf();
+    }
+
+    my $new_sign = '+';
+    $new_sign = $MBI->_is_odd($y1) ? '-' : '+' if $x->{sign} ne '+';
+
+    # calculate $x->{_m} ** $y and $x->{_e} * $y separately (faster)
+    $x->{_m} = $MBI->_pow($x->{_m}, $y1);
+    $x->{_e} = $MBI->_mul ($x->{_e}, $y1);
+
+    $x->{sign} = $new_sign;
+    $x->bnorm();
+    if ($y->{sign} eq '-') {
+        # modify $x in place!
+        my $z = $x->copy(); $x->bone();
+        return scalar $x->bdiv($z, $a, $p, $r); # round in one go (might ignore y's A!)
+    }
+    $x->round($a, $p, $r, $y);
+}
+
+sub blog {
+    my ($class, $x, $base, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+    # If called as $x -> blog() or $x -> blog(undef), don't objectify the
+    # undefined base, since undef signals that the base is Euler's number.
+    #unless (ref($x) && !defined($base)) {
+    #    # objectify is costly, so avoid it
+    #    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+    #        ($class, $x, $base, $a, $p, $r) = objectify(2, @_);
+    #    }
+    #}
+
+    return $x if $x->modify('blog');
+
+    return $x -> bnan() if $x -> is_nan();
+
+    # we need to limit the accuracy to protect against overflow
     my $fallback = 0;
     my ($scale, @params);
-    ($y, @params) = $y -> _find_round_parameters(@r);
-
-    # Error in _find_round_parameters?
-    return $y if $y->is_nan();
+    ($x, @params) = $x->_find_round_parameters($a, $p, $r);
 
-    # No rounding at all, so must use fallback.
+    # no rounding at all, so must use fallback
     if (scalar @params == 0) {
-        # Simulate old behaviour
-        $params[0] = $self -> div_scale();  # and round to it as accuracy
-        $params[1] = undef;                 # disable P
-        $scale = $params[0] + 4;            # at least four more for proper round
-        $params[2] = $r[2];                 # round mode by caller or undef
-        $fallback = 1;                      # to clear a/p afterwards
+        # simulate old behaviour
+        $params[0] = $class->div_scale(); # and round to it as accuracy
+        $params[1] = undef;               # P = undef
+        $scale = $params[0]+4;            # at least four more for proper round
+        $params[2] = $r                 # round mode by caller or undef
+        $fallback = 1;                    # to clear a/p afterwards
     } else {
-        # The 4 below is empirical, and there might be cases where it is not
-        # enough ...
+        # the 4 below is empirical, and there might be cases where it is not
+        # enough...
         $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
     }
 
-    if ($x -> is_inf("+")) {                            # x = inf
-        if ($y -> is_inf("+")) {                        #    y = inf
-            $y -> bpi($scale) -> bmul("0.25");          #       pi/4
-        } elsif ($y -> is_inf("-")) {                   #    y = -inf
-            $y -> bpi($scale) -> bmul("-0.25");         #       -pi/4
-        } else {                                        #    -inf < y < inf
-            return $y -> bzero(@r);                     #       0
+    my $done = 0;
+    if (defined $base) {
+        $base = $class -> new($base) unless ref $base;
+        if ($base -> is_nan() || $base -> is_one()) {
+            $x -> bnan();
+            $done = 1;
+        } elsif ($base -> is_inf() || $base -> is_zero()) {
+            if ($x -> is_inf() || $x -> is_zero()) {
+                $x -> bnan();
+            } else {
+                $x -> bzero(@params);
+            }
+            $done = 1;
+        } elsif ($base -> is_negative()) { # -inf < base < 0
+            if ($x -> is_one()) {          #     x = 1
+                $x -> bzero(@params);
+            } elsif ($x == $base) {
+                $x -> bone('+', @params); #     x = base
+            } else {
+                $x -> bnan();   #     otherwise
+            }
+            $done = 1;
+        } elsif ($x == $base) {
+            $x -> bone('+', @params); # 0 < base && 0 < x < inf
+            $done = 1;
         }
     }
 
-    elsif ($x -> is_inf("-")) {                         # x = -inf
-        if ($y -> is_inf("+")) {                        #    y = inf
-            $y -> bpi($scale) -> bmul("0.75");          #       3/4 pi
-        } elsif ($y -> is_inf("-")) {                   #    y = -inf
-            $y -> bpi($scale) -> bmul("-0.75");         #       -3/4 pi
-        } elsif ($y >= 0) {                             #    y >= 0
-            $y -> bpi($scale);                          #       pi
-        } else {                                        #    y < 0
-            $y -> bpi($scale) -> bneg();                #       -pi
+    # We now know that the base is either undefined or positive and finite.
+
+    unless ($done) {
+        if ($x -> is_inf()) {   #   x = +/-inf
+            my $sign = defined $base && $base < 1 ? '-' : '+';
+            $x -> binf($sign);
+            $done = 1;
+        } elsif ($x -> is_neg()) { #   -inf < x < 0
+            $x -> bnan();
+            $done = 1;
+        } elsif ($x -> is_one()) { #   x = 1
+            $x -> bzero(@params);
+            $done = 1;
+        } elsif ($x -> is_zero()) { #   x = 0
+            my $sign = defined $base && $base < 1 ? '+' : '-';
+            $x -> binf($sign);
+            $done = 1;
         }
     }
 
-    elsif ($x > 0) {                                    # 0 < x < inf
-        if ($y -> is_inf("+")) {                        #    y = inf
-            $y -> bpi($scale) -> bmul("0.5");           #       pi/2
-        } elsif ($y -> is_inf("-")) {                   #    y = -inf
-            $y -> bpi($scale) -> bmul("-0.5");          #       -pi/2
-        } else {                                        #   -inf < y < inf
-            $y -> bdiv($x, $scale) -> batan($scale);    #       atan(y/x)
+    if ($done) {
+        if ($fallback) {
+            # clear a/p after round, since user did not request it
+            delete $x->{_a};
+            delete $x->{_p};
         }
+        return $x;
     }
 
-    elsif ($x < 0) {                                    # -inf < x < 0
-        my $pi = $class -> bpi($scale);
-        if ($y >= 0) {                                  #    y >= 0
-            $y -> bdiv($x, $scale) -> batan()           #       atan(y/x) + pi
-               -> badd($pi);
-        } else {                                        #    y < 0
-            $y -> bdiv($x, $scale) -> batan()           #       atan(y/x) - pi
-               -> bsub($pi);
+    # when user set globals, they would interfere with our calculation, so
+    # disable them and later re-enable them
+    no strict 'refs';
+    my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
+    my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+    # we also need to disable any set A or P on $x (_find_round_parameters took
+    # them already into account), since these would interfere, too
+    delete $x->{_a}; delete $x->{_p};
+    # need to disable $upgrade in BigInt, to avoid deep recursion
+    local $Math::BigInt::upgrade = undef;
+    local $Math::BigFloat::downgrade = undef;
+
+    # upgrade $x if $x is not a Math::BigFloat (handle BigInt input)
+    # XXX TODO: rebless!
+    if (!$x->isa('Math::BigFloat')) {
+        $x = Math::BigFloat->new($x);
+        $class = ref($x);
+    }
+
+    $done = 0;
+
+    # If the base is defined and an integer, try to calculate integer result
+    # first. This is very fast, and in case the real result was found, we can
+    # stop right here.
+    if (defined $base && $base->is_int() && $x->is_int()) {
+        my $i = $MBI->_copy($x->{_m});
+        $MBI->_lsft($i, $x->{_e}, 10) unless $MBI->_is_zero($x->{_e});
+        my $int = Math::BigInt->bzero();
+        $int->{value} = $i;
+        $int->blog($base->as_number());
+        # if ($exact)
+        if ($base->as_number()->bpow($int) == $x) {
+            # found result, return it
+            $x->{_m} = $int->{value};
+            $x->{_e} = $MBI->_zero();
+            $x->{_es} = '+';
+            $x->bnorm();
+            $done = 1;
         }
     }
 
-    else {                                              # x = 0
-        if ($y > 0) {                                   #    y > 0
-            $y -> bpi($scale) -> bmul("0.5");           #       pi/2
-        } elsif ($y < 0) {                              #    y < 0
-            $y -> bpi($scale) -> bmul("-0.5");          #       -pi/2
-        } else {                                        #    y = 0
-            return $y -> bzero(@r);                     #       0
+    if ($done == 0) {
+        # base is undef, so base should be e (Euler's number), so first calculate the
+        # log to base e (using reduction by 10 (and probably 2)):
+        $class->_log_10($x, $scale);
+
+        # and if a different base was requested, convert it
+        if (defined $base) {
+            $base = Math::BigFloat->new($base) unless $base->isa('Math::BigFloat');
+            # not ln, but some other base (don't modify $base)
+            $x->bdiv($base->copy()->blog(undef, $scale), $scale);
         }
     }
 
-    $y -> round(@r);
+    # shortcut to not run through _find_round_parameters again
+    if (defined $params[0]) {
+        $x->bround($params[0], $params[2]); # then round accordingly
+    } else {
+        $x->bfround($params[1], $params[2]); # then round accordingly
+    }
+    if ($fallback) {
+        # clear a/p after round, since user did not request it
+        delete $x->{_a};
+        delete $x->{_p};
+    }
+    # restore globals
+    $$abr = $ab;
+    $$pbr = $pb;
+
+    $x;
+}
+
+sub bexp {
+    # Calculate e ** X (Euler's number to the power of X)
+    my ($class, $x, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+    return $x if $x->modify('bexp');
+
+    return $x->binf() if $x->{sign} eq '+inf';
+    return $x->bzero() if $x->{sign} eq '-inf';
+
+    # we need to limit the accuracy to protect against overflow
+    my $fallback = 0;
+    my ($scale, @params);
+    ($x, @params) = $x->_find_round_parameters($a, $p, $r);
+
+    # also takes care of the "error in _find_round_parameters?" case
+    return $x if $x->{sign} eq 'NaN';
+
+    # no rounding at all, so must use fallback
+    if (scalar @params == 0) {
+        # simulate old behaviour
+        $params[0] = $class->div_scale(); # and round to it as accuracy
+        $params[1] = undef;               # P = undef
+        $scale = $params[0]+4;            # at least four more for proper round
+        $params[2] = $r;                  # round mode by caller or undef
+        $fallback = 1;                    # to clear a/p afterwards
+    } else {
+        # the 4 below is empirical, and there might be cases where it's not enough...
+        $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
+    }
+
+    return $x->bone(@params) if $x->is_zero();
+
+    if (!$x->isa('Math::BigFloat')) {
+        $x = Math::BigFloat->new($x);
+        $class = ref($x);
+    }
+
+    # when user set globals, they would interfere with our calculation, so
+    # disable them and later re-enable them
+    no strict 'refs';
+    my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
+    my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+    # we also need to disable any set A or P on $x (_find_round_parameters took
+    # them already into account), since these would interfere, too
+    delete $x->{_a};
+    delete $x->{_p};
+    # need to disable $upgrade in BigInt, to avoid deep recursion
+    local $Math::BigInt::upgrade = undef;
+    local $Math::BigFloat::downgrade = undef;
+
+    my $x_org = $x->copy();
 
+    # We use the following Taylor series:
+
+    #           x    x^2   x^3   x^4
+    #  e = 1 + --- + --- + --- + --- ...
+    #           1!    2!    3!    4!
+
+    # The difference for each term is X and N, which would result in:
+    # 2 copy, 2 mul, 2 add, 1 inc, 1 div operations per term
+
+    # But it is faster to compute exp(1) and then raising it to the
+    # given power, esp. if $x is really big and an integer because:
+
+    #  * The numerator is always 1, making the computation faster
+    #  * the series converges faster in the case of x == 1
+    #  * We can also easily check when we have reached our limit: when the
+    #    term to be added is smaller than "1E$scale", we can stop - f.i.
+    #    scale == 5, and we have 1/40320, then we stop since 1/40320 < 1E-5.
+    #  * we can compute the *exact* result by simulating bigrat math:
+
+    #  1   1    gcd(3, 4) = 1    1*24 + 1*6    5
+    #  - + -                  = ---------- =  --
+    #  6   24                      6*24       24
+
+    # We do not compute the gcd() here, but simple do:
+    #  1   1    1*24 + 1*6   30
+    #  - + -  = --------- =  --
+    #  6   24       6*24     144
+
+    # In general:
+    #  a   c    a*d + c*b         and note that c is always 1 and d = (b*f)
+    #  - + -  = ---------
+    #  b   d       b*d
+
+    # This leads to:         which can be reduced by b to:
+    #  a   1     a*b*f + b    a*f + 1
+    #  - + -   = --------- =  -------
+    #  b   b*f     b*b*f        b*f
+
+    # The first terms in the series are:
+
+    # 1     1    1    1    1    1     1     1     13700
+    # -- + -- + -- + -- + -- + --- + --- + ---- = -----
+    # 1     1    2    6   24   120   720   5040   5040
+
+    # Note that we cannot simple reduce 13700/5040 to 685/252, but must keep A and B!
+
+    if ($scale <= 75) {
+        # set $x directly from a cached string form
+        $x->{_m} = $MBI->_new(
+                              "27182818284590452353602874713526624977572470936999595749669676277240766303535476");
+        $x->{sign} = '+';
+        $x->{_es} = '-';
+        $x->{_e} = $MBI->_new(79);
+    } else {
+        # compute A and B so that e = A / B.
+
+        # After some terms we end up with this, so we use it as a starting point:
+        my $A = $MBI->_new("90933395208605785401971970164779391644753259799242");
+        my $F = $MBI->_new(42);
+        my $step = 42;
+
+        # Compute how many steps we need to take to get $A and $B sufficiently big
+        my $steps = _len_to_steps($scale - 4);
+        #    print STDERR "# Doing $steps steps for ", $scale-4, " digits\n";
+        while ($step++ <= $steps) {
+            # calculate $a * $f + 1
+            $A = $MBI->_mul($A, $F);
+            $A = $MBI->_inc($A);
+            # increment f
+            $F = $MBI->_inc($F);
+        }
+        # compute $B as factorial of $steps (this is faster than doing it manually)
+        my $B = $MBI->_fac($MBI->_new($steps));
+
+        #  print "A ", $MBI->_str($A), "\nB ", $MBI->_str($B), "\n";
+
+        # compute A/B with $scale digits in the result (truncate, not round)
+        $A = $MBI->_lsft($A, $MBI->_new($scale), 10);
+        $A = $MBI->_div($A, $B);
+
+        $x->{_m} = $A;
+        $x->{sign} = '+';
+        $x->{_es} = '-';
+        $x->{_e} = $MBI->_new($scale);
+    }
+
+    # $x contains now an estimate of e, with some surplus digits, so we can round
+    if (!$x_org->is_one()) {
+        # Reduce size of fractional part, followup with integer power of two.
+        my $lshift = 0;
+        while ($lshift < 30 && $x_org->bacmp(2 << $lshift) > 0) {
+            $lshift++;
+        }
+        # Raise $x to the wanted power and round it.
+        if ($lshift == 0) {
+            $x->bpow($x_org, @params);
+        } else {
+            my($mul, $rescale) = (1 << $lshift, $scale+1+$lshift);
+            $x->bpow(scalar $x_org->bdiv($mul, $rescale), $rescale)->bpow($mul, @params);
+        }
+    } else {
+        # else just round the already computed result
+        delete $x->{_a};
+        delete $x->{_p};
+        # shortcut to not run through _find_round_parameters again
+        if (defined $params[0]) {
+            $x->bround($params[0], $params[2]); # then round accordingly
+        } else {
+            $x->bfround($params[1], $params[2]); # then round accordingly
+        }
+    }
     if ($fallback) {
-        delete $y->{_a};
-        delete $y->{_p};
+        # clear a/p after round, since user did not request it
+        delete $x->{_a};
+        delete $x->{_p};
     }
+    # restore globals
+    $$abr = $ab;
+    $$pbr = $pb;
 
-    return $y;
+    $x;                         # return modified $x
+}
+
+sub bnok {
+    # Calculate n over k (binomial coefficient or "choose" function) as integer.
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
+
+    return $x if $x->modify('bnok');
+
+    return $x->bnan() if $x->is_nan() || $y->is_nan();
+    return $x->binf() if $x->is_inf();
+
+    my $u = $x->as_int();
+    $u->bnok($y->as_int());
+
+    $x->{_m} = $u->{value};
+    $x->{_e} = $MBI->_zero();
+    $x->{_es} = '+';
+    $x->{sign} = '+';
+    $x->bnorm(@r);
+}
+
+sub bsin {
+    # Calculate a sinus of x.
+    my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+    # taylor:      x^3   x^5   x^7   x^9
+    #    sin = x - --- + --- - --- + --- ...
+    #               3!    5!    7!    9!
+
+    # we need to limit the accuracy to protect against overflow
+    my $fallback = 0;
+    my ($scale, @params);
+    ($x, @params) = $x->_find_round_parameters(@r);
+
+    #         constant object       or error in _find_round_parameters?
+    return $x if $x->modify('bsin') || $x->is_nan();
+
+    return $x->bzero(@r) if $x->is_zero();
+
+    # no rounding at all, so must use fallback
+    if (scalar @params == 0) {
+        # simulate old behaviour
+        $params[0] = $class->div_scale(); # and round to it as accuracy
+        $params[1] = undef;               # disable P
+        $scale = $params[0]+4;            # at least four more for proper round
+        $params[2] = $r[2];               # round mode by caller or undef
+        $fallback = 1;                    # to clear a/p afterwards
+    } else {
+        # the 4 below is empirical, and there might be cases where it is not
+        # enough...
+        $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
+    }
+
+    # when user set globals, they would interfere with our calculation, so
+    # disable them and later re-enable them
+    no strict 'refs';
+    my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
+    my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+    # we also need to disable any set A or P on $x (_find_round_parameters took
+    # them already into account), since these would interfere, too
+    delete $x->{_a};
+    delete $x->{_p};
+    # need to disable $upgrade in BigInt, to avoid deep recursion
+    local $Math::BigInt::upgrade = undef;
+
+    my $last = 0;
+    my $over = $x * $x;         # X ^ 2
+    my $x2 = $over->copy();     # X ^ 2; difference between terms
+    $over->bmul($x);            # X ^ 3 as starting value
+    my $sign = 1;               # start with -=
+    my $below = $class->new(6); my $factorial = $class->new(4);
+    delete $x->{_a};
+    delete $x->{_p};
+
+    my $limit = $class->new("1E-". ($scale-1));
+    #my $steps = 0;
+    while (3 < 5) {
+        # we calculate the next term, and add it to the last
+        # when the next term is below our limit, it won't affect the outcome
+        # anymore, so we stop:
+        my $next = $over->copy()->bdiv($below, $scale);
+        last if $next->bacmp($limit) <= 0;
+
+        if ($sign == 0) {
+            $x->badd($next);
+        } else {
+            $x->bsub($next);
+        }
+        $sign = 1-$sign;        # alternate
+        # calculate things for the next term
+        $over->bmul($x2);                         # $x*$x
+        $below->bmul($factorial); $factorial->binc(); # n*(n+1)
+        $below->bmul($factorial); $factorial->binc(); # n*(n+1)
+    }
+
+    # shortcut to not run through _find_round_parameters again
+    if (defined $params[0]) {
+        $x->bround($params[0], $params[2]); # then round accordingly
+    } else {
+        $x->bfround($params[1], $params[2]); # then round accordingly
+    }
+    if ($fallback) {
+        # clear a/p after round, since user did not request it
+        delete $x->{_a};
+        delete $x->{_p};
+    }
+    # restore globals
+    $$abr = $ab;
+    $$pbr = $pb;
+    $x;
+}
+
+sub bcos {
+    # Calculate a cosinus of x.
+    my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+    # Taylor:      x^2   x^4   x^6   x^8
+    #    cos = 1 - --- + --- - --- + --- ...
+    #               2!    4!    6!    8!
+
+    # we need to limit the accuracy to protect against overflow
+    my $fallback = 0;
+    my ($scale, @params);
+    ($x, @params) = $x->_find_round_parameters(@r);
+
+    #         constant object       or error in _find_round_parameters?
+    return $x if $x->modify('bcos') || $x->is_nan();
+
+    return $x->bone(@r) if $x->is_zero();
+
+    # no rounding at all, so must use fallback
+    if (scalar @params == 0) {
+        # simulate old behaviour
+        $params[0] = $class->div_scale(); # and round to it as accuracy
+        $params[1] = undef;               # disable P
+        $scale = $params[0]+4;            # at least four more for proper round
+        $params[2] = $r[2];               # round mode by caller or undef
+        $fallback = 1;                    # to clear a/p afterwards
+    } else {
+        # the 4 below is empirical, and there might be cases where it is not
+        # enough...
+        $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
+    }
+
+    # when user set globals, they would interfere with our calculation, so
+    # disable them and later re-enable them
+    no strict 'refs';
+    my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
+    my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+    # we also need to disable any set A or P on $x (_find_round_parameters took
+    # them already into account), since these would interfere, too
+    delete $x->{_a}; delete $x->{_p};
+    # need to disable $upgrade in BigInt, to avoid deep recursion
+    local $Math::BigInt::upgrade = undef;
+
+    my $last = 0;
+    my $over = $x * $x;         # X ^ 2
+    my $x2 = $over->copy();     # X ^ 2; difference between terms
+    my $sign = 1;               # start with -=
+    my $below = $class->new(2);
+    my $factorial = $class->new(3);
+    $x->bone();
+    delete $x->{_a};
+    delete $x->{_p};
+
+    my $limit = $class->new("1E-". ($scale-1));
+    #my $steps = 0;
+    while (3 < 5) {
+        # we calculate the next term, and add it to the last
+        # when the next term is below our limit, it won't affect the outcome
+        # anymore, so we stop:
+        my $next = $over->copy()->bdiv($below, $scale);
+        last if $next->bacmp($limit) <= 0;
+
+        if ($sign == 0) {
+            $x->badd($next);
+        } else {
+            $x->bsub($next);
+        }
+        $sign = 1-$sign;        # alternate
+        # calculate things for the next term
+        $over->bmul($x2);                         # $x*$x
+        $below->bmul($factorial); $factorial->binc(); # n*(n+1)
+        $below->bmul($factorial); $factorial->binc(); # n*(n+1)
+    }
+
+    # shortcut to not run through _find_round_parameters again
+    if (defined $params[0]) {
+        $x->bround($params[0], $params[2]); # then round accordingly
+    } else {
+        $x->bfround($params[1], $params[2]); # then round accordingly
+    }
+    if ($fallback) {
+        # clear a/p after round, since user did not request it
+        delete $x->{_a};
+        delete $x->{_p};
+    }
+    # restore globals
+    $$abr = $ab;
+    $$pbr = $pb;
+    $x;
 }
 
 sub batan {
@@ -3342,7 +2703,7 @@ sub batan {
         $self->{_e} = $pi->{_e};
         $self->{_es} = $pi->{_es};
         # -y => -PI/2, +y => PI/2
-        $self->{sign} = substr($self->{sign}, 0, 1);  # "+inf" => "+"
+        $self->{sign} = substr($self->{sign}, 0, 1); # "+inf" => "+"
         $MBI->_div($self->{_m}, $MBI->_new(2));
         return $self;
     }
@@ -3352,7 +2713,7 @@ sub batan {
     # no rounding at all, so must use fallback
     if (scalar @params == 0) {
         # simulate old behaviour
-        $params[0] = $class->div_scale();  # and round to it as accuracy
+        $params[0] = $class->div_scale(); # and round to it as accuracy
         $params[1] = undef;               # disable P
         $scale = $params[0]+4;            # at least four more for proper round
         $params[2] = $r[2];               # round mode by caller or undef
@@ -3380,20 +2741,21 @@ sub batan {
     # calculate PI/2 - atan(1/x):
     my $one = $MBI->_new(1);
     my $pi = undef;
-    if ($self->bacmp($self->copy->bone) >= 0) {
+    if ($self->bacmp($self->copy()->bone) >= 0) {
         # calculate PI/2
         $pi = $class->bpi($scale - 3);
         $MBI->_div($pi->{_m}, $MBI->_new(2));
         # calculate 1/$self:
         my $self_copy = $self->copy();
         # modify $self in place
-        $self->bone(); $self->bdiv($self_copy, $scale);
+        $self->bone();
+        $self->bdiv($self_copy, $scale);
     }
 
     my $fmul = 1;
     foreach my $k (0 .. int($scale / 20)) {
         $fmul *= 2;
-        $self->bdiv($self->copy->bmul($self)->binc->bsqrt($scale + 4)->binc, $scale + 4);
+        $self->bdiv($self->copy()->bmul($self)->binc->bsqrt($scale + 4)->binc, $scale + 4);
     }
 
     # When user set globals, they would interfere with our calculation, so
@@ -3403,18 +2765,20 @@ sub batan {
     my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
     # We also need to disable any set A or P on $self (_find_round_parameters
     # took them already into account), since these would interfere, too
-    delete $self->{_a}; delete $self->{_p};
+    delete $self->{_a};
+    delete $self->{_p};
     # Need to disable $upgrade in BigInt, to avoid deep recursion.
     local $Math::BigInt::upgrade = undef;
 
     my $last = 0;
-    my $over = $self * $self;          # X ^ 2
-    my $self2 = $over->copy();         # X ^ 2; difference between terms
-    $over->bmul($self);                        # X ^ 3 as starting value
-    my $sign = 1;                      # start with -=
+    my $over = $self * $self;   # X ^ 2
+    my $self2 = $over->copy();  # X ^ 2; difference between terms
+    $over->bmul($self);         # X ^ 3 as starting value
+    my $sign = 1;               # start with -=
     my $below = $class->new(3);
     my $two = $class->new(2);
-    delete $self->{_a}; delete $self->{_p};
+    delete $self->{_a};
+    delete $self->{_p};
 
     my $limit = $class->new("1E-". ($scale-1));
     #my $steps = 0;
@@ -3455,1191 +2819,2023 @@ sub batan {
     }
     if ($fallback) {
         # Clear a/p after round, since user did not request it.
-        delete $self->{_a}; delete $self->{_p};
+        delete $self->{_a};
+        delete $self->{_p};
     }
 
     # restore globals
-    $$abr = $ab; $$pbr = $pb;
+    $$abr = $ab;
+    $$pbr = $pb;
     $self;
 }
 
-###############################################################################
-# rounding functions
-
-sub bfround
-  {
-  # precision: round to the $Nth digit left (+$n) or right (-$n) from the '.'
-  # $n == 0 means round to integer
-  # expects and returns normalized numbers!
-  my $x = shift; my $self = ref($x) || $x; $x = $self->new(shift) if !ref($x);
+sub batan2 {
+    # $y -> batan2($x) returns the arcus tangens of $y / $x.
 
-  my ($scale,$mode) = $x->_scale_p(@_);
-  return $x if !defined $scale || $x->modify('bfround'); # no-op
+    # Set up parameters.
+    my ($class, $y, $x, @r) = (ref($_[0]), @_);
 
-  # never round a 0, +-inf, NaN
-  if ($x->is_zero())
-    {
-    $x->{_p} = $scale if !defined $x->{_p} || $x->{_p} < $scale; # -3 < -2
-    return $x; 
+    # Objectify is costly, so avoid it if we can.
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $y, $x, @r) = objectify(2, @_);
     }
-  return $x if $x->{sign} !~ /^[+-]$/;
 
-  # don't round if x already has lower precision
-  return $x if (defined $x->{_p} && $x->{_p} < 0 && $scale < $x->{_p});
+    # Quick exit if $y is read-only.
+    return $y if $y -> modify('batan2');
 
-  $x->{_p} = $scale;                   # remember round in any case
-  delete $x->{_a};                     # and clear A
-  if ($scale < 0)
-    {
-    # round right from the '.'
-
-    return $x if $x->{_es} eq '+';             # e >= 0 => nothing to round
-
-    $scale = -$scale;                          # positive for simplicity
-    my $len = $MBI->_len($x->{_m});            # length of mantissa
-
-    # the following poses a restriction on _e, but if _e is bigger than a
-    # scalar, you got other problems (memory etc) anyway
-    my $dad = -(0+ ($x->{_es}.$MBI->_num($x->{_e})));  # digits after dot
-    my $zad = 0;                               # zeros after dot
-    $zad = $dad - $len if (-$dad < -$len);     # for 0.00..00xxx style
-   
-    # print "scale $scale dad $dad zad $zad len $len\n";
-    # number  bsstr   len zad dad      
-    # 0.123   123e-3   3   0 3
-    # 0.0123  123e-4   3   1 4
-    # 0.001   1e-3      1   2 3
-    # 1.23    123e-2   3   0 2
-    # 1.2345  12345e-4 5   0 4
-
-    # do not round after/right of the $dad
-    return $x if $scale > $dad;                        # 0.123, scale >= 3 => exit
-
-    # round to zero if rounding inside the $zad, but not for last zero like:
-    # 0.0065, scale -2, round last '0' with following '65' (scale == zad case)
-    return $x->bzero() if $scale < $zad;
-    if ($scale == $zad)                        # for 0.006, scale -3 and trunc
-      {
-      $scale = -$len;
-      }
-    else
-      {
-      # adjust round-point to be inside mantissa
-      if ($zad != 0)
-        {
-       $scale = $scale-$zad;
-        }
-      else
-        {
-        my $dbd = $len - $dad; $dbd = 0 if $dbd < 0;   # digits before dot
-       $scale = $dbd+$scale;
-        }
-      }
-    }
-  else
-    {
-    # round left from the '.'
-
-    # 123 => 100 means length(123) = 3 - $scale (2) => 1
-
-    my $dbt = $MBI->_len($x->{_m}); 
-    # digits before dot 
-    my $dbd = $dbt + ($x->{_es} . $MBI->_num($x->{_e}));
-    # should be the same, so treat it as this 
-    $scale = 1 if $scale == 0; 
-    # shortcut if already integer 
-    return $x if $scale == 1 && $dbt <= $dbd; 
-    # maximum digits before dot 
-    ++$dbd;
-
-    if ($scale > $dbd) 
-       { 
-       # not enough digits before dot, so round to zero 
-       return $x->bzero; 
-       }
-    elsif ( $scale == $dbd )
-       { 
-       # maximum 
-       $scale = -$dbt; 
-       } 
-    else
-       { 
-       $scale = $dbd - $scale; 
-       }
-    }
-  # pass sign to bround for rounding modes '+inf' and '-inf'
-  my $m = bless { sign => $x->{sign}, value => $x->{_m} }, 'Math::BigInt';
-  $m->bround($scale,$mode);
-  $x->{_m} = $m->{value};                      # get our mantissa back
-  $x->bnorm();
-  }
-
-sub bround
-  {
-  # accuracy: preserve $N digits, and overwrite the rest with 0's
-  my $x = shift; my $self = ref($x) || $x; $x = $self->new(shift) if !ref($x);
-
-  if (($_[0] || 0) < 0)
-    {
-    require Carp; Carp::croak ('bround() needs positive accuracy');
-    }
+    # Handle all NaN cases.
+    return $y -> bnan() if $x->{sign} eq $nan || $y->{sign} eq $nan;
 
-  my ($scale,$mode) = $x->_scale_a(@_);
-  return $x if !defined $scale || $x->modify('bround');        # no-op
+    # We need to limit the accuracy to protect against overflow.
+    my $fallback = 0;
+    my ($scale, @params);
+    ($y, @params) = $y -> _find_round_parameters(@r);
 
-  # scale is now either $x->{_a}, $accuracy, or the user parameter
-  # test whether $x already has lower accuracy, do nothing in this case 
-  # but do round if the accuracy is the same, since a math operation might
-  # want to round a number with A=5 to 5 digits afterwards again
-  return $x if defined $x->{_a} && $x->{_a} < $scale;
+    # Error in _find_round_parameters?
+    return $y if $y->is_nan();
 
-  # scale < 0 makes no sense
-  # scale == 0 => keep all digits
-  # never round a +-inf, NaN
-  return $x if ($scale <= 0) || $x->{sign} !~ /^[+-]$/;
+    # No rounding at all, so must use fallback.
+    if (scalar @params == 0) {
+        # Simulate old behaviour
+        $params[0] = $class -> div_scale(); # and round to it as accuracy
+        $params[1] = undef;                 # disable P
+        $scale = $params[0] + 4; # at least four more for proper round
+        $params[2] = $r[2];      # round mode by caller or undef
+        $fallback = 1;           # to clear a/p afterwards
+    } else {
+        # The 4 below is empirical, and there might be cases where it is not
+        # enough ...
+        $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
+    }
 
-  # 1: never round a 0
-  # 2: if we should keep more digits than the mantissa has, do nothing
-  if ($x->is_zero() || $MBI->_len($x->{_m}) <= $scale)
-    {
-    $x->{_a} = $scale if !defined $x->{_a} || $x->{_a} > $scale;
-    return $x; 
+    if ($x -> is_inf("+")) {                    # x = inf
+        if ($y -> is_inf("+")) {                #    y = inf
+            $y -> bpi($scale) -> bmul("0.25");  #       pi/4
+        } elsif ($y -> is_inf("-")) {           #    y = -inf
+            $y -> bpi($scale) -> bmul("-0.25"); #       -pi/4
+        } else {                                #    -inf < y < inf
+            return $y -> bzero(@r);             #       0
+        }
+    } elsif ($x -> is_inf("-")) {               # x = -inf
+        if ($y -> is_inf("+")) {                #    y = inf
+            $y -> bpi($scale) -> bmul("0.75");  #       3/4 pi
+        } elsif ($y -> is_inf("-")) {           #    y = -inf
+            $y -> bpi($scale) -> bmul("-0.75"); #       -3/4 pi
+        } elsif ($y >= 0) {                     #    y >= 0
+            $y -> bpi($scale);                  #       pi
+        } else {                                #    y < 0
+            $y -> bpi($scale) -> bneg();        #       -pi
+        }
+    } elsif ($x > 0) {                               # 0 < x < inf
+        if ($y -> is_inf("+")) {                     #    y = inf
+            $y -> bpi($scale) -> bmul("0.5");        #       pi/2
+        } elsif ($y -> is_inf("-")) {                #    y = -inf
+            $y -> bpi($scale) -> bmul("-0.5");       #       -pi/2
+        } else {                                     #   -inf < y < inf
+            $y -> bdiv($x, $scale) -> batan($scale); #       atan(y/x)
+        }
+    } elsif ($x < 0) {                        # -inf < x < 0
+        my $pi = $class -> bpi($scale);
+        if ($y >= 0) {                        #    y >= 0
+            $y -> bdiv($x, $scale) -> batan() #       atan(y/x) + pi
+               -> badd($pi);
+        } else {                              #    y < 0
+            $y -> bdiv($x, $scale) -> batan() #       atan(y/x) - pi
+               -> bsub($pi);
+        }
+    } else {                                   # x = 0
+        if ($y > 0) {                          #    y > 0
+            $y -> bpi($scale) -> bmul("0.5");  #       pi/2
+        } elsif ($y < 0) {                     #    y < 0
+            $y -> bpi($scale) -> bmul("-0.5"); #       -pi/2
+        } else {                               #    y = 0
+            return $y -> bzero(@r);            #       0
+        }
     }
 
-  # pass sign to bround for '+inf' and '-inf' rounding modes
-  my $m = bless { sign => $x->{sign}, value => $x->{_m} }, 'Math::BigInt';
+    $y -> round(@r);
+
+    if ($fallback) {
+        delete $y->{_a};
+        delete $y->{_p};
+    }
 
-  $m->bround($scale,$mode);            # round mantissa
-  $x->{_m} = $m->{value};              # get our mantissa back
-  $x->{_a} = $scale;                   # remember rounding
-  delete $x->{_p};                     # and clear P
-  $x->bnorm();                         # del trailing zeros gen. by bround()
-  }
+    return $y;
+}
+##############################################################################
 
-sub bfloor
-  {
-  # round towards minus infinity
-  my ($self,$x,$a,$p,$r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
+sub bsqrt {
+    # calculate square root
+    my ($class, $x, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
 
-  return $x if $x->modify('bfloor');
-   
-  return $x if $x->{sign} !~ /^[+-]$/; # nan, +inf, -inf
+    return $x if $x->modify('bsqrt');
 
-  # if $x has digits after dot
-  if ($x->{_es} eq '-')
-    {
-    $x->{_m} = $MBI->_rsft($x->{_m},$x->{_e},10); # cut off digits after dot
-    $x->{_e} = $MBI->_zero();                  # trunc/norm    
-    $x->{_es} = '+';                           # abs e
-    $MBI->_inc($x->{_m}) if $x->{sign} eq '-'; # increment if negative
-    }
-  $x->round($a,$p,$r);
-  }
+    return $x->bnan() if $x->{sign} !~ /^[+]/; # NaN, -inf or < 0
+    return $x if $x->{sign} eq '+inf';         # sqrt(inf) == inf
+    return $x->round($a, $p, $r) if $x->is_zero() || $x->is_one();
 
-sub bceil
-  {
-  # round towards plus infinity
-  my ($self,$x,$a,$p,$r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
+    # we need to limit the accuracy to protect against overflow
+    my $fallback = 0;
+    my (@params, $scale);
+    ($x, @params) = $x->_find_round_parameters($a, $p, $r);
 
-  return $x if $x->modify('bceil');
-  return $x if $x->{sign} !~ /^[+-]$/; # nan, +inf, -inf
+    return $x if $x->is_nan();  # error in _find_round_parameters?
 
-  # if $x has digits after dot
-  if ($x->{_es} eq '-')
-    {
-    $x->{_m} = $MBI->_rsft($x->{_m},$x->{_e},10); # cut off digits after dot
-    $x->{_e} = $MBI->_zero();                  # trunc/norm    
-    $x->{_es} = '+';                           # abs e
-    if ($x->{sign} eq '+') {
-        $MBI->_inc($x->{_m});                   # increment if positive
+    # no rounding at all, so must use fallback
+    if (scalar @params == 0) {
+        # simulate old behaviour
+        $params[0] = $class->div_scale(); # and round to it as accuracy
+        $scale = $params[0]+4;            # at least four more for proper round
+        $params[2] = $r;                  # round mode by caller or undef
+        $fallback = 1;                    # to clear a/p afterwards
     } else {
-        $x->{sign} = '+' if $MBI->_is_zero($x->{_m});   # avoid -0
-    }
+        # the 4 below is empirical, and there might be cases where it is not
+        # enough...
+        $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
     }
-  $x->round($a,$p,$r);
-  }
 
-sub bint
-  {
-  # round towards zero
-  my ($self,$x,$a,$p,$r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
+    # when user set globals, they would interfere with our calculation, so
+    # disable them and later re-enable them
+    no strict 'refs';
+    my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
+    my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+    # we also need to disable any set A or P on $x (_find_round_parameters took
+    # them already into account), since these would interfere, too
+    delete $x->{_a};
+    delete $x->{_p};
+    # need to disable $upgrade in BigInt, to avoid deep recursion
+    local $Math::BigInt::upgrade = undef; # should be really parent class vs MBI
+
+    my $i = $MBI->_copy($x->{_m});
+    $MBI->_lsft($i, $x->{_e}, 10) unless $MBI->_is_zero($x->{_e});
+    my $xas = Math::BigInt->bzero();
+    $xas->{value} = $i;
+
+    my $gs = $xas->copy()->bsqrt(); # some guess
+
+    if (($x->{_es} ne '-')           # guess can't be accurate if there are
+        # digits after the dot
+        && ($xas->bacmp($gs * $gs) == 0)) # guess hit the nail on the head?
+    {
+        # exact result, copy result over to keep $x
+        $x->{_m} = $gs->{value};
+        $x->{_e} = $MBI->_zero();
+        $x->{_es} = '+';
+        $x->bnorm();
+        # shortcut to not run through _find_round_parameters again
+        if (defined $params[0]) {
+            $x->bround($params[0], $params[2]); # then round accordingly
+        } else {
+            $x->bfround($params[1], $params[2]); # then round accordingly
+        }
+        if ($fallback) {
+            # clear a/p after round, since user did not request it
+            delete $x->{_a};
+            delete $x->{_p};
+        }
+        # re-enable A and P, upgrade is taken care of by "local"
+        ${"$class\::accuracy"} = $ab;
+        ${"$class\::precision"} = $pb;
+        return $x;
+    }
 
-  return $x if $x->modify('bint');
-  return $x if $x->{sign} !~ /^[+-]$/;  # nan, +inf, -inf
+    # sqrt(2) = 1.4 because sqrt(2*100) = 1.4*10; so we can increase the accuracy
+    # of the result by multiplying the input by 100 and then divide the integer
+    # result of sqrt(input) by 10. Rounding afterwards returns the real result.
 
-  # if $x has digits after the decimal point
-  if ($x->{_es} eq '-')
-    {
-    $x->{_m} = $MBI->_rsft($x->{_m},$x->{_e},10); # cut off digits after dot
-    $x->{_e} = $MBI->_zero();                     # truncate/normalize
-    $x->{_es} = '+';                              # abs e
-    $x->{sign} = '+' if $MBI->_is_zero($x->{_m}); # avoid -0
-    }
-  $x->round($a,$p,$r);
-  }
-
-sub brsft
-  {
-  # shift right by $y (divide by power of $n)
-  
-  # set up parameters
-  my ($self,$x,$y,$n,$a,$p,$r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,$n,$a,$p,$r) = objectify(2,@_);
-    }
+    # The following steps will transform 123.456 (in $x) into 123456 (in $y1)
+    my $y1 = $MBI->_copy($x->{_m});
 
-  return $x if $x->modify('brsft');
-  return $x if $x->{sign} !~ /^[+-]$/; # nan, +inf, -inf
+    my $length = $MBI->_len($y1);
 
-  $n = 2 if !defined $n; $n = $self->new($n);
+    # Now calculate how many digits the result of sqrt(y1) would have
+    my $digits = int($length / 2);
 
-  # negative amount?
-  return $x->blsft($y->copy()->babs(),$n) if $y->{sign} =~ /^-/;
+    # But we need at least $scale digits, so calculate how many are missing
+    my $shift = $scale - $digits;
 
-  # the following call to bdiv() will return either quo or (quo,remainder):
-  $x->bdiv($n->bpow($y),$a,$p,$r,$y);
-  }
+    # This happens if the input had enough digits
+    # (we take care of integer guesses above)
+    $shift = 0 if $shift < 0;
 
-sub blsft
-  {
-  # shift left by $y (multiply by power of $n)
-  
-  # set up parameters
-  my ($self,$x,$y,$n,$a,$p,$r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,$n,$a,$p,$r) = objectify(2,@_);
-    }
+    # Multiply in steps of 100, by shifting left two times the "missing" digits
+    my $s2 = $shift * 2;
 
-  return $x if $x->modify('blsft');
-  return $x if $x->{sign} !~ /^[+-]$/; # nan, +inf, -inf
+    # We now make sure that $y1 has the same odd or even number of digits than
+    # $x had. So when _e of $x is odd, we must shift $y1 by one digit left,
+    # because we always must multiply by steps of 100 (sqrt(100) is 10) and not
+    # steps of 10. The length of $x does not count, since an even or odd number
+    # of digits before the dot is not changed by adding an even number of digits
+    # after the dot (the result is still odd or even digits long).
+    $s2++ if $MBI->_is_odd($x->{_e});
 
-  $n = 2 if !defined $n; $n = $self->new($n);
+    $MBI->_lsft($y1, $MBI->_new($s2), 10);
 
-  # negative amount?
-  return $x->brsft($y->copy()->babs(),$n) if $y->{sign} =~ /^-/;
+    # now take the square root and truncate to integer
+    $y1 = $MBI->_sqrt($y1);
 
-  $x->bmul($n->bpow($y),$a,$p,$r,$y);
-  }
+    # By "shifting" $y1 right (by creating a negative _e) we calculate the final
+    # result, which is than later rounded to the desired scale.
 
-###############################################################################
+    # calculate how many zeros $x had after the '.' (or before it, depending
+    # on sign of $dat, the result should have half as many:
+    my $dat = $MBI->_num($x->{_e});
+    $dat = -$dat if $x->{_es} eq '-';
+    $dat += $length;
 
-sub DESTROY
-  {
-  # going through AUTOLOAD for every DESTROY is costly, avoid it by empty sub
-  }
-
-sub AUTOLOAD
-  {
-  # make fxxx and bxxx both work by selectively mapping fxxx() to MBF::bxxx()
-  # or falling back to MBI::bxxx()
-  my $name = $AUTOLOAD;
-
-  $name =~ s/(.*):://; # split package
-  my $c = $1 || $class;
-  no strict 'refs';
-  $c->import() if $IMPORT == 0;
-  if (!_method_alias($name))
-    {
-    if (!defined $name)
-      {
-      # delayed load of Carp and avoid recursion       
-      require Carp;
-      Carp::croak ("$c: Can't call a method without name");
-      }
-    if (!_method_hand_up($name))
-      {
-      # delayed load of Carp and avoid recursion       
-      require Carp;
-      Carp::croak ("Can't call $c\-\>$name, not a valid method");
-      }
-    # try one level up, but subst. bxxx() for fxxx() since MBI only got bxxx()
-    $name =~ s/^f/b/;
-    return &{"Math::BigInt"."::$name"}(@_);
-    }
-  my $bname = $name; $bname =~ s/^f/b/;
-  $c .= "::$name";
-  *{$c} = \&{$bname};
-  &{$c};       # uses @_
-  }
-
-sub exponent
-  {
-  # return a copy of the exponent
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
-
-  if ($x->{sign} !~ /^[+-]$/)
-    {
-    my $s = $x->{sign}; $s =~ s/^[+-]//;
-    return Math::BigInt->new($s);              # -inf, +inf => +inf
-    }
-  Math::BigInt->new( $x->{_es} . $MBI->_str($x->{_e}));
-  }
-
-sub mantissa
-  {
-  # return a copy of the mantissa
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
-  if ($x->{sign} !~ /^[+-]$/)
-    {
-    my $s = $x->{sign}; $s =~ s/^[+]//;
-    return Math::BigInt->new($s);              # -inf, +inf => +inf
+    if ($dat > 0) {
+        # no zeros after the dot (e.g. 1.23, 0.49 etc)
+        # preserve half as many digits before the dot than the input had
+        # (but round this "up")
+        $dat = int(($dat+1)/2);
+    } else {
+        $dat = int(($dat)/2);
+    }
+    $dat -= $MBI->_len($y1);
+    if ($dat < 0) {
+        $dat = abs($dat);
+        $x->{_e} = $MBI->_new($dat);
+        $x->{_es} = '-';
+    } else {
+        $x->{_e} = $MBI->_new($dat);
+        $x->{_es} = '+';
     }
-  my $m = Math::BigInt->new( $MBI->_str($x->{_m}));
-  $m->bneg() if $x->{sign} eq '-';
+    $x->{_m} = $y1;
+    $x->bnorm();
 
-  $m;
-  }
+    # shortcut to not run through _find_round_parameters again
+    if (defined $params[0]) {
+        $x->bround($params[0], $params[2]); # then round accordingly
+    } else {
+        $x->bfround($params[1], $params[2]); # then round accordingly
+    }
+    if ($fallback) {
+        # clear a/p after round, since user did not request it
+        delete $x->{_a};
+        delete $x->{_p};
+    }
+    # restore globals
+    $$abr = $ab;
+    $$pbr = $pb;
+    $x;
+}
 
-sub parts
-  {
-  # return a copy of both the exponent and the mantissa
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
+sub broot {
+    # calculate $y'th root of $x
 
-  if ($x->{sign} !~ /^[+-]$/)
-    {
-    my $s = $x->{sign}; $s =~ s/^[+]//; my $se = $s; $se =~ s/^[-]//;
-    return ($self->new($s),$self->new($se)); # +inf => inf and -inf,+inf => inf
+    # set up parameters
+    my ($class, $x, $y, $a, $p, $r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, $a, $p, $r) = objectify(2, @_);
     }
-  my $m = Math::BigInt->bzero();
-  $m->{value} = $MBI->_copy($x->{_m});
-  $m->bneg() if $x->{sign} eq '-';
-  ($m, Math::BigInt->new( $x->{_es} . $MBI->_num($x->{_e}) ));
-  }
 
-##############################################################################
-# private stuff (internal use only)
-
-sub import
-  {
-  my $self = shift;
-  my $l = scalar @_;
-  my $lib = ''; my @a;
-  my $lib_kind = 'try';
-  $IMPORT=1;
-  for ( my $i = 0; $i < $l ; $i++)
-    {
-    if ( $_[$i] eq ':constant' )
-      {
-      # This causes overlord er load to step in. 'binary' and 'integer'
-      # are handled by BigInt.
-      overload::constant float => sub { $self->new(shift); }; 
-      }
-    elsif ($_[$i] eq 'upgrade')
-      {
-      # this causes upgrading
-      $upgrade = $_[$i+1];             # or undef to disable
-      $i++;
-      }
-    elsif ($_[$i] eq 'downgrade')
-      {
-      # this causes downgrading
-      $downgrade = $_[$i+1];           # or undef to disable
-      $i++;
-      }
-    elsif ($_[$i] =~ /^(lib|try|only)\z/)
-      {
-      # alternative library
-      $lib = $_[$i+1] || '';           # default Calc
-      $lib_kind = $1;                  # lib, try or only
-      $i++;
-      }
-    elsif ($_[$i] eq 'with')
-      {
-      # alternative class for our private parts()
-      # XXX: no longer supported
-      # $MBI = $_[$i+1] || 'Math::BigInt';
-      $i++;
-      }
-    else
-      {
-      push @a, $_[$i];
-      }
-    }
-
-  $lib =~ tr/a-zA-Z0-9,://cd;          # restrict to sane characters
-  # let use Math::BigInt lib => 'GMP'; use Math::BigFloat; still work
-  my $mbilib = eval { Math::BigInt->config()->{lib} };
-  if ((defined $mbilib) && ($MBI eq 'Math::BigInt::Calc'))
-    {
-    # MBI already loaded
-    Math::BigInt->import( $lib_kind, "$lib,$mbilib", 'objectify');
-    }
-  else
-    {
-    # MBI not loaded, or with ne "Math::BigInt::Calc"
-    $lib .= ",$mbilib" if defined $mbilib;
-    $lib =~ s/^,//;                            # don't leave empty 
-    
-    # replacement library can handle lib statement, but also could ignore it
-    
-    # Perl < 5.6.0 dies with "out of memory!" when eval() and ':constant' is
-    # used in the same script, or eval inside import(). So we require MBI:
-    require Math::BigInt;
-    Math::BigInt->import( $lib_kind => $lib, 'objectify' );
-    }
-  if ($@)
-    {
-    require Carp; Carp::croak ("Couldn't load $lib: $! $@");
-    }
-  # find out which one was actually loaded
-  $MBI = Math::BigInt->config()->{lib};
+    return $x if $x->modify('broot');
 
-  # register us with MBI to get notified of future lib changes
-  Math::BigInt::_register_callback( $self, sub { $MBI = $_[0]; } );
+    # NaN handling: $x ** 1/0, x or y NaN, or y inf/-inf or y == 0
+    return $x->bnan() if $x->{sign} !~ /^\+/ || $y->is_zero() ||
+      $y->{sign} !~ /^\+$/;
 
-  $self->export_to_level(1,$self,@a);          # export wanted functions
-  }
+    return $x if $x->is_zero() || $x->is_one() || $x->is_inf() || $y->is_one();
 
-sub bnorm
-  {
-  # adjust m and e so that m is smallest possible
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+    # we need to limit the accuracy to protect against overflow
+    my $fallback = 0;
+    my (@params, $scale);
+    ($x, @params) = $x->_find_round_parameters($a, $p, $r);
 
-  return $x if $x->{sign} !~ /^[+-]$/;         # inf, nan etc
+    return $x if $x->is_nan();  # error in _find_round_parameters?
 
-  my $zeros = $MBI->_zeros($x->{_m});          # correct for trailing zeros
-  if ($zeros != 0)
-    {
-    my $z = $MBI->_new($zeros);
-    $x->{_m} = $MBI->_rsft ($x->{_m}, $z, 10);
-    if ($x->{_es} eq '-')
-      {
-      if ($MBI->_acmp($x->{_e},$z) >= 0)
-        {
-        $x->{_e} = $MBI->_sub ($x->{_e}, $z);
-        $x->{_es} = '+' if $MBI->_is_zero($x->{_e});
+    # no rounding at all, so must use fallback
+    if (scalar @params == 0) {
+        # simulate old behaviour
+        $params[0] = $class->div_scale(); # and round to it as accuracy
+        $scale = $params[0]+4;            # at least four more for proper round
+        $params[2] = $r;                  # round mode by caller or undef
+        $fallback = 1;                    # to clear a/p afterwards
+    } else {
+        # the 4 below is empirical, and there might be cases where it is not
+        # enough...
+        $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
+    }
+
+    # when user set globals, they would interfere with our calculation, so
+    # disable them and later re-enable them
+    no strict 'refs';
+    my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
+    my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+    # we also need to disable any set A or P on $x (_find_round_parameters took
+    # them already into account), since these would interfere, too
+    delete $x->{_a};
+    delete $x->{_p};
+    # need to disable $upgrade in BigInt, to avoid deep recursion
+    local $Math::BigInt::upgrade = undef; # should be really parent class vs MBI
+
+    # remember sign and make $x positive, since -4 ** (1/2) => -2
+    my $sign = 0;
+    $sign = 1 if $x->{sign} eq '-';
+    $x->{sign} = '+';
+
+    my $is_two = 0;
+    if ($y->isa('Math::BigFloat')) {
+        $is_two = ($y->{sign} eq '+' && $MBI->_is_two($y->{_m}) && $MBI->_is_zero($y->{_e}));
+    } else {
+        $is_two = ($y == 2);
+    }
+
+    # normal square root if $y == 2:
+    if ($is_two) {
+        $x->bsqrt($scale+4);
+    } elsif ($y->is_one('-')) {
+        # $x ** -1 => 1/$x
+        my $u = $class->bone()->bdiv($x, $scale);
+        # copy private parts over
+        $x->{_m} = $u->{_m};
+        $x->{_e} = $u->{_e};
+        $x->{_es} = $u->{_es};
+    } else {
+        # calculate the broot() as integer result first, and if it fits, return
+        # it rightaway (but only if $x and $y are integer):
+
+        my $done = 0;           # not yet
+        if ($y->is_int() && $x->is_int()) {
+            my $i = $MBI->_copy($x->{_m});
+            $MBI->_lsft($i, $x->{_e}, 10) unless $MBI->_is_zero($x->{_e});
+            my $int = Math::BigInt->bzero();
+            $int->{value} = $i;
+            $int->broot($y->as_number());
+            # if ($exact)
+            if ($int->copy()->bpow($y) == $x) {
+                # found result, return it
+                $x->{_m} = $int->{value};
+                $x->{_e} = $MBI->_zero();
+                $x->{_es} = '+';
+                $x->bnorm();
+                $done = 1;
+            }
         }
-      else
-        {
-        $x->{_e} = $MBI->_sub ( $MBI->_copy($z), $x->{_e});
-        $x->{_es} = '+';
+        if ($done == 0) {
+            my $u = $class->bone()->bdiv($y, $scale+4);
+            delete $u->{_a}; delete $u->{_p}; # otherwise it conflicts
+            $x->bpow($u, $scale+4);            # el cheapo
         }
-      }
-    else
-      {
-      $x->{_e} = $MBI->_add ($x->{_e}, $z);
-      }
     }
-  else
-    {
-    # $x can only be 0Ey if there are no trailing zeros ('0' has 0 trailing
-    # zeros). So, for something like 0Ey, set y to 1, and -0 => +0
-    $x->{sign} = '+', $x->{_es} = '+', $x->{_e} = $MBI->_one()
-     if $MBI->_is_zero($x->{_m});
+    $x->bneg() if $sign == 1;
+
+    # shortcut to not run through _find_round_parameters again
+    if (defined $params[0]) {
+        $x->bround($params[0], $params[2]); # then round accordingly
+    } else {
+        $x->bfround($params[1], $params[2]); # then round accordingly
     }
+    if ($fallback) {
+        # clear a/p after round, since user did not request it
+        delete $x->{_a};
+        delete $x->{_p};
+    }
+    # restore globals
+    $$abr = $ab;
+    $$pbr = $pb;
+    $x;
+}
 
-  $x;                                  # MBI bnorm is no-op, so do not call it
-  } 
-##############################################################################
+sub bfac {
+    # (BFLOAT or num_str, BFLOAT or num_str) return BFLOAT
+    # compute factorial number, modifies first argument
 
-sub as_hex
-  {
-  # return number as hexadecimal string (only for integers defined)
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
+    # set up parameters
+    my ($class, $x, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    ($class, $x, @r) = objectify(1, @_) if !ref($x);
 
-  return $x->bstr() if $x->{sign} !~ /^[+-]$/;  # inf, nan etc
-  return '0x0' if $x->is_zero();
+    # inf => inf
+    return $x if $x->modify('bfac') || $x->{sign} eq '+inf';
 
-  return $nan if $x->{_es} ne '+';             # how to do 1e-1 in hex!?
+    return $x->bnan()
+      if (($x->{sign} ne '+') || # inf, NaN, <0 etc => NaN
+          ($x->{_es} ne '+'));   # digits after dot?
 
-  my $z = $MBI->_copy($x->{_m});
-  if (! $MBI->_is_zero($x->{_e}))              # > 0 
-    {
-    $MBI->_lsft( $z, $x->{_e},10);
+    # use BigInt's bfac() for faster calc
+    if (! $MBI->_is_zero($x->{_e})) {
+        $MBI->_lsft($x->{_m}, $x->{_e}, 10); # change 12e1 to 120e0
+        $x->{_e} = $MBI->_zero();           # normalize
+        $x->{_es} = '+';
     }
-  $z = Math::BigInt->new( $x->{sign} . $MBI->_num($z));
-  $z->as_hex();
-  }
-
-sub as_bin
-  {
-  # return number as binary digit string (only for integers defined)
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
+    $MBI->_fac($x->{_m});       # calculate factorial
+    $x->bnorm()->round(@r);     # norm again and round result
+}
 
-  return $x->bstr() if $x->{sign} !~ /^[+-]$/;  # inf, nan etc
-  return '0b0' if $x->is_zero();
+sub blsft {
+    # shift left by $y (multiply by $b ** $y)
 
-  return $nan if $x->{_es} ne '+';             # how to do 1e-1 in hex!?
+    # set up parameters
+    my ($class, $x, $y, $b, $a, $p, $r) = (ref($_[0]), @_);
 
-  my $z = $MBI->_copy($x->{_m});
-  if (! $MBI->_is_zero($x->{_e}))              # > 0 
-    {
-    $MBI->_lsft( $z, $x->{_e},10);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, $b, $a, $p, $r) = objectify(2, @_);
     }
-  $z = Math::BigInt->new( $x->{sign} . $MBI->_num($z));
-  $z->as_bin();
-  }
 
-sub as_oct
-  {
-  # return number as octal digit string (only for integers defined)
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
+    return $x if $x -> modify('blsft');
+    return $x if $x -> {sign} !~ /^[+-]$/; # nan, +inf, -inf
 
-  return $x->bstr() if $x->{sign} !~ /^[+-]$/;  # inf, nan etc
-  return '0' if $x->is_zero();
+    $b = 2 if !defined $b;
+    $b = $class -> new($b) unless ref($b) && $b -> isa($class);
 
-  return $nan if $x->{_es} ne '+';             # how to do 1e-1 in hex!?
+    return $x -> bnan() if $x -> is_nan() || $y -> is_nan() || $b -> is_nan();
 
-  my $z = $MBI->_copy($x->{_m});
-  if (! $MBI->_is_zero($x->{_e}))              # > 0 
-    {
-    $MBI->_lsft( $z, $x->{_e},10);
-    }
-  $z = Math::BigInt->new( $x->{sign} . $MBI->_num($z));
-  $z->as_oct();
-  }
+    # shift by a negative amount?
+    return $x -> brsft($y -> copy() -> babs(), $b) if $y -> {sign} =~ /^-/;
 
-sub as_number
-  {
-  # return copy as a bigint representation of this BigFloat number
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
-
-  return $x if $x->modify('as_number');
+    $x -> bmul($b -> bpow($y), $a, $p, $r, $y);
+}
 
-  if (!$x->isa('Math::BigFloat'))
-    {
-    # if the object can as_number(), use it
-    return $x->as_number() if $x->can('as_number');
-    # otherwise, get us a float and then a number
-    $x = $x->can('as_float') ? $x->as_float() : $self->new(0+"$x");
-    }
+sub brsft {
+    # shift right by $y (divide $b ** $y)
 
-  return Math::BigInt->binf($x->sign()) if $x->is_inf();
-  return Math::BigInt->bnan()           if $x->is_nan();
+    # set up parameters
+    my ($class, $x, $y, $b, $a, $p, $r) = (ref($_[0]), @_);
 
-  my $z = $MBI->_copy($x->{_m});
-  if ($x->{_es} eq '-')                        # < 0
-    {
-    $MBI->_rsft( $z, $x->{_e},10);
-    } 
-  elsif (! $MBI->_is_zero($x->{_e}))   # > 0 
-    {
-    $MBI->_lsft( $z, $x->{_e},10);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, $b, $a, $p, $r) = objectify(2, @_);
     }
-  $z = Math::BigInt->new( $x->{sign} . $MBI->_str($z));
-  $z;
-  }
 
-sub length
-  {
-  my $x = shift;
-  my $class = ref($x) || $x;
-  $x = $class->new(shift) unless ref($x);
+    return $x if $x -> modify('brsft');
+    return $x if $x -> {sign} !~ /^[+-]$/; # nan, +inf, -inf
 
-  return 1 if $MBI->_is_zero($x->{_m});
+    $b = 2 if !defined $b;
+    $b = $class -> new($b) unless ref($b) && $b -> isa($class);
 
-  my $len = $MBI->_len($x->{_m});
-  $len += $MBI->_num($x->{_e}) if $x->{_es} eq '+';
-  if (wantarray())
-    {
-    my $t = 0;
-    $t = $MBI->_num($x->{_e}) if $x->{_es} eq '-';
-    return ($len, $t);
-    }
-  $len;
-  }
+    return $x -> bnan() if $x -> is_nan() || $y -> is_nan() || $b -> is_nan();
 
-sub from_hex {
-    my $self    = shift;
-    my $selfref = ref $self;
-    my $class   = $selfref || $self;
+    # shift by a negative amount?
+    return $x -> blsft($y -> copy() -> babs(), $b) if $y -> {sign} =~ /^-/;
 
-    my $str = shift;
+    # the following call to bdiv() will return either quotient (scalar context)
+    # or quotient and remainder (list context).
+    $x -> bdiv($b -> bpow($y), $a, $p, $r, $y);
+}
 
-    # If called as a class method, initialize a new object.
+###############################################################################
+# Bitwise methods
+###############################################################################
 
-    $self = $class -> bzero() unless $selfref;
+sub band {
+    my $x     = shift;
+    my $xref  = ref($x);
+    my $class = $xref || $x;
 
-    if ($str =~ s/
-                     ^
+    Carp::croak 'band() is an instance method, not a class method' unless $xref;
+    Carp::croak 'Not enough arguments for band()' if @_ < 1;
 
-                     # sign
-                     ( [+-]? )
+    return if $x -> modify('band');
 
-                     # optional "hex marker"
-                     (?: 0? x )?
+    my $y = shift;
+    $y = $class -> new($y) unless ref($y);
 
-                     # significand using the hex digits 0..9 and a..f
-                     (
-                         [0-9a-fA-F]+ (?: _ [0-9a-fA-F]+ )*
-                         (?:
-                             \.
-                             (?: [0-9a-fA-F]+ (?: _ [0-9a-fA-F]+ )* )?
-                         )?
-                     |
-                         \.
-                         [0-9a-fA-F]+ (?: _ [0-9a-fA-F]+ )*
-                     )
+    my @r = @_;
 
-                     # exponent (power of 2) using decimal digits
-                     (?:
-                         [Pp]
-                         ( [+-]? )
-                         ( \d+ (?: _ \d+ )* )
-                     )?
+    my $xtmp = Math::BigInt -> new($x -> bint());   # to Math::BigInt
+    $xtmp -> band($y);
+    $xtmp = $class -> new($xtmp);                   # back to Math::BigFloat
 
-                     $
-                 //x)
-    {
-        my $s_sign  = $1 || '+';
-        my $s_value = $2;
-        my $e_sign  = $3 || '+';
-        my $e_value = $4 || '0';
-        $s_value =~ tr/_//d;
-        $e_value =~ tr/_//d;
+    $x -> {sign} = $xtmp -> {sign};
+    $x -> {_m}   = $xtmp -> {_m};
+    $x -> {_es}  = $xtmp -> {_es};
+    $x -> {_e}   = $xtmp -> {_e};
 
-        # The significand must be multiplied by 2 raised to this exponent.
+    return $x -> round(@r);
+}
 
-        my $two_expon = $class -> new($e_value);
-        $two_expon -> bneg() if $e_sign eq '-';
+sub bior {
+    my $x     = shift;
+    my $xref  = ref($x);
+    my $class = $xref || $x;
 
-        # If there is a dot in the significand, remove it and adjust the
-        # exponent according to the number of digits in the fraction part of
-        # the significand. Since the digits in the significand are in base 16,
-        # but the exponent is only in base 2, multiply the exponent adjustment
-        # value by log(16) / log(2) = 4.
+    Carp::croak 'bior() is an instance method, not a class method' unless $xref;
+    Carp::croak 'Not enough arguments for bior()' if @_ < 1;
 
-        my $idx = index($s_value, '.');
-        if ($idx >= 0) {
-            substr($s_value, $idx, 1) = '';
-            $two_expon -= $class -> new(CORE::length($s_value))
-                                 -> bsub($idx)
-                                 -> bmul("4");
-        }
+    return if $x -> modify('bior');
 
-        $self -> {sign} = $s_sign;
-        $self -> {_m}   = $MBI -> _from_hex('0x' . $s_value);
+    my $y = shift;
+    $y = $class -> new($y) unless ref($y);
 
-        if ($two_expon > 0) {
-            my $factor = $class -> new("2") -> bpow($two_expon);
-            $self -> bmul($factor);
-        } elsif ($two_expon < 0) {
-            my $factor = $class -> new("0.5") -> bpow(-$two_expon);
-            $self -> bmul($factor);
-        }
+    my @r = @_;
 
-        return $self;
-    }
+    my $xtmp = Math::BigInt -> new($x -> bint());   # to Math::BigInt
+    $xtmp -> bior($y);
+    $xtmp = $class -> new($xtmp);                   # back to Math::BigFloat
 
-    return $self->bnan();
+    $x -> {sign} = $xtmp -> {sign};
+    $x -> {_m}   = $xtmp -> {_m};
+    $x -> {_es}  = $xtmp -> {_es};
+    $x -> {_e}   = $xtmp -> {_e};
+
+    return $x -> round(@r);
 }
 
-sub from_oct {
-    my $self    = shift;
-    my $selfref = ref $self;
-    my $class   = $selfref || $self;
+sub bxor {
+    my $    = shift;
+    my $xref  = ref($x);
+    my $class = $xref || $x;
 
-    my $str = shift;
+    Carp::croak 'bxor() is an instance method, not a class method' unless $xref;
+    Carp::croak 'Not enough arguments for bxor()' if @_ < 1;
 
-    # If called as a class method, initialize a new object.
+    return if $x -> modify('bxor');
 
-    $self = $class -> bzero() unless $selfref;
+    my $y = shift;
+    $y = $class -> new($y) unless ref($y);
 
-    if ($str =~ s/
-                     ^
+    my @r = @_;
 
-                     # sign
-                     ( [+-]? )
+    my $xtmp = Math::BigInt -> new($x -> bint());   # to Math::BigInt
+    $xtmp -> bxor($y);
+    $xtmp = $class -> new($xtmp);                   # back to Math::BigFloat
 
-                     # significand using the octal digits 0..7
-                     (
-                         [0-7]+ (?: _ [0-7]+ )*
-                         (?:
-                             \.
-                             (?: [0-7]+ (?: _ [0-7]+ )* )?
-                         )?
-                     |
-                         \.
-                         [0-7]+ (?: _ [0-7]+ )*
-                     )
+    $x -> {sign} = $xtmp -> {sign};
+    $x -> {_m}   = $xtmp -> {_m};
+    $x -> {_es}  = $xtmp -> {_es};
+    $x -> {_e}   = $xtmp -> {_e};
 
-                     # exponent (power of 2) using decimal digits
-                     (?:
-                         [Pp]
-                         ( [+-]? )
-                         ( \d+ (?: _ \d+ )* )
-                     )?
+    return $x -> round(@r);
+}
 
-                     $
-                 //x)
-    {
-        my $s_sign  = $1 || '+';
-        my $s_value = $2;
-        my $e_sign  = $3 || '+';
-        my $e_value = $4 || '0';
-        $s_value =~ tr/_//d;
-        $e_value =~ tr/_//d;
+sub bnot {
+    my $x     = shift;
+    my $xref  = ref($x);
+    my $class = $xref || $x;
 
-        # The significand must be multiplied by 2 raised to this exponent.
+    Carp::croak 'bnot() is an instance method, not a class method' unless $xref;
 
-        my $two_expon = $class -> new($e_value);
-        $two_expon -> bneg() if $e_sign eq '-';
+    return if $x -> modify('bnot');
 
-        # If there is a dot in the significand, remove it and adjust the
-        # exponent according to the number of digits in the fraction part of
-        # the significand. Since the digits in the significand are in base 8,
-        # but the exponent is only in base 2, multiply the exponent adjustment
-        # value by log(8) / log(2) = 3.
+    my @r = @_;
 
-        my $idx = index($s_value, '.');
-        if ($idx >= 0) {
-            substr($s_value, $idx, 1) = '';
-            $two_expon -= $class -> new(CORE::length($s_value))
-                                 -> bsub($idx)
-                                 -> bmul("3");
+    my $xtmp = Math::BigInt -> new($x -> bint());   # to Math::BigInt
+    $xtmp -> bnot();
+    $xtmp = $class -> new($xtmp);                   # back to Math::BigFloat
+
+    $x -> {sign} = $xtmp -> {sign};
+    $x -> {_m}   = $xtmp -> {_m};
+    $x -> {_es}  = $xtmp -> {_es};
+    $x -> {_e}   = $xtmp -> {_e};
+
+    return $x -> round(@r);
+}
+
+###############################################################################
+# Rounding methods
+###############################################################################
+
+sub bround {
+    # accuracy: preserve $N digits, and overwrite the rest with 0's
+    my $x = shift;
+    my $class = ref($x) || $x;
+    $x = $class->new(shift) if !ref($x);
+
+    if (($_[0] || 0) < 0) {
+        Carp::croak('bround() needs positive accuracy');
+    }
+
+    my ($scale, $mode) = $x->_scale_a(@_);
+    return $x if !defined $scale || $x->modify('bround'); # no-op
+
+    # scale is now either $x->{_a}, $accuracy, or the user parameter
+    # test whether $x already has lower accuracy, do nothing in this case
+    # but do round if the accuracy is the same, since a math operation might
+    # want to round a number with A=5 to 5 digits afterwards again
+    return $x if defined $x->{_a} && $x->{_a} < $scale;
+
+    # scale < 0 makes no sense
+    # scale == 0 => keep all digits
+    # never round a +-inf, NaN
+    return $x if ($scale <= 0) || $x->{sign} !~ /^[+-]$/;
+
+    # 1: never round a 0
+    # 2: if we should keep more digits than the mantissa has, do nothing
+    if ($x->is_zero() || $MBI->_len($x->{_m}) <= $scale) {
+        $x->{_a} = $scale if !defined $x->{_a} || $x->{_a} > $scale;
+        return $x;
+    }
+
+    # pass sign to bround for '+inf' and '-inf' rounding modes
+    my $m = bless { sign => $x->{sign}, value => $x->{_m} }, 'Math::BigInt';
+
+    $m->bround($scale, $mode);   # round mantissa
+    $x->{_m} = $m->{value};     # get our mantissa back
+    $x->{_a} = $scale;          # remember rounding
+    delete $x->{_p};            # and clear P
+    $x->bnorm();                # del trailing zeros gen. by bround()
+}
+
+sub bfround {
+    # precision: round to the $Nth digit left (+$n) or right (-$n) from the '.'
+    # $n == 0 means round to integer
+    # expects and returns normalized numbers!
+    my $x = shift;
+    my $class = ref($x) || $x;
+    $x = $class->new(shift) if !ref($x);
+
+    my ($scale, $mode) = $x->_scale_p(@_);
+    return $x if !defined $scale || $x->modify('bfround'); # no-op
+
+    # never round a 0, +-inf, NaN
+    if ($x->is_zero()) {
+        $x->{_p} = $scale if !defined $x->{_p} || $x->{_p} < $scale; # -3 < -2
+        return $x;
+    }
+    return $x if $x->{sign} !~ /^[+-]$/;
+
+    # don't round if x already has lower precision
+    return $x if (defined $x->{_p} && $x->{_p} < 0 && $scale < $x->{_p});
+
+    $x->{_p} = $scale;          # remember round in any case
+    delete $x->{_a};            # and clear A
+    if ($scale < 0) {
+        # round right from the '.'
+
+        return $x if $x->{_es} eq '+'; # e >= 0 => nothing to round
+
+        $scale = -$scale;           # positive for simplicity
+        my $len = $MBI->_len($x->{_m}); # length of mantissa
+
+        # the following poses a restriction on _e, but if _e is bigger than a
+        # scalar, you got other problems (memory etc) anyway
+        my $dad = -(0+ ($x->{_es}.$MBI->_num($x->{_e}))); # digits after dot
+        my $zad = 0;                                      # zeros after dot
+        $zad = $dad - $len if (-$dad < -$len); # for 0.00..00xxx style
+
+        # print "scale $scale dad $dad zad $zad len $len\n";
+        # number  bsstr   len zad dad
+        # 0.123   123e-3    3   0 3
+        # 0.0123  123e-4    3   1 4
+        # 0.001   1e-3      1   2 3
+        # 1.23    123e-2    3   0 2
+        # 1.2345  12345e-4  5   0 4
+
+        # do not round after/right of the $dad
+        return $x if $scale > $dad; # 0.123, scale >= 3 => exit
+
+        # round to zero if rounding inside the $zad, but not for last zero like:
+        # 0.0065, scale -2, round last '0' with following '65' (scale == zad case)
+        return $x->bzero() if $scale < $zad;
+        if ($scale == $zad)     # for 0.006, scale -3 and trunc
+        {
+            $scale = -$len;
+        } else {
+            # adjust round-point to be inside mantissa
+            if ($zad != 0) {
+                $scale = $scale-$zad;
+            } else {
+                my $dbd = $len - $dad;
+                $dbd = 0 if $dbd < 0; # digits before dot
+                $scale = $dbd+$scale;
+            }
+        }
+    } else {
+        # round left from the '.'
+
+        # 123 => 100 means length(123) = 3 - $scale (2) => 1
+
+        my $dbt = $MBI->_len($x->{_m});
+        # digits before dot
+        my $dbd = $dbt + ($x->{_es} . $MBI->_num($x->{_e}));
+        # should be the same, so treat it as this
+        $scale = 1 if $scale == 0;
+        # shortcut if already integer
+        return $x if $scale == 1 && $dbt <= $dbd;
+        # maximum digits before dot
+        ++$dbd;
+
+        if ($scale > $dbd) {
+            # not enough digits before dot, so round to zero
+            return $x->bzero;
+        } elsif ($scale == $dbd) {
+            # maximum
+            $scale = -$dbt;
+        } else {
+            $scale = $dbd - $scale;
         }
+    }
+    # pass sign to bround for rounding modes '+inf' and '-inf'
+    my $m = bless { sign => $x->{sign}, value => $x->{_m} }, 'Math::BigInt';
+    $m->bround($scale, $mode);
+    $x->{_m} = $m->{value};     # get our mantissa back
+    $x->bnorm();
+}
 
-        $self -> {sign} = $s_sign;
-        $self -> {_m}   = $MBI -> _from_oct($s_value);
+sub bfloor {
+    # round towards minus infinity
+    my ($class, $x, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
 
-        if ($two_expon > 0) {
-            my $factor = $class -> new("2") -> bpow($two_expon);
-            $self -> bmul($factor);
-        } elsif ($two_expon < 0) {
-            my $factor = $class -> new("0.5") -> bpow(-$two_expon);
-            $self -> bmul($factor);
+    return $x if $x->modify('bfloor');
+
+    return $x if $x->{sign} !~ /^[+-]$/; # nan, +inf, -inf
+
+    # if $x has digits after dot
+    if ($x->{_es} eq '-') {
+        $x->{_m} = $MBI->_rsft($x->{_m}, $x->{_e}, 10); # cut off digits after dot
+        $x->{_e} = $MBI->_zero();                     # trunc/norm
+        $x->{_es} = '+';                              # abs e
+        $MBI->_inc($x->{_m}) if $x->{sign} eq '-';    # increment if negative
+    }
+    $x->round($a, $p, $r);
+}
+
+sub bceil {
+    # round towards plus infinity
+    my ($class, $x, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+    return $x if $x->modify('bceil');
+    return $x if $x->{sign} !~ /^[+-]$/; # nan, +inf, -inf
+
+    # if $x has digits after dot
+    if ($x->{_es} eq '-') {
+        $x->{_m} = $MBI->_rsft($x->{_m}, $x->{_e}, 10); # cut off digits after dot
+        $x->{_e} = $MBI->_zero();                     # trunc/norm
+        $x->{_es} = '+';                              # abs e
+        if ($x->{sign} eq '+') {
+            $MBI->_inc($x->{_m}); # increment if positive
+        } else {
+            $x->{sign} = '+' if $MBI->_is_zero($x->{_m}); # avoid -0
         }
+    }
+    $x->round($a, $p, $r);
+}
 
-        return $self;
+sub bint {
+    # round towards zero
+    my ($class, $x, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+    return $x if $x->modify('bint');
+    return $x if $x->{sign} !~ /^[+-]$/; # nan, +inf, -inf
+
+    # if $x has digits after the decimal point
+    if ($x->{_es} eq '-') {
+        $x->{_m} = $MBI->_rsft($x->{_m}, $x->{_e}, 10); # cut off digits after dot
+        $x->{_e} = $MBI->_zero();                     # truncate/normalize
+        $x->{_es} = '+';                              # abs e
+        $x->{sign} = '+' if $MBI->_is_zero($x->{_m}); # avoid -0
     }
+    $x->round($a, $p, $r);
+}
 
-    return $self->bnan();
+###############################################################################
+# Other mathematical methods
+###############################################################################
+
+sub bgcd {
+    # (BINT or num_str, BINT or num_str) return BINT
+    # does not modify arguments, but returns new object
+
+    my $y = shift;
+    $y = __PACKAGE__->new($y) if !ref($y);
+    my $class = ref($y);
+    my $x = $y->copy()->babs(); # keep arguments
+
+    return $x->bnan() if $x->{sign} !~ /^[+-]$/ # x NaN?
+      || !$x->is_int();                         # only for integers now
+
+    while (@_) {
+        my $t = shift;
+        $t = $class->new($t) if !ref($t);
+        $y = $t->copy()->babs();
+
+        return $x->bnan() if $y->{sign} !~ /^[+-]$/ # y NaN?
+          || !$y->is_int();                         # only for integers now
+
+        # greatest common divisor
+        while (! $y->is_zero()) {
+            ($x, $y) = ($y->copy(), $x->copy()->bmod($y));
+        }
+
+        last if $x->is_one();
+    }
+    $x;
 }
 
-sub from_bin {
-    my $self    = shift;
-    my $selfref = ref $self;
-    my $class   = $selfref || $self;
+sub blcm {
+    # (BFLOAT or num_str, BFLOAT or num_str) return BFLOAT
+    # does not modify arguments, but returns new object
+    # Lowest Common Multiplicator
 
-    my $str = shift;
+    my ($class, @arg) = objectify(0, @_);
+    my $x = $class->new(shift @arg);
+    while (@arg) {
+        $x = Math::BigInt::__lcm($x, shift @arg);
+    }
+    $x;
+}
 
-    # If called as a class method, initialize a new object.
+###############################################################################
+# Object property methods
+###############################################################################
 
-    $self = $class -> bzero() unless $selfref;
+sub length {
+    my $x = shift;
+    my $class = ref($x) || $x;
+    $x = $class->new(shift) unless ref($x);
 
-    if ($str =~ s/
-                     ^
+    return 1 if $MBI->_is_zero($x->{_m});
 
-                     # sign
-                     ( [+-]? )
+    my $len = $MBI->_len($x->{_m});
+    $len += $MBI->_num($x->{_e}) if $x->{_es} eq '+';
+    if (wantarray()) {
+        my $t = 0;
+        $t = $MBI->_num($x->{_e}) if $x->{_es} eq '-';
+        return ($len, $t);
+    }
+    $len;
+}
 
-                     # optional "bin marker"
-                     (?: 0? b )?
+sub mantissa {
+    # return a copy of the mantissa
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
 
-                     # significand using the binary digits 0 and 1
-                     (
-                         [01]+ (?: _ [01]+ )*
-                         (?:
-                             \.
-                             (?: [01]+ (?: _ [01]+ )* )?
-                         )?
-                     |
-                         \.
-                         [01]+ (?: _ [01]+ )*
-                     )
+    if ($x->{sign} !~ /^[+-]$/) {
+        my $s = $x->{sign};
+        $s =~ s/^[+]//;
+        return Math::BigInt->new($s, undef, undef); # -inf, +inf => +inf
+    }
+    my $m = Math::BigInt->new($MBI->_str($x->{_m}), undef, undef);
+    $m->bneg() if $x->{sign} eq '-';
 
-                     # exponent (power of 2) using decimal digits
-                     (?:
-                         [Pp]
-                         ( [+-]? )
-                         ( \d+ (?: _ \d+ )* )
-                     )?
+    $m;
+}
 
-                     $
-                 //x)
-    {
-        my $s_sign  = $1 || '+';
-        my $s_value = $2;
-        my $e_sign  = $3 || '+';
-        my $e_value = $4 || '0';
-        $s_value =~ tr/_//d;
-        $e_value =~ tr/_//d;
+sub exponent {
+    # return a copy of the exponent
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
 
-        # The significand must be multiplied by 2 raised to this exponent.
+    if ($x->{sign} !~ /^[+-]$/) {
+        my $s = $x->{sign};
+$s =~ s/^[+-]//;
+        return Math::BigInt->new($s, undef, undef); # -inf, +inf => +inf
+    }
+    Math::BigInt->new($x->{_es} . $MBI->_str($x->{_e}), undef, undef);
+}
 
-        my $two_expon = $class -> new($e_value);
-        $two_expon -> bneg() if $e_sign eq '-';
+sub parts {
+    # return a copy of both the exponent and the mantissa
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+
+    if ($x->{sign} !~ /^[+-]$/) {
+        my $s = $x->{sign};
+$s =~ s/^[+]//;
+my $se = $s;
+$se =~ s/^[-]//;
+        return ($class->new($s), $class->new($se)); # +inf => inf and -inf, +inf => inf
+    }
+    my $m = Math::BigInt->bzero();
+    $m->{value} = $MBI->_copy($x->{_m});
+    $m->bneg() if $x->{sign} eq '-';
+    ($m, Math::BigInt->new($x->{_es} . $MBI->_num($x->{_e})));
+}
 
-        # If there is a dot in the significand, remove it and adjust the
-        # exponent according to the number of digits in the fraction part of
-        # the significand.
+sub sparts {
+    my $self  = shift;
+    my $class = ref $self;
 
-        my $idx = index($s_value, '.');
-        if ($idx >= 0) {
-            substr($s_value, $idx, 1) = '';
-            $two_expon -= $class -> new(CORE::length($s_value))
-                                 -> bsub($idx);
+    Carp::croak("sparts() is an instance method, not a class method")
+        unless $class;
+
+    # Not-a-number.
+
+    if ($self -> is_nan()) {
+        my $mant = $self -> copy();             # mantissa
+        return $mant unless wantarray;          # scalar context
+        my $expo = $class -> bnan();            # exponent
+        return ($mant, $expo);                  # list context
+    }
+
+    # Infinity.
+
+    if ($self -> is_inf()) {
+        my $mant = $self -> copy();             # mantissa
+        return $mant unless wantarray;          # scalar context
+        my $expo = $class -> binf('+');         # exponent
+        return ($mant, $expo);                  # list context
+    }
+
+    # Finite number.
+
+    my $mant = $class -> bzero();
+    $mant -> {sign} = $self -> {sign};
+    $mant -> {_m}   = $MBI->_copy($self -> {_m});
+    return $mant unless wantarray;
+
+    my $expo = $class -> bzero();
+    $expo -> {sign} = $self -> {_es};
+    $expo -> {_m}   = $MBI->_copy($self -> {_e});
+
+    return ($mant, $expo);
+}
+
+sub nparts {
+    my $self  = shift;
+    my $class = ref $self;
+
+    Carp::croak("nparts() is an instance method, not a class method")
+        unless $class;
+
+    # Not-a-number.
+
+    if ($self -> is_nan()) {
+        my $mant = $self -> copy();             # mantissa
+        return $mant unless wantarray;          # scalar context
+        my $expo = $class -> bnan();            # exponent
+        return ($mant, $expo);                  # list context
+    }
+
+    # Infinity.
+
+    if ($self -> is_inf()) {
+        my $mant = $self -> copy();             # mantissa
+        return $mant unless wantarray;          # scalar context
+        my $expo = $class -> binf('+');         # exponent
+        return ($mant, $expo);                  # list context
+    }
+
+    # Finite number.
+
+    my ($mant, $expo) = $self -> sparts();
+
+    if ($mant -> bcmp(0)) {
+        my ($ndigtot, $ndigfrac) = $mant -> length();
+        my $expo10adj = $ndigtot - $ndigfrac - 1;
+
+        if ($expo10adj != 0) {
+            my $factor  = "1e" . -$expo10adj;
+            $mant -> bmul($factor);
+            return $mant unless wantarray;
+            $expo -> badd($expo10adj);
+            return ($mant, $expo);
         }
+    }
 
-        $self -> {sign} = $s_sign;
-        $self -> {_m}   = $MBI -> _from_bin('0b' . $s_value);
+    return $mant unless wantarray;
+    return ($mant, $expo);
+}
 
-        if ($two_expon > 0) {
-            my $factor = $class -> new("2") -> bpow($two_expon);
-            $self -> bmul($factor);
-        } elsif ($two_expon < 0) {
-            my $factor = $class -> new("0.5") -> bpow(-$two_expon);
-            $self -> bmul($factor);
+sub eparts {
+    my $self  = shift;
+    my $class = ref $self;
+
+    Carp::croak("eparts() is an instance method, not a class method")
+        unless $class;
+
+    # Not-a-number and Infinity.
+
+    return $self -> sparts() if $self -> is_nan() || $self -> is_inf();
+
+    # Finite number.
+
+    my ($mant, $expo) = $self -> nparts();
+
+    my $c = $expo -> copy() -> bmod(3);
+    $mant -> blsft($c, 10);
+    return $mant unless wantarray;
+
+    $expo -> bsub($c);
+    return ($mant, $expo);
+}
+
+sub dparts {
+    my $self  = shift;
+    my $class = ref $self;
+
+    Carp::croak("dparts() is an instance method, not a class method")
+        unless $class;
+
+    # Not-a-number and Infinity.
+
+    if ($self -> is_nan() || $self -> is_inf()) {
+        my $int = $self -> copy();
+        return $int unless wantarray;
+        my $frc = $class -> bzero();
+        return ($int, $frc);
+    }
+
+    my $int = $self  -> copy();
+    my $frc = $class -> bzero();
+
+    # If the input has a fraction part.
+
+    if ($int->{_es} eq '-') {
+        $int->{_m} = $MBI -> _rsft($int->{_m}, $int->{_e}, 10);
+        $int->{_e} = $MBI -> _zero();
+        $int->{_es} = '+';
+        $int->{sign} = '+' if $MBI->_is_zero($int->{_m});   # avoid -0
+
+        return $int unless wantarray;
+        $frc = $self -> copy() -> bsub($int);
+        return ($int, $frc);
+    }
+
+    return $int unless wantarray;
+    return ($int, $frc);
+}
+
+###############################################################################
+# String conversion methods
+###############################################################################
+
+sub bstr {
+    # (ref to BFLOAT or num_str) return num_str
+    # Convert number from internal format to (non-scientific) string format.
+    # internal format is always normalized (no leading zeros, "-0" => "+0")
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    if ($x->{sign} !~ /^[+-]$/) {
+        return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+        return 'inf';                                  # +inf
+    }
+
+    my $es = '0';
+my $len = 1;
+my $cad = 0;
+my $dot = '.';
+
+    # $x is zero?
+    my $not_zero = !($x->{sign} eq '+' && $MBI->_is_zero($x->{_m}));
+    if ($not_zero) {
+        $es = $MBI->_str($x->{_m});
+        $len = CORE::length($es);
+        my $e = $MBI->_num($x->{_e});
+        $e = -$e if $x->{_es} eq '-';
+        if ($e < 0) {
+            $dot = '';
+            # if _e is bigger than a scalar, the following will blow your memory
+            if ($e <= -$len) {
+                my $r = abs($e) - $len;
+                $es = '0.'. ('0' x $r) . $es;
+$cad = -($len+$r);
+            } else {
+                substr($es, $e, 0) = '.';
+$cad = $MBI->_num($x->{_e});
+                $cad = -$cad if $x->{_es} eq '-';
+            }
+        } elsif ($e > 0) {
+            # expand with zeros
+            $es .= '0' x $e;
+$len += $e;
+$cad = 0;
         }
+    }                           # if not zero
+
+    $es = '-'.$es if $x->{sign} eq '-';
+    # if set accuracy or precision, pad with zeros on the right side
+    if ((defined $x->{_a}) && ($not_zero)) {
+        # 123400 => 6, 0.1234 => 4, 0.001234 => 4
+        my $zeros = $x->{_a} - $cad; # cad == 0 => 12340
+        $zeros = $x->{_a} - $len if $cad != $len;
+        $es .= $dot.'0' x $zeros if $zeros > 0;
+    } elsif ((($x->{_p} || 0) < 0)) {
+        # 123400 => 6, 0.1234 => 4, 0.001234 => 6
+        my $zeros = -$x->{_p} + $cad;
+        $es .= $dot.'0' x $zeros if $zeros > 0;
+    }
+    $es;
+}
 
-        return $self;
+# Decimal notation, e.g., "12345.6789".
+
+sub bdstr {
+    my $x = shift;
+
+    if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+        return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+        return 'inf';                                  # +inf
     }
 
-    return $self->bnan();
+    my $mant = $MBI->_str($x->{_m});
+    my $expo = $x -> exponent();
+
+    my $str = $mant;
+    if ($expo >= 0) {
+        $str .= "0" x $expo;
+    } else {
+        my $mantlen = CORE::length($mant);
+        my $c = $mantlen + $expo;
+        $str = "0" x (1 - $c) . $str if $c <= 0;
+        substr($str, $expo, 0) = '.';
+    }
+
+    return $x->{sign} eq '-' ? "-$str" : $str;
 }
 
-1;
+# Scientific notation with significand/mantissa as an integer, e.g., "12345.6789"
+# is written as "123456789e-4".
 
-__END__
+sub bsstr {
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-=pod
+    if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+        return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+        return 'inf';                                  # +inf
+    }
 
-=head1 NAME
+    my $str = $MBI->_str($x->{_m}) . 'e' . $x->{_es}. $MBI->_str($x->{_e});
+    return $x->{sign} eq '-' ? "-$str" : $str;
+}
 
-Math::BigFloat - Arbitrary size floating point math package
+# Normalized notation, e.g., "12345.6789" is written as "1.23456789e+4".
 
-=head1 SYNOPSIS
+sub bnstr {
+    my $x = shift;
 
- use Math::BigFloat;
-
- # Number creation
- my $x = Math::BigFloat->new($str);    # defaults to 0
- my $y = $x->copy();                   # make a true copy
- my $nan  = Math::BigFloat->bnan();    # create a NotANumber
- my $zero = Math::BigFloat->bzero();   # create a +0
- my $inf = Math::BigFloat->binf();     # create a +inf
- my $inf = Math::BigFloat->binf('-');  # create a -inf
- my $one = Math::BigFloat->bone();     # create a +1
- my $mone = Math::BigFloat->bone('-'); # create a -1
- my $x = Math::BigFloat->bone('-');    #
-
- my $x = Math::BigFloat->from_hex('0xc.afep+3');    # from hexadecimal
- my $x = Math::BigFloat->from_bin('0b1.1001p-4');   # from binary
- my $x = Math::BigFloat->from_oct('1.3267p-4');     # from octal
-
- my $pi = Math::BigFloat->bpi(100);    # PI to 100 digits
-
- # the following examples compute their result to 100 digits accuracy:
- my $cos  = Math::BigFloat->new(1)->bcos(100);       # cosinus(1)
- my $sin  = Math::BigFloat->new(1)->bsin(100);       # sinus(1)
- my $atan = Math::BigFloat->new(1)->batan(100);              # arcus tangens(1)
-
- my $atan2 = Math::BigFloat->new(  1 )->batan2( 1 ,100); # batan(1)
- my $atan2 = Math::BigFloat->new(  1 )->batan2( 8 ,100); # batan(1/8)
- my $atan2 = Math::BigFloat->new( -2 )->batan2( 1 ,100); # batan(-2)
-
- # Testing
- $x->is_zero();                 # true if arg is +0
- $x->is_nan();          # true if arg is NaN
- $x->is_one();          # true if arg is +1
- $x->is_one('-');       # true if arg is -1
- $x->is_odd();          # true if odd, false for even
- $x->is_even();                 # true if even, false for odd
- $x->is_pos();          # true if >= 0
- $x->is_neg();          # true if <  0
- $x->is_inf(sign);      # true if +inf, or -inf (default is '+')
-
- $x->bcmp($y);          # compare numbers (undef,<0,=0,>0)
- $x->bacmp($y);                 # compare absolutely (undef,<0,=0,>0)
- $x->sign();            # return the sign, either +,- or NaN
- $x->digit($n);                 # return the nth digit, counting from right
- $x->digit(-$n);        # return the nth digit, counting from left 
-
- # The following all modify their first argument. If you want to pre-
- # serve $x, use $z = $x->copy()->bXXX($y); See under L</CAVEATS> for
- # necessary when mixing $a = $b assignments with non-overloaded math.
-
- # set 
- $x->bzero();           # set $i to 0
- $x->bnan();            # set $i to NaN
- $x->bone();            # set $x to +1
- $x->bone('-');                 # set $x to -1
- $x->binf();            # set $x to inf
- $x->binf('-');                 # set $x to -inf
-
- $x->bneg();            # negation
- $x->babs();            # absolute value
- $x->bnorm();           # normalize (no-op)
- $x->bnot();            # two's complement (bit wise not)
- $x->binc();            # increment x by 1
- $x->bdec();            # decrement x by 1
-
- $x->badd($y);          # addition (add $y to $x)
- $x->bsub($y);          # subtraction (subtract $y from $x)
- $x->bmul($y);          # multiplication (multiply $x by $y)
- $x->bdiv($y);          # divide, set $x to quotient
-                        # return (quo,rem) or quo if scalar
-
- $x->bmod($y);          # modulus ($x % $y)
- $x->bpow($y);          # power of arguments ($x ** $y)
- $x->bmodpow($exp,$mod); # modular exponentiation (($num**$exp) % $mod))
- $x->blsft($y, $n);     # left shift by $y places in base $n
- $x->brsft($y, $n);     # right shift by $y places in base $n
-                        # returns (quo,rem) or quo if in scalar context
-
- $x->blog();            # logarithm of $x to base e (Euler's number)
- $x->blog($base);       # logarithm of $x to base $base (f.i. 2)
- $x->bexp();            # calculate e ** $x where e is Euler's number
-
- $x->band($y);          # bit-wise and
- $x->bior($y);          # bit-wise inclusive or
- $x->bxor($y);          # bit-wise exclusive or
- $x->bnot();            # bit-wise not (two's complement)
-
- $x->bsqrt();           # calculate square-root
- $x->broot($y);                 # $y'th root of $x (e.g. $y == 3 => cubic root)
- $x->bfac();            # factorial of $x (1*2*3*4*..$x)
-
- $x->bround($N);        # accuracy: preserve $N digits
- $x->bfround($N);       # precision: round to the $Nth digit
-
- $x->bfloor();          # return integer less or equal than $x
- $x->bceil();           # return integer greater or equal than $x
- $x->bint();             # round towards zero
-
-  # The following do not modify their arguments:
-
- bgcd(@values);                 # greatest common divisor
- blcm(@values);                 # lowest common multiplicator
-
- $x->bstr();            # return string
- $x->bsstr();           # return string in scientific notation
-
- $x->as_int();          # return $x as BigInt 
- $x->exponent();        # return exponent as BigInt
- $x->mantissa();        # return mantissa as BigInt
- $x->parts();           # return (mantissa,exponent) as BigInt
-
- $x->length();          # number of digits (w/o sign and '.')
- ($l,$f) = $x->length(); # number of digits, and length of fraction
-
- $x->precision();       # return P of $x (or global, if P of $x undef)
- $x->precision($n);     # set P of $x to $n
- $x->accuracy();        # return A of $x (or global, if A of $x undef)
- $x->accuracy($n);      # set A $x to $n
-
- # these get/set the appropriate global value for all BigFloat objects
- Math::BigFloat->precision();  # Precision
- Math::BigFloat->accuracy();   # Accuracy
- Math::BigFloat->round_mode(); # rounding mode
+    if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+        return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+        return 'inf';                                  # +inf
+    }
 
-=head1 DESCRIPTION
+    my ($mant, $expo) = $x -> nparts();
 
-All operators (including basic math operations) are overloaded if you
-declare your big floating point numbers as
+    my $esgn = $expo < 0 ? '-' : '+';
+    my $eabs = $expo -> babs() -> bfround(0) -> bstr();
+    #$eabs = '0' . $eabs if length($eabs) < 2;
 
-  $i = Math::BigFloat -> new('12_3.456_789_123_456_789E-2');
+    return $mant . 'e' . $esgn . $eabs;
+}
 
-Operations with overloaded operators preserve the arguments, which is
-exactly what you expect.
+# Engineering notation, e.g., "12345.6789" is written as "12.3456789e+3".
 
-=head2 Input
+sub bestr {
+    my $x = shift;
 
-Input to these routines are either BigFloat objects, or strings of the
-following four forms:
+    if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+        return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+        return 'inf';                                  # +inf
+    }
 
-=over
+    my ($mant, $expo) = $x -> eparts();
 
-=item *
+    my $esgn = $expo < 0 ? '-' : '+';
+    my $eabs = $expo -> babs() -> bfround(0) -> bstr();
+    #$eabs = '0' . $eabs if length($eabs) < 2;
 
-C</^[+-]\d+$/>
+    return $mant . 'e' . $esgn . $eabs;
+}
 
-=item *
+sub as_hex {
+    # return number as hexadecimal string (only for integers defined)
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
 
-C</^[+-]\d+\.\d*$/>
+    return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
+    return '0x0' if $x->is_zero();
 
-=item *
+    return $nan if $x->{_es} ne '+';    # how to do 1e-1 in hex?
 
-C</^[+-]\d+E[+-]?\d+$/>
+    my $z = $MBI->_copy($x->{_m});
+    if (! $MBI->_is_zero($x->{_e})) {   # > 0
+        $MBI->_lsft($z, $x->{_e}, 10);
+    }
+    $z = Math::BigInt->new($x->{sign} . $MBI->_num($z));
+    $z->as_hex();
+}
 
-=item *
+sub as_oct {
+    # return number as octal digit string (only for integers defined)
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
 
-C</^[+-]\d*\.\d+E[+-]?\d+$/>
+    return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
+    return '0' if $x->is_zero();
 
-=back
+    return $nan if $x->{_es} ne '+';    # how to do 1e-1 in octal?
 
-all with optional leading and trailing zeros and/or spaces. Additionally,
-numbers are allowed to have an underscore between any two digits.
+    my $z = $MBI->_copy($x->{_m});
+    if (! $MBI->_is_zero($x->{_e})) {   # > 0
+        $MBI->_lsft($z, $x->{_e}, 10);
+    }
+    $z = Math::BigInt->new($x->{sign} . $MBI->_num($z));
+    $z->as_oct();
+}
 
-Empty strings as well as other illegal numbers results in 'NaN'.
+sub as_bin {
+    # return number as binary digit string (only for integers defined)
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
 
-bnorm() on a BigFloat object is now effectively a no-op, since the numbers 
-are always stored in normalized form. On a string, it creates a BigFloat 
-object.
+    return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
+    return '0b0' if $x->is_zero();
 
-=head2 Output
+    return $nan if $x->{_es} ne '+';    # how to do 1e-1 in binary?
+
+    my $z = $MBI->_copy($x->{_m});
+    if (! $MBI->_is_zero($x->{_e})) {   # > 0
+        $MBI->_lsft($z, $x->{_e}, 10);
+    }
+    $z = Math::BigInt->new($x->{sign} . $MBI->_num($z));
+    $z->as_bin();
+}
+
+sub numify {
+    # Make a Perl scalar number from a Math::BigFloat object.
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    if ($x -> is_nan()) {
+        require Math::Complex;
+        my $inf = Math::Complex::Inf();
+        return $inf - $inf;
+    }
+
+    if ($x -> is_inf()) {
+        require Math::Complex;
+        my $inf = Math::Complex::Inf();
+        return $x -> is_negative() ? -$inf : $inf;
+    }
 
-Output values are BigFloat objects (normalized), except for bstr() and bsstr().
+    # Create a string and let Perl's atoi()/atof() handle the rest.
+    return 0 + $x -> bsstr();
+}
 
-The string output will always have leading and trailing zeros stripped and drop
-a plus sign. C<bstr()> will give you always the form with a decimal point,
-while C<bsstr()> (s for scientific) gives you the scientific notation.
+###############################################################################
+# Private methods and functions.
+###############################################################################
 
-       Input                   bstr()          bsstr()
-       '-0'                    '0'             '0E1'
-       '  -123 123 123'        '-123123123'    '-123123123E0'
-       '00.0123'               '0.0123'        '123E-4'
-       '123.45E-2'             '1.2345'        '12345E-4'
-       '10E+3'                 '10000'         '1E4'
+sub import {
+    my $class = shift;
+    my $l = scalar @_;
+    my $lib = '';
+my @a;
+    my $lib_kind = 'try';
+    $IMPORT=1;
+    for (my $i = 0; $i < $l ; $i++) {
+        if ($_[$i] eq ':constant') {
+            # This causes overlord er load to step in. 'binary' and 'integer'
+            # are handled by BigInt.
+            overload::constant float => sub { $class->new(shift); };
+        } elsif ($_[$i] eq 'upgrade') {
+            # this causes upgrading
+            $upgrade = $_[$i+1]; # or undef to disable
+            $i++;
+        } elsif ($_[$i] eq 'downgrade') {
+            # this causes downgrading
+            $downgrade = $_[$i+1]; # or undef to disable
+            $i++;
+        } elsif ($_[$i] =~ /^(lib|try|only)\z/) {
+            # alternative library
+            $lib = $_[$i+1] || ''; # default Calc
+            $lib_kind = $1;        # lib, try or only
+            $i++;
+        } elsif ($_[$i] eq 'with') {
+            # alternative class for our private parts()
+            # XXX: no longer supported
+            # $MBI = $_[$i+1] || 'Math::BigInt';
+            $i++;
+        } else {
+            push @a, $_[$i];
+        }
+    }
 
-Some routines (C<is_odd()>, C<is_even()>, C<is_zero()>, C<is_one()>,
-C<is_nan()>) return true or false, while others (C<bcmp()>, C<bacmp()>)
-return either undef, <0, 0 or >0 and are suited for sort.
+    $lib =~ tr/a-zA-Z0-9,://cd; # restrict to sane characters
+    # let use Math::BigInt lib => 'GMP'; use Math::BigFloat; still work
+    my $mbilib = eval { Math::BigInt->config()->{lib} };
+    if ((defined $mbilib) && ($MBI eq 'Math::BigInt::Calc')) {
+        # MBI already loaded
+        Math::BigInt->import($lib_kind, "$lib, $mbilib", 'objectify');
+    } else {
+        # MBI not loaded, or with ne "Math::BigInt::Calc"
+        $lib .= ",$mbilib" if defined $mbilib;
+        $lib =~ s/^,//;         # don't leave empty
 
-Actual math is done by using the class defined with C<< with => Class; >>
-(which defaults to BigInts) to represent the mantissa and exponent.
+        # replacement library can handle lib statement, but also could ignore it
 
-The sign C</^[+-]$/> is stored separately. The string 'NaN' is used to 
-represent the result when input arguments are not numbers, and 'inf' and
-'-inf' are used to represent positive and negative infinity, respectively.
+        # Perl < 5.6.0 dies with "out of memory!" when eval() and ':constant' is
+        # used in the same script, or eval inside import(). So we require MBI:
+        require Math::BigInt;
+        Math::BigInt->import($lib_kind => $lib, 'objectify');
+    }
+    if ($@) {
+        Carp::croak("Couldn't load $lib: $! $@");
+    }
+    # find out which one was actually loaded
+    $MBI = Math::BigInt->config()->{lib};
 
-=head2 mantissa(), exponent() and parts()
+    # register us with MBI to get notified of future lib changes
+    Math::BigInt::_register_callback($class, sub { $MBI = $_[0]; });
 
-mantissa() and exponent() return the said parts of the BigFloat
-as BigInts such that:
+    $class->export_to_level(1, $class, @a); # export wanted functions
+}
 
-       $m = $x->mantissa();
-       $e = $x->exponent();
-       $y = $m * ( 10 ** $e );
-       print "ok\n" if $x == $y;
+sub _len_to_steps {
+    # Given D (digits in decimal), compute N so that N! (N factorial) is
+    # at least D digits long. D should be at least 50.
+    my $d = shift;
+
+    # two constants for the Ramanujan estimate of ln(N!)
+    my $lg2 = log(2 * 3.14159265) / 2;
+    my $lg10 = log(10);
+
+    # D = 50 => N => 42, so L = 40 and R = 50
+    my $l = 40;
+my $r = $d;
+
+    # Otherwise this does not work under -Mbignum and we do not yet have "no bignum;" :(
+    $l = $l->numify if ref($l);
+    $r = $r->numify if ref($r);
+    $lg2 = $lg2->numify if ref($lg2);
+    $lg10 = $lg10->numify if ref($lg10);
+
+    # binary search for the right value (could this be written as the reverse of lg(n!)?)
+    while ($r - $l > 1) {
+        my $n = int(($r - $l) / 2) + $l;
+        my $ramanujan =
+          int(($n * log($n) - $n + log($n * (1 + 4*$n*(1+2*$n))) / 6 + $lg2) / $lg10);
+        $ramanujan > $d ? $r = $n : $l = $n;
+    }
+    $l;
+}
 
-C<< ($m,$e) = $x->parts(); >> is just a shortcut giving you both of them.
+sub _log {
+    # internal log function to calculate ln() based on Taylor series.
+    # Modifies $x in place.
+    my ($class, $x, $scale) = @_;
+
+    # in case of $x == 1, result is 0
+    return $x->bzero() if $x->is_one();
+
+    # XXX TODO: rewrite this in a similar manner to bexp()
+
+    # http://www.efunda.com/math/taylor_series/logarithmic.cfm?search_string=log
+
+    # u = x-1, v = x+1
+    #              _                               _
+    # Taylor:     |    u    1   u^3   1   u^5       |
+    # ln (x)  = 2 |   --- + - * --- + - * --- + ... |  x > 0
+    #             |_   v    3   v^3   5   v^5      _|
+
+    # This takes much more steps to calculate the result and is thus not used
+    # u = x-1
+    #              _                               _
+    # Taylor:     |    u    1   u^2   1   u^3       |
+    # ln (x)  = 2 |   --- + - * --- + - * --- + ... |  x > 1/2
+    #             |_   x    2   x^2   3   x^3      _|
+
+    my ($limit, $v, $u, $below, $factor, $two, $next, $over, $f);
+
+    $v = $x->copy(); $v->binc(); # v = x+1
+    $x->bdec(); $u = $x->copy(); # u = x-1; x = x-1
+    $x->bdiv($v, $scale);        # first term: u/v
+    $below = $v->copy();
+    $over = $u->copy();
+    $u *= $u; $v *= $v;         # u^2, v^2
+    $below->bmul($v);           # u^3, v^3
+    $over->bmul($u);
+    $factor = $class->new(3); $f = $class->new(2);
+
+    my $steps = 0;
+    $limit = $class->new("1E-". ($scale-1));
+    while (3 < 5) {
+        # we calculate the next term, and add it to the last
+        # when the next term is below our limit, it won't affect the outcome
+        # anymore, so we stop
+
+        # calculating the next term simple from over/below will result in quite
+        # a time hog if the input has many digits, since over and below will
+        # accumulate more and more digits, and the result will also have many
+        # digits, but in the end it is rounded to $scale digits anyway. So if we
+        # round $over and $below first, we save a lot of time for the division
+        # (not with log(1.2345), but try log (123**123) to see what I mean. This
+        # can introduce a rounding error if the division result would be f.i.
+        # 0.1234500000001 and we round it to 5 digits it would become 0.12346, but
+        # if we truncated $over and $below we might get 0.12345. Does this matter
+        # for the end result? So we give $over and $below 4 more digits to be
+        # on the safe side (unscientific error handling as usual... :+D
+
+        $next = $over->copy()->bround($scale+4)
+          ->bdiv($below->copy()->bmul($factor)->bround($scale+4),
+                 $scale);
+
+        ## old version:
+        ##    $next = $over->copy()->bdiv($below->copy()->bmul($factor), $scale);
 
-Currently the mantissa is reduced as much as possible, favouring higher
-exponents over lower ones (e.g. returning 1e7 instead of 10e6 or 10000000e0).
-This might change in the future, so do not depend on it.
+        last if $next->bacmp($limit) <= 0;
 
-=head2 Accuracy vs. Precision
+        delete $next->{_a};
+        delete $next->{_p};
+        $x->badd($next);
+        # calculate things for the next term
+        $over *= $u;
+        $below *= $v;
+        $factor->badd($f);
+        if (DEBUG) {
+            $steps++;
+            print "step $steps = $x\n" if $steps % 10 == 0;
+        }
+    }
+    print "took $steps steps\n" if DEBUG;
+    $x->bmul($f);               # $x *= 2
+}
 
-See also: L<Rounding|/Rounding>.
+sub _log_10 {
+    # Internal log function based on reducing input to the range of 0.1 .. 9.99
+    # and then "correcting" the result to the proper one. Modifies $x in place.
+    my ($class, $x, $scale) = @_;
+
+    # Taking blog() from numbers greater than 10 takes a *very long* time, so we
+    # break the computation down into parts based on the observation that:
+    #  blog(X*Y) = blog(X) + blog(Y)
+    # We set Y here to multiples of 10 so that $x becomes below 1 - the smaller
+    # $x is the faster it gets. Since 2*$x takes about 10 times as
+    # long, we make it faster by about a factor of 100 by dividing $x by 10.
+
+    # The same observation is valid for numbers smaller than 0.1, e.g. computing
+    # log(1) is fastest, and the further away we get from 1, the longer it takes.
+    # So we also 'break' this down by multiplying $x with 10 and subtract the
+    # log(10) afterwards to get the correct result.
+
+    # To get $x even closer to 1, we also divide by 2 and then use log(2) to
+    # correct for this. For instance if $x is 2.4, we use the formula:
+    #  blog(2.4 * 2) == blog (1.2) + blog(2)
+    # and thus calculate only blog(1.2) and blog(2), which is faster in total
+    # than calculating blog(2.4).
+
+    # In addition, the values for blog(2) and blog(10) are cached.
+
+    # Calculate nr of digits before dot:
+    my $dbd = $MBI->_num($x->{_e});
+    $dbd = -$dbd if $x->{_es} eq '-';
+    $dbd += $MBI->_len($x->{_m});
+
+    # more than one digit (e.g. at least 10), but *not* exactly 10 to avoid
+    # infinite recursion
+
+    my $calc = 1;               # do some calculation?
+
+    # disable the shortcut for 10, since we need log(10) and this would recurse
+    # infinitely deep
+    if ($x->{_es} eq '+' && $MBI->_is_one($x->{_e}) && $MBI->_is_one($x->{_m})) {
+        $dbd = 0;               # disable shortcut
+        # we can use the cached value in these cases
+        if ($scale <= $LOG_10_A) {
+            $x->bzero();
+            $x->badd($LOG_10); # modify $x in place
+            $calc = 0;                      # no need to calc, but round
+        }
+        # if we can't use the shortcut, we continue normally
+    } else {
+        # disable the shortcut for 2, since we maybe have it cached
+        if (($MBI->_is_zero($x->{_e}) && $MBI->_is_two($x->{_m}))) {
+            $dbd = 0;           # disable shortcut
+            # we can use the cached value in these cases
+            if ($scale <= $LOG_2_A) {
+                $x->bzero();
+                $x->badd($LOG_2); # modify $x in place
+                $calc = 0;                     # no need to calc, but round
+            }
+            # if we can't use the shortcut, we continue normally
+        }
+    }
 
-Math::BigFloat supports both precision (rounding to a certain place before or
-after the dot) and accuracy (rounding to a certain number of digits). For a
-full documentation, examples and tips on these topics please see the large
-section about rounding in L<Math::BigInt>.
+    # if $x = 0.1, we know the result must be 0-log(10)
+    if ($calc != 0 && $x->{_es} eq '-' && $MBI->_is_one($x->{_e}) &&
+        $MBI->_is_one($x->{_m})) {
+        $dbd = 0;               # disable shortcut
+        # we can use the cached value in these cases
+        if ($scale <= $LOG_10_A) {
+            $x->bzero();
+            $x->bsub($LOG_10);
+            $calc = 0;          # no need to calc, but round
+        }
+    }
 
-Since things like C<sqrt(2)> or C<1 / 3> must presented with a limited
-accuracy lest a operation consumes all resources, each operation produces
-no more than the requested number of digits.
+    return if $calc == 0;       # already have the result
+
+    # default: these correction factors are undef and thus not used
+    my $l_10;                   # value of ln(10) to A of $scale
+    my $l_2;                    # value of ln(2) to A of $scale
+
+    my $two = $class->new(2);
+
+    # $x == 2 => 1, $x == 13 => 2, $x == 0.1 => 0, $x == 0.01 => -1
+    # so don't do this shortcut for 1 or 0
+    if (($dbd > 1) || ($dbd < 0)) {
+        # convert our cached value to an object if not already (avoid doing this
+        # at import() time, since not everybody needs this)
+        $LOG_10 = $class->new($LOG_10, undef, undef) unless ref $LOG_10;
+
+        #print "x = $x, dbd = $dbd, calc = $calc\n";
+        # got more than one digit before the dot, or more than one zero after the
+        # dot, so do:
+        #  log(123)    == log(1.23) + log(10) * 2
+        #  log(0.0123) == log(1.23) - log(10) * 2
+
+        if ($scale <= $LOG_10_A) {
+            # use cached value
+            $l_10 = $LOG_10->copy(); # copy for mul
+        } else {
+            # else: slower, compute and cache result
+            # also disable downgrade for this code path
+            local $Math::BigFloat::downgrade = undef;
+
+            # shorten the time to calculate log(10) based on the following:
+            # log(1.25 * 8) = log(1.25) + log(8)
+            #               = log(1.25) + log(2) + log(2) + log(2)
+
+            # first get $l_2 (and possible compute and cache log(2))
+            $LOG_2 = $class->new($LOG_2, undef, undef) unless ref $LOG_2;
+            if ($scale <= $LOG_2_A) {
+                # use cached value
+                $l_2 = $LOG_2->copy(); # copy() for the mul below
+            } else {
+                # else: slower, compute and cache result
+                $l_2 = $two->copy();
+                $class->_log($l_2, $scale); # scale+4, actually
+                $LOG_2 = $l_2->copy(); # cache the result for later
+                # the copy() is for mul below
+                $LOG_2_A = $scale;
+            }
+
+            # now calculate log(1.25):
+            $l_10 = $class->new('1.25');
+            $class->_log($l_10, $scale); # scale+4, actually
+
+            # log(1.25) + log(2) + log(2) + log(2):
+            $l_10->badd($l_2);
+            $l_10->badd($l_2);
+            $l_10->badd($l_2);
+            $LOG_10 = $l_10->copy(); # cache the result for later
+            # the copy() is for mul below
+            $LOG_10_A = $scale;
+        }
+        $dbd-- if ($dbd > 1);       # 20 => dbd=2, so make it dbd=1
+        $l_10->bmul($class->new($dbd)); # log(10) * (digits_before_dot-1)
+        my $dbd_sign = '+';
+        if ($dbd < 0) {
+            $dbd = -$dbd;
+            $dbd_sign = '-';
+        }
+        ($x->{_e}, $x->{_es}) =
+          _e_sub($x->{_e}, $MBI->_new($dbd), $x->{_es}, $dbd_sign); # 123 => 1.23
+
+    }
+
+    # Now: 0.1 <= $x < 10 (and possible correction in l_10)
+
+    ### Since $x in the range 0.5 .. 1.5 is MUCH faster, we do a repeated div
+    ### or mul by 2 (maximum times 3, since x < 10 and x > 0.1)
+
+    $HALF = $class->new($HALF) unless ref($HALF);
+
+    my $twos = 0;               # default: none (0 times)
+    while ($x->bacmp($HALF) <= 0) { # X <= 0.5
+        $twos--;
+        $x->bmul($two);
+    }
+    while ($x->bacmp($two) >= 0) { # X >= 2
+        $twos++;
+        $x->bdiv($two, $scale+4); # keep all digits
+    }
+    $x->bround($scale+4);
+    # $twos > 0 => did mul 2, < 0 => did div 2 (but we never did both)
+    # So calculate correction factor based on ln(2):
+    if ($twos != 0) {
+        $LOG_2 = $class->new($LOG_2, undef, undef) unless ref $LOG_2;
+        if ($scale <= $LOG_2_A) {
+            # use cached value
+            $l_2 = $LOG_2->copy(); # copy() for the mul below
+        } else {
+            # else: slower, compute and cache result
+            # also disable downgrade for this code path
+            local $Math::BigFloat::downgrade = undef;
+            $l_2 = $two->copy();
+            $class->_log($l_2, $scale); # scale+4, actually
+            $LOG_2 = $l_2->copy(); # cache the result for later
+            # the copy() is for mul below
+            $LOG_2_A = $scale;
+        }
+        $l_2->bmul($twos);      # * -2 => subtract, * 2 => add
+    } else {
+        undef $l_2;
+    }
+
+    $class->_log($x, $scale);       # need to do the "normal" way
+    $x->badd($l_10) if defined $l_10; # correct it by ln(10)
+    $x->badd($l_2) if defined $l_2;   # and maybe by ln(2)
+
+    # all done, $x contains now the result
+    $x;
+}
+
+sub _e_add {
+    # Internal helper sub to take two positive integers and their signs and
+    # then add them. Input ($CALC, $CALC, ('+'|'-'), ('+'|'-')), output
+    # ($CALC, ('+'|'-')).
+
+    my ($x, $y, $xs, $ys) = @_;
+
+    # if the signs are equal we can add them (-5 + -3 => -(5 + 3) => -8)
+    if ($xs eq $ys) {
+        $x = $MBI->_add($x, $y); # +a + +b or -a + -b
+    } else {
+        my $a = $MBI->_acmp($x, $y);
+        if ($a == 0) {
+            # This does NOT modify $x in-place. TODO: Fix this?
+            $x = $MBI->_zero(); # result is 0
+            $xs = '+';
+            return ($x, $xs);
+        }
+        if ($a > 0) {
+            $x = $MBI->_sub($x, $y);     # abs sub
+        } else {                         # a < 0
+            $x = $MBI->_sub ($y, $x, 1); # abs sub
+            $xs = $ys;
+        }
+    }
+
+    $xs = '+' if $xs eq '-' && $MBI->_is_zero($x); # no "-0"
+
+    return ($x, $xs);
+}
+
+sub _e_sub {
+    # Internal helper sub to take two positive integers and their signs and
+    # then subtract them. Input ($CALC, $CALC, ('+'|'-'), ('+'|'-')),
+    # output ($CALC, ('+'|'-'))
+    my ($x, $y, $xs, $ys) = @_;
+
+    # flip sign
+    $ys = $ys eq '+' ? '-' : '+'; # swap sign of second operand ...
+    _e_add($x, $y, $xs, $ys);     # ... and let _e_add() do the job
+}
+
+sub _pow {
+    # Calculate a power where $y is a non-integer, like 2 ** 0.3
+    my ($x, $y, @r) = @_;
+    my $class = ref($x);
+
+    # if $y == 0.5, it is sqrt($x)
+    $HALF = $class->new($HALF) unless ref($HALF);
+    return $x->bsqrt(@r, $y) if $y->bcmp($HALF) == 0;
+
+    # Using:
+    # a ** x == e ** (x * ln a)
+
+    # u = y * ln x
+    #                _                         _
+    # Taylor:       |   u    u^2    u^3         |
+    # x ** y  = 1 + |  --- + --- + ----- + ...  |
+    #               |_  1    1*2   1*2*3       _|
+
+    # we need to limit the accuracy to protect against overflow
+    my $fallback = 0;
+    my ($scale, @params);
+    ($x, @params) = $x->_find_round_parameters(@r);
+
+    return $x if $x->is_nan();  # error in _find_round_parameters?
+
+    # no rounding at all, so must use fallback
+    if (scalar @params == 0) {
+        # simulate old behaviour
+        $params[0] = $class->div_scale(); # and round to it as accuracy
+        $params[1] = undef;               # disable P
+        $scale = $params[0]+4;            # at least four more for proper round
+        $params[2] = $r[2];               # round mode by caller or undef
+        $fallback = 1;                    # to clear a/p afterwards
+    } else {
+        # the 4 below is empirical, and there might be cases where it is not
+        # enough...
+        $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
+    }
+
+    # when user set globals, they would interfere with our calculation, so
+    # disable them and later re-enable them
+    no strict 'refs';
+    my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
+    my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+    # we also need to disable any set A or P on $x (_find_round_parameters took
+    # them already into account), since these would interfere, too
+    delete $x->{_a};
+    delete $x->{_p};
+    # need to disable $upgrade in BigInt, to avoid deep recursion
+    local $Math::BigInt::upgrade = undef;
+
+    my ($limit, $v, $u, $below, $factor, $next, $over);
+
+    $u = $x->copy()->blog(undef, $scale)->bmul($y);
+    my $do_invert = ($u->{sign} eq '-');
+    $u->bneg()  if $do_invert;
+    $v = $class->bone();        # 1
+    $factor = $class->new(2);   # 2
+    $x->bone();                 # first term: 1
+
+    $below = $v->copy();
+    $over = $u->copy();
+
+    $limit = $class->new("1E-". ($scale-1));
+    #my $steps = 0;
+    while (3 < 5) {
+        # we calculate the next term, and add it to the last
+        # when the next term is below our limit, it won't affect the outcome
+        # anymore, so we stop:
+        $next = $over->copy()->bdiv($below, $scale);
+        last if $next->bacmp($limit) <= 0;
+        $x->badd($next);
+        # calculate things for the next term
+        $over *= $u;
+        $below *= $factor;
+        $factor->binc();
+
+        last if $x->{sign} !~ /^[-+]$/;
+
+        #$steps++;
+    }
+
+    if ($do_invert) {
+        my $x_copy = $x->copy();
+        $x->bone->bdiv($x_copy, $scale);
+    }
+
+    # shortcut to not run through _find_round_parameters again
+    if (defined $params[0]) {
+        $x->bround($params[0], $params[2]); # then round accordingly
+    } else {
+        $x->bfround($params[1], $params[2]); # then round accordingly
+    }
+    if ($fallback) {
+        # clear a/p after round, since user did not request it
+        delete $x->{_a};
+        delete $x->{_p};
+    }
+    # restore globals
+    $$abr = $ab;
+    $$pbr = $pb;
+    $x;
+}
+
+1;
+
+__END__
+
+=pod
 
-If there is no global precision or accuracy set, B<and> the operation in
-question was not called with a requested precision or accuracy, B<and> the
-input $x has no accuracy or precision set, then a fallback parameter will
-be used. For historical reasons, it is called C<div_scale> and can be accessed
-via:
+=head1 NAME
 
-       $d = Math::BigFloat->div_scale();       # query
-       Math::BigFloat->div_scale($n);          # set to $n digits
+Math::BigFloat - Arbitrary size floating point math package
 
-The default value for C<div_scale> is 40.
+=head1 SYNOPSIS
 
-In case the result of one operation has more digits than specified,
-it is rounded. The rounding mode taken is either the default mode, or the one
-supplied to the operation after the I<scale>:
+  use Math::BigFloat;
+
+  # Configuration methods (may be used as class methods and instance methods)
+
+  Math::BigFloat->accuracy();     # get class accuracy
+  Math::BigFloat->accuracy($n);   # set class accuracy
+  Math::BigFloat->precision();    # get class precision
+  Math::BigFloat->precision($n);  # set class precision
+  Math::BigFloat->round_mode();   # get class rounding mode
+  Math::BigFloat->round_mode($m); # set global round mode, must be one of
+                                  # 'even', 'odd', '+inf', '-inf', 'zero',
+                                  # 'trunc', or 'common'
+  Math::BigFloat->config();       # return hash with configuration
+
+  # Constructor methods (when the class methods below are used as instance
+  # methods, the value is assigned the invocand)
+
+  $x = Math::BigFloat->new($str);               # defaults to 0
+  $x = Math::BigFloat->new('0x123');            # from hexadecimal
+  $x = Math::BigFloat->new('0b101');            # from binary
+  $x = Math::BigFloat->from_hex('0xc.afep+3');  # from hex
+  $x = Math::BigFloat->from_hex('cafe');        # ditto
+  $x = Math::BigFloat->from_oct('1.3267p-4');   # from octal
+  $x = Math::BigFloat->from_oct('0377');        # ditto
+  $x = Math::BigFloat->from_bin('0b1.1001p-4'); # from binary
+  $x = Math::BigFloat->from_bin('0101');        # ditto
+  $x = Math::BigFloat->bzero();                 # create a +0
+  $x = Math::BigFloat->bone();                  # create a +1
+  $x = Math::BigFloat->bone('-');               # create a -1
+  $x = Math::BigFloat->binf();                  # create a +inf
+  $x = Math::BigFloat->binf('-');               # create a -inf
+  $x = Math::BigFloat->bnan();                  # create a Not-A-Number
+  $x = Math::BigFloat->bpi();                   # returns pi
+
+  $y = $x->copy();        # make a copy (unlike $y = $x)
+  $y = $x->as_int();      # return as BigInt
+
+  # Boolean methods (these don't modify the invocand)
+
+  $x->is_zero();          # if $x is 0
+  $x->is_one();           # if $x is +1
+  $x->is_one("+");        # ditto
+  $x->is_one("-");        # if $x is -1
+  $x->is_inf();           # if $x is +inf or -inf
+  $x->is_inf("+");        # if $x is +inf
+  $x->is_inf("-");        # if $x is -inf
+  $x->is_nan();           # if $x is NaN
+
+  $x->is_positive();      # if $x > 0
+  $x->is_pos();           # ditto
+  $x->is_negative();      # if $x < 0
+  $x->is_neg();           # ditto
+
+  $x->is_odd();           # if $x is odd
+  $x->is_even();          # if $x is even
+  $x->is_int();           # if $x is an integer
+
+  # Comparison methods
+
+  $x->bcmp($y);           # compare numbers (undef, < 0, == 0, > 0)
+  $x->bacmp($y);          # compare absolutely (undef, < 0, == 0, > 0)
+  $x->beq($y);            # true if and only if $x == $y
+  $x->bne($y);            # true if and only if $x != $y
+  $x->blt($y);            # true if and only if $x < $y
+  $x->ble($y);            # true if and only if $x <= $y
+  $x->bgt($y);            # true if and only if $x > $y
+  $x->bge($y);            # true if and only if $x >= $y
+
+  # Arithmetic methods
+
+  $x->bneg();             # negation
+  $x->babs();             # absolute value
+  $x->bsgn();             # sign function (-1, 0, 1, or NaN)
+  $x->bnorm();            # normalize (no-op)
+  $x->binc();             # increment $x by 1
+  $x->bdec();             # decrement $x by 1
+  $x->badd($y);           # addition (add $y to $x)
+  $x->bsub($y);           # subtraction (subtract $y from $x)
+  $x->bmul($y);           # multiplication (multiply $x by $y)
+  $x->bmuladd($y,$z);     # $x = $x * $y + $z
+  $x->bdiv($y);           # division (floored), set $x to quotient
+                          # return (quo,rem) or quo if scalar
+  $x->btdiv($y);          # division (truncated), set $x to quotient
+                          # return (quo,rem) or quo if scalar
+  $x->bmod($y);           # modulus (x % y)
+  $x->btmod($y);          # modulus (truncated)
+  $x->bmodinv($mod);      # modular multiplicative inverse
+  $x->bmodpow($y,$mod);   # modular exponentiation (($x ** $y) % $mod)
+  $x->bpow($y);           # power of arguments (x ** y)
+  $x->blog();             # logarithm of $x to base e (Euler's number)
+  $x->blog($base);        # logarithm of $x to base $base (e.g., base 2)
+  $x->bexp();             # calculate e ** $x where e is Euler's number
+  $x->bnok($y);           # x over y (binomial coefficient n over k)
+  $x->bsin();             # sine
+  $x->bcos();             # cosine
+  $x->batan();            # inverse tangent
+  $x->batan2($y);         # two-argument inverse tangent
+  $x->bsqrt();            # calculate square-root
+  $x->broot($y);          # $y'th root of $x (e.g. $y == 3 => cubic root)
+  $x->bfac();             # factorial of $x (1*2*3*4*..$x)
+
+  $x->blsft($n);          # left shift $n places in base 2
+  $x->blsft($n,$b);       # left shift $n places in base $b
+                          # returns (quo,rem) or quo (scalar context)
+  $x->brsft($n);          # right shift $n places in base 2
+  $x->brsft($n,$b);       # right shift $n places in base $b
+                          # returns (quo,rem) or quo (scalar context)
+
+  # Bitwise methods
+
+  $x->band($y);           # bitwise and
+  $x->bior($y);           # bitwise inclusive or
+  $x->bxor($y);           # bitwise exclusive or
+  $x->bnot();             # bitwise not (two's complement)
+
+  # Rounding methods
+  $x->round($A,$P,$mode); # round to accuracy or precision using
+                          # rounding mode $mode
+  $x->bround($n);         # accuracy: preserve $n digits
+  $x->bfround($n);        # $n > 0: round to $nth digit left of dec. point
+                          # $n < 0: round to $nth digit right of dec. point
+  $x->bfloor();           # round towards minus infinity
+  $x->bceil();            # round towards plus infinity
+  $x->bint();             # round towards zero
+
+  # Other mathematical methods
+
+  $x->bgcd($y);            # greatest common divisor
+  $x->blcm($y);            # least common multiple
+
+  # Object property methods (do not modify the invocand)
+
+  $x->sign();              # the sign, either +, - or NaN
+  $x->digit($n);           # the nth digit, counting from the right
+  $x->digit(-$n);          # the nth digit, counting from the left
+  $x->length();            # return number of digits in number
+  ($xl,$f) = $x->length(); # length of number and length of fraction
+                           # part, latter is always 0 digits long
+                           # for Math::BigInt objects
+  $x->mantissa();          # return (signed) mantissa as BigInt
+  $x->exponent();          # return exponent as BigInt
+  $x->parts();             # return (mantissa,exponent) as BigInt
+  $x->sparts();            # mantissa and exponent (as integers)
+  $x->nparts();            # mantissa and exponent (normalised)
+  $x->eparts();            # mantissa and exponent (engineering notation)
+  $x->dparts();            # integer and fraction part
+
+  # Conversion methods (do not modify the invocand)
+
+  $x->bstr();         # decimal notation, possibly zero padded
+  $x->bsstr();        # string in scientific notation with integers
+  $x->bnstr();        # string in normalized notation
+  $x->bestr();        # string in engineering notation
+  $x->bdstr();        # string in decimal notation
+  $x->as_hex();       # as signed hexadecimal string with prefixed 0x
+  $x->as_bin();       # as signed binary string with prefixed 0b
+  $x->as_oct();       # as signed octal string with prefixed 0
+
+  # Other conversion methods
+
+  $x->numify();           # return as scalar (might overflow or underflow)
 
-    $x = Math::BigFloat->new(2);
-    Math::BigFloat->accuracy(5);             # 5 digits max
-    $y = $x->copy()->bdiv(3);                # will give 0.66667
-    $y = $x->copy()->bdiv(3,6);                      # will give 0.666667
-    $y = $x->copy()->bdiv(3,6,undef,'odd');   # will give 0.666667
-    Math::BigFloat->round_mode('zero');
-    $y = $x->copy()->bdiv(3,6);                      # will also give 0.666667
+=head1 DESCRIPTION
 
-Note that C<< Math::BigFloat->accuracy() >> and C<< Math::BigFloat->precision() >>
-set the global variables, and thus B<any> newly created number will be subject
-to the global rounding B<immediately>. This means that in the examples above, the
-C<3> as argument to C<bdiv()> will also get an accuracy of B<5>.
+Math::BigFloat provides support for arbitrary precision floating point.
+Overloading is also provided for Perl operators.
 
-It is less confusing to either calculate the result fully, and afterwards
-round it explicitly, or use the additional parameters to the math
-functions like so:
+All operators (including basic math operations) are overloaded if you
+declare your big floating point numbers as
 
-       use Math::BigFloat;
-       $x = Math::BigFloat->new(2);
-       $y = $x->copy()->bdiv(3);
-       print $y->bround(5),"\n";               # will give 0.66667
+  $x = Math::BigFloat -> new('12_3.456_789_123_456_789E-2');
 
-       or
+Operations with overloaded operators preserve the arguments, which is
+exactly what you expect.
 
-       use Math::BigFloat;
-       $x = Math::BigFloat->new(2);
-       $y = $x->copy()->bdiv(3,5);             # will give 0.66667
-       print "$y\n";
+=head2 Input
 
-=head2 Rounding
+Input values to these routines may be any scalar number or string that looks
+like a number and represents a floating point number.
 
 =over
 
-=item bfround ( +$scale )
+=item *
 
-Rounds to the $scale'th place left from the '.', counting from the dot.
-The first digit is numbered 1. 
+Leading and trailing whitespace is ignored.
 
-=item bfround ( -$scale )
+=item *
 
-Rounds to the $scale'th place right from the '.', counting from the dot.
+Leading and trailing zeros are ignored.
 
-=item bfround ( 0 )
+=item *
 
-Rounds to an integer.
+If the string has a "0x" prefix, it is interpreted as a hexadecimal number.
 
-=item bround  ( +$scale )
+=item *
 
-Preserves accuracy to $scale digits from the left (aka significant digits)
-and pads the rest with zeros. If the number is between 1 and -1, the
-significant digits count from the first non-zero after the '.'
+If the string has a "0b" prefix, it is interpreted as a binary number.
 
-=item bround  ( -$scale ) and bround ( 0 )
+=item *
 
-These are effectively no-ops.
+For hexadecimal and binary numbers, the exponent must be separated from the
+significand (mantissa) by the letter "p" or "P", not "e" or "E" as with decimal
+numbers.
+
+=item *
+
+One underline is allowed between any two digits, including hexadecimal and
+binary digits.
+
+=item *
+
+If the string can not be interpreted, NaN is returned.
 
 =back
 
-All rounding functions take as a second parameter a rounding mode from one of
-the following: 'even', 'odd', '+inf', '-inf', 'zero', 'trunc' or 'common'.
+Octal numbers are typically prefixed by "0", but since leading zeros are
+stripped, these methods can not automatically recognize octal numbers, so use
+the constructor from_oct() to intepret octal strings.
 
-The default rounding mode is 'even'. By using
-C<< Math::BigFloat->round_mode($round_mode); >> you can get and set the default
-mode for subsequent rounding. The usage of C<$Math::BigFloat::$round_mode> is
-no longer supported.
-The second parameter to the round functions then overrides the default
-temporarily. 
+Some examples of valid string input
 
-The C<as_number()> function returns a BigInt from a Math::BigFloat. It uses
-'trunc' as rounding mode to make it equivalent to:
+    Input string                Resulting value
+    123                         123
+    1.23e2                      123
+    12300e-2                    123
+    0xcafe                      51966
+    0b1101                      13
+    67_538_754                  67538754
+    -4_5_6.7_8_9e+0_1_0         -4567890000000
+    0x1.921fb5p+1               3.14159262180328369140625e+0
+    0b1.1001p-4                 9.765625e-2
 
-       $x = 2.5;
-       $y = int($x) + 2;
+=head2 Output
 
-You can override this by passing the desired rounding mode as parameter to
-C<as_number()>:
+Output values are usually Math::BigFloat objects.
 
-       $x = Math::BigFloat->new(2.5);
-       $y = $x->as_number('odd');      # $y = 3
+Boolean operators C<is_zero()>, C<is_one()>, C<is_inf()>, etc. return true or
+false.
+
+Comparison operators C<bcmp()> and C<bacmp()>) return -1, 0, 1, or
+undef.
 
 =head1 METHODS
 
 Math::BigFloat supports all methods that Math::BigInt supports, except it
-calculates non-integer results when possible. Please see L<Math::BigInt>
-for a full description of each method. Below are just the most important
-differences:
+calculates non-integer results when possible. Please see L<Math::BigInt> for a
+full description of each method. Below are just the most important differences:
+
+=head2 Configuration methods
 
 =over
 
 =item accuracy()
 
-      $x->accuracy(5);           # local for $x
-      CLASS->accuracy(5);        # global for all members of CLASS
-                                 # Note: This also applies to new()!
+    $x->accuracy(5);           # local for $x
+    CLASS->accuracy(5);        # global for all members of CLASS
+                               # Note: This also applies to new()!
 
-      $A = $x->accuracy();       # read out accuracy that affects $x
-      $A = CLASS->accuracy();    # read out global accuracy
+    $A = $x->accuracy();       # read out accuracy that affects $x
+    $A = CLASS->accuracy();    # read out global accuracy
 
 Set or get the global or local accuracy, aka how many significant digits the
 results have. If you set a global accuracy, then this also applies to new()!
@@ -4649,36 +4845,101 @@ influence of C<< CLASS->accuracy($A) >>, all results from math operations with
 that number will also be rounded.
 
 In most cases, you should probably round the results explicitly using one of
-L<Math::BigInt/round()>, L<Math::BigInt/bround()> or L<Math::BigInt/bfround()> or by passing the desired accuracy
-to the math operation as additional parameter:
+L<Math::BigInt/round()>, L<Math::BigInt/bround()> or L<Math::BigInt/bfround()>
+or by passing the desired accuracy to the math operation as additional
+parameter:
 
-        my $x = Math::BigInt->new(30000);
-        my $y = Math::BigInt->new(7);
-        print scalar $x->copy()->bdiv($y, 2);           # print 4300
-        print scalar $x->copy()->bdiv($y)->bround(2);   # print 4300
+    my $x = Math::BigInt->new(30000);
+    my $y = Math::BigInt->new(7);
+    print scalar $x->copy()->bdiv($y, 2);           # print 4300
+    print scalar $x->copy()->bdiv($y)->bround(2);   # print 4300
 
 =item precision()
 
-      $x->precision(-2);      # local for $x, round at the second
+    $x->precision(-2);        # local for $x, round at the second
                               # digit right of the dot
-      $x->precision(2);       # ditto, round at the second digit
+    $x->precision(2);         # ditto, round at the second digit
                               # left of the dot
 
-      CLASS->precision(5);    # Global for all members of CLASS
+    CLASS->precision(5);      # Global for all members of CLASS
                               # This also applies to new()!
-      CLASS->precision(-5);   # ditto
+    CLASS->precision(-5);     # ditto
 
-      $P = CLASS->precision();  # read out global precision
-      $P = $x->precision();     # read out precision that affects $x
+    $P = CLASS->precision();  # read out global precision
+    $P = $x->precision();     # read out precision that affects $x
 
 Note: You probably want to use L</accuracy()> instead. With L</accuracy()> you
 set the number of digits each result should have, with L</precision()> you
 set the place where to round!
 
+=back
+
+=head2 Constructor methods
+
+=over
+
+=item from_hex()
+
+    $x -> from_hex("0x1.921fb54442d18p+1");
+    $x = Math::BigFloat -> from_hex("0x1.921fb54442d18p+1");
+
+Interpret input as a hexadecimal string.A prefix ("0x", "x", ignoring case) is
+optional. A single underscore character ("_") may be placed between any two
+digits. If the input is invalid, a NaN is returned. The exponent is in base 2
+using decimal digits.
+
+If called as an instance method, the value is assigned to the invocand.
+
+=item from_oct()
+
+    $x -> from_oct("1.3267p-4");
+    $x = Math::BigFloat -> from_oct("1.3267p-4");
+
+Interpret input as an octal string. A single underscore character ("_") may be
+placed between any two digits. If the input is invalid, a NaN is returned. The
+exponent is in base 2 using decimal digits.
+
+If called as an instance method, the value is assigned to the invocand.
+
+=item from_bin()
+
+    $x -> from_bin("0b1.1001p-4");
+    $x = Math::BigFloat -> from_bin("0b1.1001p-4");
+
+Interpret input as a hexadecimal string. A prefix ("0b" or "b", ignoring case)
+is optional. A single underscore character ("_") may be placed between any two
+digits. If the input is invalid, a NaN is returned. The exponent is in base 2
+using decimal digits.
+
+If called as an instance method, the value is assigned to the invocand.
+
+=item bpi()
+
+    print Math::BigFloat->bpi(100), "\n";
+
+Calculate PI to N digits (including the 3 before the dot). The result is
+rounded according to the current rounding mode, which defaults to "even".
+
+This method was added in v1.87 of Math::BigInt (June 2007).
+
+=back
+
+=head2 Arithmetic methods
+
+=over
+
+=item bmuladd()
+
+    $x->bmuladd($y,$z);
+
+Multiply $x by $y, and then add $z to the result.
+
+This method was added in v1.87 of Math::BigInt (June 2007).
+
 =item bdiv()
 
-        $q = $x->bdiv($y);
-        ($q, $r) = $x->bdiv($y);
+    $q = $x->bdiv($y);
+    ($q, $r) = $x->bdiv($y);
 
 In scalar context, divides $x by $y and returns the result to the given or
 default accuracy/precision. In list context, does floored division
@@ -4687,7 +4948,7 @@ $r. The remainer (modulo) is equal to what is returned by C<$x->bmod($y)>.
 
 =item bmod()
 
-       $x->bmod($y);
+    $x->bmod($y);
 
 Returns $x modulo $y. When $x is finite, and $y is finite and non-zero, the
 result is identical to the remainder after floored division (F-division). If,
@@ -4696,7 +4957,7 @@ from Perl's % operator.
 
 =item bexp()
 
-       $x->bexp($accuracy);            # calculate e ** X
+    $x->bexp($accuracy);            # calculate e ** X
 
 Calculates the expression C<e ** $x> where C<e> is Euler's number.
 
@@ -4704,72 +4965,55 @@ This method was added in v1.82 of Math::BigInt (April 2007).
 
 =item bnok()
 
-       $x->bnok($y);   # x over y (binomial coefficient n over k)
+    $x->bnok($y);   # x over y (binomial coefficient n over k)
 
 Calculates the binomial coefficient n over k, also called the "choose"
 function. The result is equivalent to:
 
-       ( n )      n!
-       | - |  = -------
-       ( k )    k!(n-k)!
+    ( n )      n!
+    | - |  = -------
+    ( k )    k!(n-k)!
 
 This method was added in v1.84 of Math::BigInt (April 2007).
 
-=item bpi()
+=item bsin()
 
-       print Math::BigFloat->bpi(100), "\n";
+    my $x = Math::BigFloat->new(1);
+    print $x->bsin(100), "\n";
 
-Calculate PI to N digits (including the 3 before the dot). The result is
-rounded according to the current rounding mode, which defaults to "even".
+Calculate the sinus of $x, modifying $x in place.
 
 This method was added in v1.87 of Math::BigInt (June 2007).
 
 =item bcos()
 
-       my $x = Math::BigFloat->new(1);
-       print $x->bcos(100), "\n";
+    my $x = Math::BigFloat->new(1);
+    print $x->bcos(100), "\n";
 
 Calculate the cosinus of $x, modifying $x in place.
 
 This method was added in v1.87 of Math::BigInt (June 2007).
 
-=item bsin()
+=item batan()
 
-       my $x = Math::BigFloat->new(1);
-       print $x->bsin(100), "\n";
+    my $x = Math::BigFloat->new(1);
+    print $x->batan(100), "\n";
 
-Calculate the sinus of $x, modifying $x in place.
+Calculate the arcus tanges of $x, modifying $x in place. See also L</batan2()>.
 
 This method was added in v1.87 of Math::BigInt (June 2007).
 
 =item batan2()
 
-       my $y = Math::BigFloat->new(2);
-       my $x = Math::BigFloat->new(3);
-       print $y->batan2($x), "\n";
+    my $y = Math::BigFloat->new(2);
+    my $x = Math::BigFloat->new(3);
+    print $y->batan2($x), "\n";
 
 Calculate the arcus tanges of C<$y> divided by C<$x>, modifying $y in place.
 See also L</batan()>.
 
 This method was added in v1.87 of Math::BigInt (June 2007).
 
-=item batan()
-
-       my $x = Math::BigFloat->new(1);
-       print $x->batan(100), "\n";
-
-Calculate the arcus tanges of $x, modifying $x in place. See also L</batan2()>.
-
-This method was added in v1.87 of Math::BigInt (June 2007).
-
-=item bmuladd()
-
-       $x->bmuladd($y,$z);
-
-Multiply $x by $y, and then add $z to the result.
-
-This method was added in v1.87 of Math::BigInt (June 2007).
-
 =item as_float()
 
 This method is called when Math::BigFloat encounters an object it doesn't know
@@ -4788,43 +5032,116 @@ C<ref($x)-E<gt>new()> can parse to create an object.
 
 In Math::BigFloat, C<as_float()> has the same effect as C<copy()>.
 
-=item from_hex()
+=back
 
-    $x -> from_hex("0x1.921fb54442d18p+1");
-    $x = Math::BigFloat -> from_hex("0x1.921fb54442d18p+1");
+=head2 ACCURACY AND PRECISION
 
-Interpret input as a hexadecimal string.A prefix ("0x", "x", ignoring case) is
-optional. A single underscore character ("_") may be placed between any two
-digits. If the input is invalid, a NaN is returned. The exponent is in base 2
-using decimal digits.
+See also: L<Rounding|/Rounding>.
 
-If called as an instance method, the value is assigned to the invocand.
+Math::BigFloat supports both precision (rounding to a certain place before or
+after the dot) and accuracy (rounding to a certain number of digits). For a
+full documentation, examples and tips on these topics please see the large
+section about rounding in L<Math::BigInt>.
 
-=item from_bin()
+Since things like C<sqrt(2)> or C<1 / 3> must presented with a limited
+accuracy lest a operation consumes all resources, each operation produces
+no more than the requested number of digits.
 
-    $x -> from_bin("0b1.1001p-4");
-    $x = Math::BigFloat -> from_bin("0b1.1001p-4");
+If there is no global precision or accuracy set, B<and> the operation in
+question was not called with a requested precision or accuracy, B<and> the
+input $x has no accuracy or precision set, then a fallback parameter will
+be used. For historical reasons, it is called C<div_scale> and can be accessed
+via:
 
-Interpret input as a hexadecimal string. A prefix ("0b" or "b", ignoring case)
-is optional. A single underscore character ("_") may be placed between any two
-digits. If the input is invalid, a NaN is returned. The exponent is in base 2
-using decimal digits.
+    $d = Math::BigFloat->div_scale();       # query
+    Math::BigFloat->div_scale($n);          # set to $n digits
 
-If called as an instance method, the value is assigned to the invocand.
+The default value for C<div_scale> is 40.
 
-=item from_oct()
+In case the result of one operation has more digits than specified,
+it is rounded. The rounding mode taken is either the default mode, or the one
+supplied to the operation after the I<scale>:
 
-    $x -> from_oct("1.3267p-4");
-    $x = Math::BigFloat -> from_oct("1.3267p-4");
+    $x = Math::BigFloat->new(2);
+    Math::BigFloat->accuracy(5);              # 5 digits max
+    $y = $x->copy()->bdiv(3);                 # gives 0.66667
+    $y = $x->copy()->bdiv(3,6);               # gives 0.666667
+    $y = $x->copy()->bdiv(3,6,undef,'odd');   # gives 0.666667
+    Math::BigFloat->round_mode('zero');
+    $y = $x->copy()->bdiv(3,6);               # will also give 0.666667
 
-Interpret input as an octal string. A single underscore character ("_") may be
-placed between any two digits. If the input is invalid, a NaN is returned. The
-exponent is in base 2 using decimal digits.
+Note that C<< Math::BigFloat->accuracy() >> and C<< Math::BigFloat->precision() >>
+set the global variables, and thus B<any> newly created number will be subject
+to the global rounding B<immediately>. This means that in the examples above, the
+C<3> as argument to C<bdiv()> will also get an accuracy of B<5>.
 
-If called as an instance method, the value is assigned to the invocand.
+It is less confusing to either calculate the result fully, and afterwards
+round it explicitly, or use the additional parameters to the math
+functions like so:
+
+    use Math::BigFloat;
+    $x = Math::BigFloat->new(2);
+    $y = $x->copy()->bdiv(3);
+    print $y->bround(5),"\n";               # gives 0.66667
+
+    or
+
+    use Math::BigFloat;
+    $x = Math::BigFloat->new(2);
+    $y = $x->copy()->bdiv(3,5);             # gives 0.66667
+    print "$y\n";
+
+=head2 Rounding
+
+=over
+
+=item bfround ( +$scale )
+
+Rounds to the $scale'th place left from the '.', counting from the dot.
+The first digit is numbered 1.
+
+=item bfround ( -$scale )
+
+Rounds to the $scale'th place right from the '.', counting from the dot.
+
+=item bfround ( 0 )
+
+Rounds to an integer.
+
+=item bround  ( +$scale )
+
+Preserves accuracy to $scale digits from the left (aka significant digits) and
+pads the rest with zeros. If the number is between 1 and -1, the significant
+digits count from the first non-zero after the '.'
+
+=item bround  ( -$scale ) and bround ( 0 )
+
+These are effectively no-ops.
 
 =back
 
+All rounding functions take as a second parameter a rounding mode from one of
+the following: 'even', 'odd', '+inf', '-inf', 'zero', 'trunc' or 'common'.
+
+The default rounding mode is 'even'. By using
+C<< Math::BigFloat->round_mode($round_mode); >> you can get and set the default
+mode for subsequent rounding. The usage of C<$Math::BigFloat::$round_mode> is
+no longer supported.
+The second parameter to the round functions then overrides the default
+temporarily.
+
+The C<as_number()> function returns a BigInt from a Math::BigFloat. It uses
+'trunc' as rounding mode to make it equivalent to:
+
+    $x = 2.5;
+    $y = int($x) + 2;
+
+You can override this by passing the desired rounding mode as parameter to
+C<as_number()>:
+
+    $x = Math::BigFloat->new(2.5);
+    $y = $x->as_number('odd');      # $y = 3
+
 =head1 Autocreating constants
 
 After C<use Math::BigFloat ':constant'> all the floating point constants
@@ -4833,13 +5150,13 @@ happens at compile time.
 
 In particular
 
-  perl -MMath::BigFloat=:constant -e 'print 2E-100,"\n"'
+    perl -MMath::BigFloat=:constant -e 'print 2E-100,"\n"'
 
-prints the value of C<2E-100>. Note that without conversion of 
-constants the expression 2E-100 will be calculated as normal floating point 
+prints the value of C<2E-100>. Note that without conversion of
+constants the expression 2E-100 will be calculated as normal floating point
 number.
 
-Please note that ':constant' does not affect integer constants, nor binary 
+Please note that ':constant' does not affect integer constants, nor binary
 nor hexadecimal constants. Use L<bignum> or L<Math::BigInt> to get this to
 work.
 
@@ -4848,11 +5165,11 @@ work.
 Math with the numbers is done (by default) by a module called
 Math::BigInt::Calc. This is equivalent to saying:
 
-       use Math::BigFloat lib => 'Calc';
+    use Math::BigFloat lib => 'Calc';
 
 You can change this by using:
 
-       use Math::BigFloat lib => 'GMP';
+    use Math::BigFloat lib => 'GMP';
 
 B<Note>: General purpose packages should not be explicit about the library
 to use; let the script author decide which is best.
@@ -4860,18 +5177,18 @@ to use; let the script author decide which is best.
 Note: The keyword 'lib' will warn when the requested library could not be
 loaded. To suppress the warning use 'try' instead:
 
-       use Math::BigFloat try => 'GMP';
+    use Math::BigFloat try => 'GMP';
 
 If your script works with huge numbers and Calc is too slow for them,
 you can also for the loading of one of these libraries and if none
 of them can be used, the code will die:
 
-        use Math::BigFloat only => 'GMP,Pari';
+    use Math::BigFloat only => 'GMP,Pari';
 
 The following would first try to find Math::BigInt::Foo, then
 Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:
 
-       use Math::BigFloat lib => 'Foo,Math::BigInt::Bar';
+    use Math::BigFloat lib => 'Foo,Math::BigInt::Bar';
 
 See the respective low-level library documentation for further details.
 
@@ -4879,16 +5196,16 @@ Please note that Math::BigFloat does B<not> use the denoted library itself,
 but it merely passes the lib argument to Math::BigInt. So, instead of the need
 to do:
 
-       use Math::BigInt lib => 'GMP';
-       use Math::BigFloat;
+    use Math::BigInt lib => 'GMP';
+    use Math::BigFloat;
 
 you can roll it all into one line:
 
-       use Math::BigFloat lib => 'GMP';
+    use Math::BigFloat lib => 'GMP';
 
 It is also possible to just require Math::BigFloat:
 
-       require Math::BigFloat;
+    require Math::BigFloat;
 
 This will load the necessary things (like BigInt) when they are needed, and
 automatically.
@@ -4901,7 +5218,7 @@ a different low-level library.
 For backwards compatibility reasons it is still possible to
 request a different storage class for use with Math::BigFloat:
 
-        use Math::BigFloat with => 'Math::BigInt::Lite';
+    use Math::BigFloat with => 'Math::BigInt::Lite';
 
 However, this request is ignored, as the current code now uses the low-level
 math library for directly storing the number parts.
@@ -4910,9 +5227,9 @@ math library for directly storing the number parts.
 
 C<Math::BigFloat> exports nothing by default, but can export the C<bpi()> method:
 
-       use Math::BigFloat qw/bpi/;
+    use Math::BigFloat qw/bpi/;
 
-       print bpi(10), "\n";
+    print bpi(10), "\n";
 
 =head1 CAVEATS
 
@@ -4920,14 +5237,14 @@ Do not try to be clever to insert some operations in between switching
 libraries:
 
     require Math::BigFloat;
-    my $matter = Math::BigFloat->bone() + 4;   # load BigInt and Calc
-    Math::BigFloat->import( lib => 'Pari' );   # load Pari, too
-    my $anti_matter = Math::BigFloat->bone()+4;        # now use Pari
+    my $matter = Math::BigFloat->bone() + 4;    # load BigInt and Calc
+    Math::BigFloat->import( lib => 'Pari' );    # load Pari, too
+    my $anti_matter = Math::BigFloat->bone()+4; # now use Pari
 
 This will create objects with numbers stored in two different backend libraries,
 and B<VERY BAD THINGS> will happen when you use these together:
 
-       my $flash_and_bang = $matter + $anti_matter;    # Don't do this!
+    my $flash_and_bang = $matter + $anti_matter;    # Don't do this!
 
 =over
 
@@ -4937,35 +5254,20 @@ Both stringify and bstr() now drop the leading '+'. The old code would return
 '+1.23', the new returns '1.23'. See the documentation in L<Math::BigInt> for
 reasoning and details.
 
-=item bdiv()
-
-The following will probably not print what you expect:
-
-       print $c->bdiv(123.456),"\n";
-
-It prints both quotient and remainder since print works in list context. Also,
-bdiv() will modify $c, so be careful. You probably want to use
-
-    print $c / 123.456,"\n";
-    # or if you want to modify $c:
-    print scalar $c->bdiv(123.456),"\n";
-
-instead.
-
 =item brsft()
 
 The following will probably not print what you expect:
 
-       my $c = Math::BigFloat->new('3.14159');
-        print $c->brsft(3,10),"\n";    # prints 0.00314153.1415
+    my $c = Math::BigFloat->new('3.14159');
+    print $c->brsft(3,10),"\n";     # prints 0.00314153.1415
 
 It prints both quotient and remainder, since print calls C<brsft()> in list
 context. Also, C<< $c->brsft() >> will modify $c, so be careful.
 You probably want to use
 
-       print scalar $c->copy()->brsft(3,10),"\n";
-       # or if you really want to modify $c
-        print scalar $c->brsft(3,10),"\n";
+    print scalar $c->copy()->brsft(3,10),"\n";
+    # or if you really want to modify $c
+    print scalar $c->brsft(3,10),"\n";
 
 instead.
 
@@ -4973,24 +5275,14 @@ instead.
 
 Beware of:
 
-       $x = Math::BigFloat->new(5);
-       $y = $x;
+    $x = Math::BigFloat->new(5);
+    $y = $x;
 
 It will not do what you think, e.g. making a copy of $x. Instead it just makes
 a second reference to the B<same> object and stores it in $y. Thus anything
 that modifies $x will modify $y (except overloaded math operators), and vice
 versa. See L<Math::BigInt> for details and how to avoid that.
 
-=item bpow()
-
-C<bpow()> now modifies the first argument, unlike the old code which left
-it alone and only returned the result. This is to be consistent with
-C<badd()> etc. The first will modify $x, the second one won't:
-
-       print bpow($x,$i),"\n";         # modify $x
-       print $x->bpow($i),"\n";        # ditto
-       print $x ** $i,"\n";            # leave $x alone 
-
 =item precision() vs. accuracy()
 
 A common pitfall is to use L</precision()> when you want to round a result to
@@ -4998,39 +5290,39 @@ a certain number of digits:
 
     use Math::BigFloat;
 
-    Math::BigFloat->precision(4);          # does not do what you
-                                           # think it does
-    my $x = Math::BigFloat->new(12345);            # rounds $x to "12000"!
-    print "$x\n";                          # print "12000"
-    my $y = Math::BigFloat->new(3);        # rounds $y to "0"!
-    print "$y\n";                          # print "0"
-    $z = $x / $y;                          # 12000 / 0 => NaN!
+    Math::BigFloat->precision(4);           # does not do what you
+                                            # think it does
+    my $x = Math::BigFloat->new(12345);     # rounds $x to "12000"!
+    print "$x\n";                           # print "12000"
+    my $y = Math::BigFloat->new(3);         # rounds $y to "0"!
+    print "$y\n";                           # print "0"
+    $z = $x / $y;                           # 12000 / 0 => NaN!
     print "$z\n";
-    print $z->precision(),"\n";                    # 4
+    print $z->precision(),"\n";             # 4
 
 Replacing L</precision()> with L</accuracy()> is probably not what you want, either:
 
     use Math::BigFloat;
 
-    Math::BigFloat->accuracy(4);         # enables global rounding:
+    Math::BigFloat->accuracy(4);          # enables global rounding:
     my $x = Math::BigFloat->new(123456);  # rounded immediately
                                           #   to "12350"
-    print "$x\n";                        # print "123500"
-    my $y = Math::BigFloat->new(3);      # rounded to "3
-    print "$y\n";                        # print "3"
+    print "$x\n";                         # print "123500"
+    my $y = Math::BigFloat->new(3);       # rounded to "3
+    print "$y\n";                         # print "3"
     print $z = $x->copy()->bdiv($y),"\n"; # 41170
-    print $z->accuracy(),"\n";           # 4
+    print $z->accuracy(),"\n";            # 4
 
 What you want to use instead is:
 
     use Math::BigFloat;
 
     my $x = Math::BigFloat->new(123456);    # no rounding
-    print "$x\n";                          # print "123456"
-    my $y = Math::BigFloat->new(3);        # no rounding
-    print "$y\n";                          # print "3"
+    print "$x\n";                           # print "123456"
+    my $y = Math::BigFloat->new(3);         # no rounding
+    print "$y\n";                           # print "3"
     print $z = $x->copy()->bdiv($y,4),"\n"; # 41150
-    print $z->accuracy(),"\n";             # undef
+    print $z->accuracy(),"\n";              # undef
 
 In addition to computing what you expected, the last example also does B<not>
 "taint" the result with an accuracy or precision setting, which would
@@ -5124,11 +5416,11 @@ Completely rewritten by Tels L<http://bloodgate.com> in 2001-2008.
 
 =item *
 
-Florian Ragwitz L<flora@cpan.org>, 2010.
+Florian Ragwitz E<lt>flora@cpan.orgE<gt>, 2010.
 
 =item *
 
-Peter John Acklam, L<pjacklam@online.no>, 2011-.
+Peter John Acklam E<lt>pjacklam@online.noE<gt>, 2011-.
 
 =back
 
index a50b37e..d0d6b74 100644 (file)
@@ -7,10 +7,9 @@ package Math::BigInt;
 
 # The following hash values are used:
 #   value: unsigned int with actual value (as a Math::BigInt::Calc or similar)
-#   sign : +,-,NaN,+inf,-inf
+#   sign : +, -, NaN, +inf, -inf
 #   _a   : accuracy
 #   _p   : precision
-#   _f   : flags, used by MBF to flag parts of a float as untouchable
 
 # Remember not to take shortcuts ala $xs = $x->{value}; $CALC->foo($xs); since
 # underlying lib might change the reference!
@@ -19,17 +18,14 @@ use 5.006001;
 use strict;
 use warnings;
 
-our $VERSION = '1.999715';
+use Carp ();
+
+our $VERSION = '1.999726';
 $VERSION = eval $VERSION;
 
 our @ISA = qw(Exporter);
 our @EXPORT_OK = qw(objectify bgcd blcm);
 
-# _trap_inf and _trap_nan are internal and should never be accessed from the
-# outside
-our ($round_mode, $accuracy, $precision, $div_scale, $rnd_mode,
-     $upgrade, $downgrade, $_trap_nan, $_trap_inf);
-
 my $class = "Math::BigInt";
 
 # Inside overload, the first arg is always an object. If the original code had
@@ -43,120 +39,176 @@ my $class = "Math::BigInt";
 # Thus inheritance of overload operators becomes possible and transparent for
 # our subclasses without the need to repeat the entire overload section there.
 
-# We register ops that are not registerable yet, so suppress warnings
-{ no warnings;
 use overload
-'='     =>      sub { $_[0]->copy(); },
-
-# some shortcuts for speed (assumes that reversed order of arguments is routed
-# to normal '+' and we thus can always modify first arg. If this is changed,
-# this breaks and must be adjusted.)
-'+='    =>      sub { $_[0]->badd($_[1]); },
-'-='    =>      sub { $_[0]->bsub($_[1]); },
-'*='    =>      sub { $_[0]->bmul($_[1]); },
-'/='    =>      sub { scalar $_[0]->bdiv($_[1]); },
-'%='    =>      sub { $_[0]->bmod($_[1]); },
-'^='    =>      sub { $_[0]->bxor($_[1]); },
-'&='    =>      sub { $_[0]->band($_[1]); },
-'|='    =>      sub { $_[0]->bior($_[1]); },
-
-'**='   =>      sub { $_[0]->bpow($_[1]); },
-'<<='   =>      sub { $_[0]->blsft($_[1]); },
-'>>='   =>      sub { $_[0]->brsft($_[1]); },
-
-# not supported by Perl yet
-'..'    =>      \&_pointpoint,
-
-'<=>'   =>      sub { my $rc = $_[2] ?
-                      ref($_[0])->bcmp($_[1],$_[0]) :
-                      $_[0]->bcmp($_[1]);
-                      $rc = 1 unless defined $rc;
-                      $rc <=> 0;
-                },
-# we need '>=' to get things like "1 >= NaN" right:
-'>='    =>      sub { my $rc = $_[2] ?
-                      ref($_[0])->bcmp($_[1],$_[0]) :
-                      $_[0]->bcmp($_[1]);
-                      # if there was a NaN involved, return false
-                      return '' unless defined $rc;
-                      $rc >= 0;
-                },
-'cmp'   =>      sub {
-         $_[2] ?
-               "$_[1]" cmp $_[0]->bstr() :
-               $_[0]->bstr() cmp "$_[1]" },
-
-'cos'   =>      sub { $_[0]->copy->bcos(); },
-'sin'   =>      sub { $_[0]->copy->bsin(); },
-'atan2' =>      sub { $_[2] ?
-                        ref($_[0])->new($_[1])->batan2($_[0]) :
-                        $_[0]->copy()->batan2($_[1]) },
-
-# are not yet overloadable
-#'hex'  =>      sub { print "hex"; $_[0]; },
-#'oct'  =>      sub { print "oct"; $_[0]; },
-
-# log(N) is log(N, e), where e is Euler's number
-'log'   =>      sub { $_[0]->copy()->blog(); },
-'exp'   =>      sub { $_[0]->copy()->bexp($_[1]); },
-'int'   =>      sub { $_[0]->copy(); },
-'neg'   =>      sub { $_[0]->copy()->bneg(); },
-'abs'   =>      sub { $_[0]->copy()->babs(); },
-'sqrt'  =>      sub { $_[0]->copy()->bsqrt(); },
-'~'     =>      sub { $_[0]->copy()->bnot(); },
-
-# for subtract it's a bit tricky to not modify b: b-a => -a+b
-'-'     =>      sub { my $c = $_[0]->copy; $_[2] ?
-                        $c->bneg()->badd( $_[1]) :
-                        $c->bsub( $_[1]) },
-'+'     =>      sub { $_[0]->copy()->badd($_[1]); },
-'*'     =>      sub { $_[0]->copy()->bmul($_[1]); },
-
-'/'     =>      sub {
-   $_[2] ? ref($_[0])->new($_[1])->bdiv($_[0]) : $_[0]->copy->bdiv($_[1]);
-  },
-'%'     =>      sub {
-   $_[2] ? ref($_[0])->new($_[1])->bmod($_[0]) : $_[0]->copy->bmod($_[1]);
-  },
-'**'    =>      sub {
-   $_[2] ? ref($_[0])->new($_[1])->bpow($_[0]) : $_[0]->copy->bpow($_[1]);
-  },
-'<<'    =>      sub {
-   $_[2] ? ref($_[0])->new($_[1])->blsft($_[0]) : $_[0]->copy->blsft($_[1]);
-  },
-'>>'    =>      sub {
-   $_[2] ? ref($_[0])->new($_[1])->brsft($_[0]) : $_[0]->copy->brsft($_[1]);
-  },
-'&'     =>      sub {
-   $_[2] ? ref($_[0])->new($_[1])->band($_[0]) : $_[0]->copy->band($_[1]);
-  },
-'|'     =>      sub {
-   $_[2] ? ref($_[0])->new($_[1])->bior($_[0]) : $_[0]->copy->bior($_[1]);
-  },
-'^'     =>      sub {
-   $_[2] ? ref($_[0])->new($_[1])->bxor($_[0]) : $_[0]->copy->bxor($_[1]);
-  },
-
-# can modify arg of ++ and --, so avoid a copy() for speed, but don't
-# use $_[0]->bone(), it would modify $_[0] to be 1!
-'++'    =>      sub { $_[0]->binc() },
-'--'    =>      sub { $_[0]->bdec() },
-
-# if overloaded, O(1) instead of O(N) and twice as fast for small numbers
-'bool'  =>      sub {
-  # this kludge is needed for perl prior 5.6.0 since returning 0 here fails :-/
-  # v5.6.1 dumps on this: return !$_[0]->is_zero() || undef;                :-(
-  my $t = undef;
-  $t = 1 if !$_[0]->is_zero();
-  $t;
-  },
-
-# the original qw() does not work with the TIESCALAR below, why?
-# Order of arguments insignificant
-'""' => sub { $_[0]->bstr(); },
-'0+' => sub { $_[0]->numify(); }
-;
-} # no warnings scope
+
+  # overload key: with_assign
+
+  '+'     =>      sub { $_[0] -> copy() -> badd($_[1]); },
+
+  '-'     =>      sub { my $c = $_[0] -> copy;
+                        $_[2] ? $c -> bneg() -> badd($_[1])
+                              : $c -> bsub($_[1]); },
+
+  '*'     =>      sub { $_[0] -> copy() -> bmul($_[1]); },
+
+  '/'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bdiv($_[0])
+                              : $_[0] -> copy -> bdiv($_[1]); },
+
+
+  '%'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bmod($_[0])
+                              : $_[0] -> copy -> bmod($_[1]); },
+
+  '**'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bpow($_[0])
+                              : $_[0] -> copy -> bpow($_[1]); },
+
+  '<<'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> blsft($_[0])
+                              : $_[0] -> copy -> blsft($_[1]); },
+
+  '>>'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> brsft($_[0])
+                              : $_[0] -> copy -> brsft($_[1]); },
+
+  # overload key: assign
+
+  '+='    =>      sub { $_[0]->badd($_[1]); },
+
+  '-='    =>      sub { $_[0]->bsub($_[1]); },
+
+  '*='    =>      sub { $_[0]->bmul($_[1]); },
+
+  '/='    =>      sub { scalar $_[0]->bdiv($_[1]); },
+
+  '%='    =>      sub { $_[0]->bmod($_[1]); },
+
+  '**='   =>      sub { $_[0]->bpow($_[1]); },
+
+
+  '<<='   =>      sub { $_[0]->blsft($_[1]); },
+
+  '>>='   =>      sub { $_[0]->brsft($_[1]); },
+
+#  'x='    =>      sub { },
+
+#  '.='    =>      sub { },
+
+  # overload key: num_comparison
+
+  '<'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> blt($_[0])
+                              : $_[0] -> blt($_[1]); },
+
+  '<='    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> ble($_[0])
+                              : $_[0] -> ble($_[1]); },
+
+  '>'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bgt($_[0])
+                              : $_[0] -> bgt($_[1]); },
+
+  '>='    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bge($_[0])
+                              : $_[0] -> bge($_[1]); },
+
+  '=='    =>      sub { $_[0] -> beq($_[1]); },
+
+  '!='    =>      sub { $_[0] -> bne($_[1]); },
+
+  # overload key: 3way_comparison
+
+  '<=>'   =>      sub { my $cmp = $_[0] -> bcmp($_[1]);
+                        defined($cmp) && $_[2] ? -$cmp : $cmp; },
+
+  'cmp'   =>      sub { $_[2] ? "$_[1]" cmp $_[0] -> bstr()
+                              : $_[0] -> bstr() cmp "$_[1]"; },
+
+  # overload key: str_comparison
+
+#  'lt'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrlt($_[0])
+#                              : $_[0] -> bstrlt($_[1]); },
+#
+#  'le'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrle($_[0])
+#                              : $_[0] -> bstrle($_[1]); },
+#
+#  'gt'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrgt($_[0])
+#                              : $_[0] -> bstrgt($_[1]); },
+#
+#  'ge'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrge($_[0])
+#                              : $_[0] -> bstrge($_[1]); },
+#
+#  'eq'    =>      sub { $_[0] -> bstreq($_[1]); },
+#
+#  'ne'    =>      sub { $_[0] -> bstrne($_[1]); },
+
+  # overload key: binary
+
+  '&'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> band($_[0])
+                              : $_[0] -> copy -> band($_[1]); },
+
+  '&='    =>      sub { $_[0] -> band($_[1]); },
+
+  '|'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bior($_[0])
+                              : $_[0] -> copy -> bior($_[1]); },
+
+  '|='    =>      sub { $_[0] -> bior($_[1]); },
+
+  '^'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bxor($_[0])
+                              : $_[0] -> copy -> bxor($_[1]); },
+
+  '^='    =>      sub { $_[0] -> bxor($_[1]); },
+
+#  '&.'    =>      sub { },
+
+#  '&.='   =>      sub { },
+
+#  '|.'    =>      sub { },
+
+#  '|.='   =>      sub { },
+
+#  '^.'    =>      sub { },
+
+#  '^.='   =>      sub { },
+
+  # overload key: unary
+
+  'neg'   =>      sub { $_[0] -> copy() -> bneg(); },
+
+#  '!'     =>      sub { },
+
+  '~'     =>      sub { $_[0] -> copy() -> bnot(); },
+
+#  '~.'    =>      sub { },
+
+  # overload key: mutators
+
+  '++'    =>      sub { $_[0] -> binc() },
+
+  '--'    =>      sub { $_[0] -> bdec() },
+
+  # overload key: func
+
+  'atan2' =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> batan2($_[0])
+                              : $_[0] -> copy() -> batan2($_[1]); },
+
+  'cos'   =>      sub { $_[0] -> copy -> bcos(); },
+
+  'sin'   =>      sub { $_[0] -> copy -> bsin(); },
+
+  'exp'   =>      sub { $_[0] -> copy() -> bexp($_[1]); },
+
+  'abs'   =>      sub { $_[0] -> copy() -> babs(); },
+
+  'log'   =>      sub { $_[0] -> copy() -> blog(); },
+
+  'sqrt'  =>      sub { $_[0] -> copy() -> bsqrt(); },
+
+  'int'   =>      sub { $_[0] -> copy() -> bint(); },
+
+  # overload key: conversion
+
+  'bool'  =>      sub { $_[0] -> is_zero() ? '' : 1; },
+
+  '""'    =>      sub { $_[0] -> bstr(); },
+
+  '0+'    =>      sub { $_[0] -> numify(); },
+
+  '='     =>      sub { $_[0]->copy(); },
+
+  ;
 
 ##############################################################################
 # global constants, flags and accessory
@@ -164,18 +216,18 @@ use overload
 # These vars are public, but their direct usage is not recommended, use the
 # accessor methods instead
 
-$round_mode = 'even'; # one of 'even', 'odd', '+inf', '-inf', 'zero', 'trunc' or 'common'
-$accuracy   = undef;
-$precision  = undef;
-$div_scale  = 40;
-
-$upgrade = undef;                       # default is no upgrade
-$downgrade = undef;                     # default is no downgrade
+our $round_mode = 'even'; # one of 'even', 'odd', '+inf', '-inf', 'zero', 'trunc' or 'common'
+our $accuracy   = undef;
+our $precision  = undef;
+our $div_scale  = 40;
+our $upgrade    = undef;                    # default is no upgrade
+our $downgrade  = undef;                    # default is no downgrade
 
 # These are internally, and not to be used from the outside at all
 
-$_trap_nan = 0;                         # are NaNs ok? set w/ config()
-$_trap_inf = 0;                         # are infs ok? set w/ config()
+our $_trap_nan = 0;                         # are NaNs ok? set w/ config()
+our $_trap_inf = 0;                         # are infs ok? set w/ config()
+
 my $nan = 'NaN';                        # constants for easier life
 
 my $CALC = 'Math::BigInt::Calc';        # module to do the low level math
@@ -190,328 +242,287 @@ my $EMU_LIB = 'Math/BigInt/CalcEmu.pm'; # emulate low-level math
 ##############################################################################
 # the old code had $rnd_mode, so we need to support it, too
 
-$rnd_mode   = 'even';
-sub TIESCALAR  { my ($class) = @_; bless \$round_mode, $class; }
-sub FETCH      { return $round_mode; }
-sub STORE      { $rnd_mode = $_[0]->round_mode($_[1]); }
+our $rnd_mode   = 'even';
+
+sub TIESCALAR {
+    my ($class) = @_;
+    bless \$round_mode, $class;
+}
 
-BEGIN
-  {
-  # tie to enable $rnd_mode to work transparently
-  tie $rnd_mode, 'Math::BigInt';
+sub FETCH {
+    return $round_mode;
+}
 
-  # set up some handy alias names
-  *as_int = \&as_number;
-  *is_pos = \&is_positive;
-  *is_neg = \&is_negative;
-  }
+sub STORE {
+    $rnd_mode = $_[0]->round_mode($_[1]);
+}
 
-##############################################################################
+BEGIN {
+    # tie to enable $rnd_mode to work transparently
+    tie $rnd_mode, 'Math::BigInt';
 
-sub round_mode
-  {
-  no strict 'refs';
-  # make Class->round_mode() work
-  my $self = shift;
-  my $class = ref($self) || $self || __PACKAGE__;
-  if (defined $_[0])
-    {
-    my $m = shift;
-    if ($m !~ /^(even|odd|\+inf|\-inf|zero|trunc|common)$/)
-      {
-      require Carp; Carp::croak ("Unknown round mode '$m'");
-      }
-    return ${"${class}::round_mode"} = $m;
-    }
-  ${"${class}::round_mode"};
-  }
-
-sub upgrade
-  {
-  no strict 'refs';
-  # make Class->upgrade() work
-  my $self = shift;
-  my $class = ref($self) || $self || __PACKAGE__;
-  # need to set new value?
-  if (@_ > 0)
-    {
-    return ${"${class}::upgrade"} = $_[0];
-    }
-  ${"${class}::upgrade"};
-  }
-
-sub downgrade
-  {
-  no strict 'refs';
-  # make Class->downgrade() work
-  my $self = shift;
-  my $class = ref($self) || $self || __PACKAGE__;
-  # need to set new value?
-  if (@_ > 0)
-    {
-    return ${"${class}::downgrade"} = $_[0];
-    }
-  ${"${class}::downgrade"};
-  }
-
-sub div_scale
-  {
-  no strict 'refs';
-  # make Class->div_scale() work
-  my $self = shift;
-  my $class = ref($self) || $self || __PACKAGE__;
-  if (defined $_[0])
-    {
-    if ($_[0] < 0)
-      {
-      require Carp; Carp::croak ('div_scale must be greater than zero');
-      }
-    ${"${class}::div_scale"} = $_[0];
-    }
-  ${"${class}::div_scale"};
-  }
-
-sub accuracy
-  {
-  # $x->accuracy($a);           ref($x) $a
-  # $x->accuracy();             ref($x)
-  # Class->accuracy();          class
-  # Class->accuracy($a);        class $a
-
-  my $x = shift;
-  my $class = ref($x) || $x || __PACKAGE__;
-
-  no strict 'refs';
-  # need to set new value?
-  if (@_ > 0)
-    {
-    my $a = shift;
-    # convert objects to scalars to avoid deep recursion. If object doesn't
-    # have numify(), then hopefully it will have overloading for int() and
-    # boolean test without wandering into a deep recursion path...
-    $a = $a->numify() if ref($a) && $a->can('numify');
-
-    if (defined $a)
-      {
-      # also croak on non-numerical
-      if (!$a || $a <= 0)
-        {
-        require Carp;
-        Carp::croak ('Argument to accuracy must be greater than zero');
-        }
-      if (int($a) != $a)
-        {
-        require Carp;
-        Carp::croak ('Argument to accuracy must be an integer');
-        }
-      }
-    if (ref($x))
-      {
-      # $object->accuracy() or fallback to global
-      $x->bround($a) if $a;             # not for undef, 0
-      $x->{_a} = $a;                    # set/overwrite, even if not rounded
-      delete $x->{_p};                  # clear P
-      $a = ${"${class}::accuracy"} unless defined $a;   # proper return value
-      }
-    else
-      {
-      ${"${class}::accuracy"} = $a;     # set global A
-      ${"${class}::precision"} = undef; # clear global P
-      }
-    return $a;                          # shortcut
-    }
-
-  my $a;
-  # $object->accuracy() or fallback to global
-  $a = $x->{_a} if ref($x);
-  # but don't return global undef, when $x's accuracy is 0!
-  $a = ${"${class}::accuracy"} if !defined $a;
-  $a;
-  }
-
-sub precision
-  {
-  # $x->precision($p);          ref($x) $p
-  # $x->precision();            ref($x)
-  # Class->precision();         class
-  # Class->precision($p);       class $p
-
-  my $x = shift;
-  my $class = ref($x) || $x || __PACKAGE__;
-
-  no strict 'refs';
-  if (@_ > 0)
-    {
-    my $p = shift;
-    # convert objects to scalars to avoid deep recursion. If object doesn't
-    # have numify(), then hopefully it will have overloading for int() and
-    # boolean test without wandering into a deep recursion path...
-    $p = $p->numify() if ref($p) && $p->can('numify');
-    if ((defined $p) && (int($p) != $p))
-      {
-      require Carp; Carp::croak ('Argument to precision must be an integer');
-      }
-    if (ref($x))
-      {
-      # $object->precision() or fallback to global
-      $x->bfround($p) if $p;            # not for undef, 0
-      $x->{_p} = $p;                    # set/overwrite, even if not rounded
-      delete $x->{_a};                  # clear A
-      $p = ${"${class}::precision"} unless defined $p;  # proper return value
-      }
-    else
-      {
-      ${"${class}::precision"} = $p;    # set global P
-      ${"${class}::accuracy"} = undef;  # clear global A
-      }
-    return $p;                          # shortcut
-    }
-
-  my $p;
-  # $object->precision() or fallback to global
-  $p = $x->{_p} if ref($x);
-  # but don't return global undef, when $x's precision is 0!
-  $p = ${"${class}::precision"} if !defined $p;
-  $p;
-  }
-
-sub config
-  {
-  # return (or set) configuration data as hash ref
-  my $class = shift || 'Math::BigInt';
-
-  no strict 'refs';
-  if (@_ > 1 || (@_ == 1 && (ref($_[0]) eq 'HASH')))
-    {
-    # try to set given options as arguments from hash
-
-    my $args = $_[0];
-    if (ref($args) ne 'HASH')
-      {
-      $args = { @_ };
-      }
-    # these values can be "set"
-    my $set_args = {};
-    foreach my $key (
-     qw/trap_inf trap_nan
-        upgrade downgrade precision accuracy round_mode div_scale/
-     )
-      {
-      $set_args->{$key} = $args->{$key} if exists $args->{$key};
-      delete $args->{$key};
-      }
-    if (keys %$args > 0)
-      {
-      require Carp;
-      Carp::croak ("Illegal key(s) '",
-       join("','",keys %$args),"' passed to $class\->config()");
-      }
-    foreach my $key (keys %$set_args)
-      {
-      if ($key =~ /^trap_(inf|nan)\z/)
-        {
-        ${"${class}::_trap_$1"} = ($set_args->{"trap_$1"} ? 1 : 0);
-        next;
+    # set up some handy alias names
+    *as_int = \&as_number;
+    *is_pos = \&is_positive;
+    *is_neg = \&is_negative;
+}
+
+###############################################################################
+# Configuration methods
+###############################################################################
+
+sub round_mode {
+    no strict 'refs';
+    # make Class->round_mode() work
+    my $self = shift;
+    my $class = ref($self) || $self || __PACKAGE__;
+    if (defined $_[0]) {
+        my $m = shift;
+        if ($m !~ /^(even|odd|\+inf|\-inf|zero|trunc|common)$/) {
+            Carp::croak("Unknown round mode '$m'");
         }
-      # use a call instead of just setting the $variable to check argument
-      $class->$key($set_args->{$key});
-      }
-    }
-
-  # now return actual configuration
-
-  my $cfg = {
-    lib => $CALC,
-    lib_version => ${"${CALC}::VERSION"},
-    class => $class,
-    trap_nan => ${"${class}::_trap_nan"},
-    trap_inf => ${"${class}::_trap_inf"},
-    version => ${"${class}::VERSION"},
-    };
-  foreach my $key (qw/
-     upgrade downgrade precision accuracy round_mode div_scale
-     /)
-    {
-    $cfg->{$key} = ${"${class}::$key"};
-    };
-  if (@_ == 1 && (ref($_[0]) ne 'HASH'))
-    {
-    # calls of the style config('lib') return just this value
-    return $cfg->{$_[0]};
+        return ${"${class}::round_mode"} = $m;
+    }
+    ${"${class}::round_mode"};
+}
+
+sub upgrade {
+    no strict 'refs';
+    # make Class->upgrade() work
+    my $self = shift;
+    my $class = ref($self) || $self || __PACKAGE__;
+    # need to set new value?
+    if (@_ > 0) {
+        return ${"${class}::upgrade"} = $_[0];
     }
-  $cfg;
-  }
+    ${"${class}::upgrade"};
+}
 
-sub _scale_a
-  {
-  # select accuracy parameter based on precedence,
-  # used by bround() and bfround(), may return undef for scale (means no op)
-  my ($x,$scale,$mode) = @_;
+sub downgrade {
+    no strict 'refs';
+    # make Class->downgrade() work
+    my $self = shift;
+    my $class = ref($self) || $self || __PACKAGE__;
+    # need to set new value?
+    if (@_ > 0) {
+        return ${"${class}::downgrade"} = $_[0];
+    }
+    ${"${class}::downgrade"};
+}
 
-  $scale = $x->{_a} unless defined $scale;
+sub div_scale {
+    no strict 'refs';
+    # make Class->div_scale() work
+    my $self = shift;
+    my $class = ref($self) || $self || __PACKAGE__;
+    if (defined $_[0]) {
+        if ($_[0] < 0) {
+            Carp::croak('div_scale must be greater than zero');
+        }
+        ${"${class}::div_scale"} = $_[0];
+    }
+    ${"${class}::div_scale"};
+}
 
-  no strict 'refs';
-  my $class = ref($x);
+sub accuracy {
+    # $x->accuracy($a);           ref($x) $a
+    # $x->accuracy();             ref($x)
+    # Class->accuracy();          class
+    # Class->accuracy($a);        class $a
 
-  $scale = ${ $class . '::accuracy' } unless defined $scale;
-  $mode = ${ $class . '::round_mode' } unless defined $mode;
+    my $x = shift;
+    my $class = ref($x) || $x || __PACKAGE__;
 
-  if (defined $scale)
-    {
-    $scale = $scale->can('numify') ? $scale->numify()
-                                   : "$scale" if ref($scale);
-    $scale = int($scale);
+    no strict 'refs';
+    # need to set new value?
+    if (@_ > 0) {
+        my $a = shift;
+        # convert objects to scalars to avoid deep recursion. If object doesn't
+        # have numify(), then hopefully it will have overloading for int() and
+        # boolean test without wandering into a deep recursion path...
+        $a = $a->numify() if ref($a) && $a->can('numify');
+
+        if (defined $a) {
+            # also croak on non-numerical
+            if (!$a || $a <= 0) {
+                Carp::croak('Argument to accuracy must be greater than zero');
+            }
+            if (int($a) != $a) {
+                Carp::croak('Argument to accuracy must be an integer');
+            }
+        }
+        if (ref($x)) {
+            # $object->accuracy() or fallback to global
+            $x->bround($a) if $a; # not for undef, 0
+            $x->{_a} = $a;        # set/overwrite, even if not rounded
+            delete $x->{_p};      # clear P
+            $a = ${"${class}::accuracy"} unless defined $a; # proper return value
+        } else {
+            ${"${class}::accuracy"} = $a; # set global A
+            ${"${class}::precision"} = undef; # clear global P
+        }
+        return $a;              # shortcut
     }
 
-  ($scale,$mode);
-  }
+    my $a;
+    # $object->accuracy() or fallback to global
+    $a = $x->{_a} if ref($x);
+    # but don't return global undef, when $x's accuracy is 0!
+    $a = ${"${class}::accuracy"} if !defined $a;
+    $a;
+}
+
+sub precision {
+    # $x->precision($p);          ref($x) $p
+    # $x->precision();            ref($x)
+    # Class->precision();         class
+    # Class->precision($p);       class $p
+
+    my $x = shift;
+    my $class = ref($x) || $x || __PACKAGE__;
+
+    no strict 'refs';
+    if (@_ > 0) {
+        my $p = shift;
+        # convert objects to scalars to avoid deep recursion. If object doesn't
+        # have numify(), then hopefully it will have overloading for int() and
+        # boolean test without wandering into a deep recursion path...
+        $p = $p->numify() if ref($p) && $p->can('numify');
+        if ((defined $p) && (int($p) != $p)) {
+            Carp::croak('Argument to precision must be an integer');
+        }
+        if (ref($x)) {
+            # $object->precision() or fallback to global
+            $x->bfround($p) if $p; # not for undef, 0
+            $x->{_p} = $p;         # set/overwrite, even if not rounded
+            delete $x->{_a};       # clear A
+            $p = ${"${class}::precision"} unless defined $p; # proper return value
+        } else {
+            ${"${class}::precision"} = $p; # set global P
+            ${"${class}::accuracy"} = undef; # clear global A
+        }
+        return $p;              # shortcut
+    }
 
-sub _scale_p
-  {
-  # select precision parameter based on precedence,
-  # used by bround() and bfround(), may return undef for scale (means no op)
-  my ($x,$scale,$mode) = @_;
+    my $p;
+    # $object->precision() or fallback to global
+    $p = $x->{_p} if ref($x);
+    # but don't return global undef, when $x's precision is 0!
+    $p = ${"${class}::precision"} if !defined $p;
+    $p;
+}
 
-  $scale = $x->{_p} unless defined $scale;
+sub config {
+    # return (or set) configuration data as hash ref
+    my $class = shift || 'Math::BigInt';
 
-  no strict 'refs';
-  my $class = ref($x);
+    no strict 'refs';
+    if (@_ > 1 || (@_ == 1 && (ref($_[0]) eq 'HASH'))) {
+        # try to set given options as arguments from hash
 
-  $scale = ${ $class . '::precision' } unless defined $scale;
-  $mode = ${ $class . '::round_mode' } unless defined $mode;
+        my $args = $_[0];
+        if (ref($args) ne 'HASH') {
+            $args = { @_ };
+        }
+        # these values can be "set"
+        my $set_args = {};
+        foreach my $key (qw/
+                               accuracy precision
+                               round_mode div_scale
+                               upgrade downgrade
+                               trap_inf trap_nan
+                           /)
+        {
+            $set_args->{$key} = $args->{$key} if exists $args->{$key};
+            delete $args->{$key};
+        }
+        if (keys %$args > 0) {
+            Carp::croak("Illegal key(s) '", join("', '", keys %$args),
+                        "' passed to $class\->config()");
+        }
+        foreach my $key (keys %$set_args) {
+            if ($key =~ /^trap_(inf|nan)\z/) {
+                ${"${class}::_trap_$1"} = ($set_args->{"trap_$1"} ? 1 : 0);
+                next;
+            }
+            # use a call instead of just setting the $variable to check argument
+            $class->$key($set_args->{$key});
+        }
+    }
 
-  if (defined $scale)
+    # now return actual configuration
+
+    my $cfg = {
+               lib         => $CALC,
+               lib_version => ${"${CALC}::VERSION"},
+               class       => $class,
+               trap_nan    => ${"${class}::_trap_nan"},
+               trap_inf    => ${"${class}::_trap_inf"},
+               version     => ${"${class}::VERSION"},
+              };
+    foreach my $key (qw/
+                           accuracy precision
+                           round_mode div_scale
+                           upgrade downgrade
+                       /)
     {
-    $scale = $scale->can('numify') ? $scale->numify()
-                                   : "$scale" if ref($scale);
-    $scale = int($scale);
+        $cfg->{$key} = ${"${class}::$key"};
     }
+    if (@_ == 1 && (ref($_[0]) ne 'HASH')) {
+        # calls of the style config('lib') return just this value
+        return $cfg->{$_[0]};
+    }
+    $cfg;
+}
 
-  ($scale,$mode);
-  }
+sub _scale_a {
+    # select accuracy parameter based on precedence,
+    # used by bround() and bfround(), may return undef for scale (means no op)
+    my ($x, $scale, $mode) = @_;
 
-##############################################################################
-# constructors
+    $scale = $x->{_a} unless defined $scale;
 
-sub copy {
-    my $self    = shift;
-    my $selfref = ref $self;
-    my $class   = $selfref || $self;
+    no strict 'refs';
+    my $class = ref($x);
 
-    # If called as a class method, the object to copy is the next argument.
+    $scale = ${ $class . '::accuracy' } unless defined $scale;
+    $mode = ${ $class . '::round_mode' } unless defined $mode;
 
-    $self = shift() unless $selfref;
+    if (defined $scale) {
+        $scale = $scale->can('numify') ? $scale->numify()
+                                       : "$scale" if ref($scale);
+        $scale = int($scale);
+    }
 
-    my $copy = bless {}, $class;
+    ($scale, $mode);
+}
 
-    $copy->{sign}  = $self->{sign};
-    $copy->{value} = $CALC->_copy($self->{value});
-    $copy->{_a}    = $self->{_a} if exists $self->{_a};
-    $copy->{_p}    = $self->{_p} if exists $self->{_p};
+sub _scale_p {
+    # select precision parameter based on precedence,
+    # used by bround() and bfround(), may return undef for scale (means no op)
+    my ($x, $scale, $mode) = @_;
 
-    return $copy;
+    $scale = $x->{_p} unless defined $scale;
+
+    no strict 'refs';
+    my $class = ref($x);
+
+    $scale = ${ $class . '::precision' } unless defined $scale;
+    $mode = ${ $class . '::round_mode' } unless defined $mode;
+
+    if (defined $scale) {
+        $scale = $scale->can('numify') ? $scale->numify()
+                                       : "$scale" if ref($scale);
+        $scale = int($scale);
+    }
+
+    ($scale, $mode);
 }
 
+###############################################################################
+# Constructor methods
+###############################################################################
+
 sub new {
     # Create a new Math::BigInt object from a string or another Math::BigInt
     # object. See hash keys documented at top.
@@ -524,15 +535,29 @@ sub new {
     my $selfref = ref $self;
     my $class   = $selfref || $self;
 
+    # The POD says:
+    #
+    # "Currently, Math::BigInt->new() defaults to 0, while Math::BigInt->new('')
+    # results in 'NaN'. This might change in the future, so use always the
+    # following explicit forms to get a zero or NaN:
+    #     $zero = Math::BigInt->bzero();
+    #     $nan = Math::BigInt->bnan();
+    #
+    # But although this use has been discouraged for more than 10 years, people
+    # apparently still use it, so we still support it.
+
+    return $self->bzero() unless @_;
+
     my ($wanted, $a, $p, $r) = @_;
 
-    # If called as a class method, initialize a new object.
+    # Always return a new object, so it called as an instance method, copy the
+    # invocand, and if called as a class method, initialize a new object.
 
-    $self = bless {}, $class unless $selfref;
+    $self = $selfref ? $self -> copy()
+                     : bless {}, $class;
 
     unless (defined $wanted) {
-        require Carp;
-        Carp::carp("Use of uninitialized value in new");
+        #Carp::carp("Use of uninitialized value in new()");
         return $self->bzero($a, $p, $r);
     }
 
@@ -571,7 +596,7 @@ sub new {
             || defined(${"${class}::accuracy"}))
         {
             $self->round($a, $p, $r)
-              unless @_ == 4 && !defined $a && !defined $p;
+              unless @_ >= 3 && !defined $a && !defined $p;
         }
 
         return $self;
@@ -582,28 +607,38 @@ sub new {
     if ($wanted =~ /^\s*([+-]?)inf(inity)?\s*\z/i) {
         my $sgn = $1 || '+';
         $self->{sign} = $sgn . 'inf';   # set a default sign for bstr()
-        return $self->binf($sgn);
+        return $class->binf($sgn);
     }
 
     # Handle explicit NaNs (not the ones returned due to invalid input).
 
     if ($wanted =~ /^\s*([+-]?)nan\s*\z/i) {
-        return $self->bnan();
+        $self = $class -> bnan();
+        $self->round($a, $p, $r) unless @_ >= 3 && !defined $a && !defined $p;
+        return $self;
     }
 
+    # Handle hexadecimal numbers.
+
     if ($wanted =~ /^\s*[+-]?0[Xx]/) {
-        return $class -> from_hex($wanted);
+        $self = $class -> from_hex($wanted);
+        $self->round($a, $p, $r) unless @_ >= 3 && !defined $a && !defined $p;
+        return $self;
     }
 
+    # Handle binary numbers.
+
     if ($wanted =~ /^\s*[+-]?0[Bb]/) {
-        return $class -> from_bin($wanted);
+        $self = $class -> from_bin($wanted);
+        $self->round($a, $p, $r) unless @_ >= 3 && !defined $a && !defined $p;
+        return $self;
     }
 
     # Split string into mantissa, exponent, integer, fraction, value, and sign.
     my ($mis, $miv, $mfv, $es, $ev) = _split($wanted);
     if (!ref $mis) {
         if ($_trap_nan) {
-            require Carp; Carp::croak("$wanted is not a number in $class");
+            Carp::croak("$wanted is not a number in $class");
         }
         $self->{value} = $CALC->_zero();
         $self->{sign} = $nan;
@@ -626,7 +661,7 @@ sub new {
         my $diff = $e - CORE::length($$mfv);
         if ($diff < 0) {         # Not integer
             if ($_trap_nan) {
-                require Carp; Carp::croak("$wanted not an integer in $class");
+                Carp::croak("$wanted not an integer in $class");
             }
             #print "NOI 1\n";
             return $upgrade->new($wanted, $a, $p, $r) if defined $upgrade;
@@ -642,7 +677,7 @@ sub new {
         if ($$mfv ne '') {       # e <= 0
             # fraction and negative/zero E => NOI
             if ($_trap_nan) {
-                require Carp; Carp::croak("$wanted not an integer in $class");
+                Carp::croak("$wanted not an integer in $class");
             }
             #print "NOI 2 \$\$mfv '$$mfv'\n";
             return $upgrade->new($wanted, $a, $p, $r) if defined $upgrade;
@@ -657,7 +692,7 @@ sub new {
 
             if ($frac =~ /[^0]/) {
                 if ($_trap_nan) {
-                    require Carp; Carp::croak("$wanted not an integer in $class");
+                    Carp::croak("$wanted not an integer in $class");
                 }
                 #print "NOI 3\n";
                 return $upgrade->new($wanted, $a, $p, $r) if defined $upgrade;
@@ -675,2097 +710,2802 @@ sub new {
     # $self. Do not round for new($x, undef, undef) since that is used by MBF
     # to signal no rounding.
 
-    $self->round($a, $p, $r) unless @_ == 4 && !defined $a && !defined $p;
+    $self->round($a, $p, $r) unless @_ >= 3 && !defined $a && !defined $p;
     $self;
 }
 
-sub bnan
-  {
-  # create a bigint 'NaN', if given a BigInt, set it to 'NaN'
-  my $self = shift;
-  $self = $class if !defined $self;
-  if (!ref($self))
-    {
-    my $c = $self; $self = {}; bless $self, $c;
-    }
-  no strict 'refs';
-  if (${"${class}::_trap_nan"})
-    {
-    require Carp;
-    Carp::croak ("Tried to set $self to NaN in $class\::bnan()");
-    }
-  $self->import() if $IMPORT == 0;              # make require work
-  return if $self->modify('bnan');
-  if ($self->can('_bnan'))
-    {
-    # use subclass to initialize
-    $self->_bnan();
-    }
-  else
-    {
-    # otherwise do our own thing
-    $self->{value} = $CALC->_zero();
-    }
-  $self->{sign} = $nan;
-  delete $self->{_a}; delete $self->{_p};       # rounding NaN is silly
-  $self;
-  }
-
-sub binf
-  {
-  # create a bigint '+-inf', if given a BigInt, set it to '+-inf'
-  # the sign is either '+', or if given, used from there
-  my $self = shift;
-  my $sign = shift; $sign = '+' if !defined $sign || $sign !~ /^-(inf)?$/;
-  $self = $class if !defined $self;
-  if (!ref($self))
-    {
-    my $c = $self; $self = {}; bless $self, $c;
-    }
-  no strict 'refs';
-  if (${"${class}::_trap_inf"})
-    {
-    require Carp;
-    Carp::croak ("Tried to set $self to +-inf in $class\::binf()");
-    }
-  $self->import() if $IMPORT == 0;              # make require work
-  return if $self->modify('binf');
-  if ($self->can('_binf'))
-    {
-    # use subclass to initialize
-    $self->_binf();
-    }
-  else
-    {
-    # otherwise do our own thing
-    $self->{value} = $CALC->_zero();
-    }
-  $sign = $sign . 'inf' if $sign !~ /inf$/;     # - => -inf
-  $self->{sign} = $sign;
-  ($self->{_a},$self->{_p}) = @_;               # take over requested rounding
-  $self;
-  }
-
-sub bzero
-  {
-  # create a bigint '+0', if given a BigInt, set it to 0
-  my $self = shift;
-  $self = __PACKAGE__ if !defined $self;
-
-  if (!ref($self))
-    {
-    my $c = $self; $self = {}; bless $self, $c;
-    }
-  $self->import() if $IMPORT == 0;              # make require work
-  return if $self->modify('bzero');
+# Create a Math::BigInt from a hexadecimal string.
 
-  if ($self->can('_bzero'))
-    {
-    # use subclass to initialize
-    $self->_bzero();
-    }
-  else
-    {
-    # otherwise do our own thing
-    $self->{value} = $CALC->_zero();
-    }
-  $self->{sign} = '+';
-  if (@_ > 0)
-    {
-    if (@_ > 3)
-      {
-      # call like: $x->bzero($a,$p,$r,$y);
-      ($self,$self->{_a},$self->{_p}) = $self->_find_round_parameters(@_);
-      }
-    else
-      {
-      $self->{_a} = $_[0]
-       if ( (!defined $self->{_a}) || (defined $_[0] && $_[0] > $self->{_a}));
-      $self->{_p} = $_[1]
-       if ( (!defined $self->{_p}) || (defined $_[1] && $_[1] > $self->{_p}));
-      }
-    }
-  $self;
-  }
-
-sub bone
-  {
-  # create a bigint '+1' (or -1 if given sign '-'),
-  # if given a BigInt, set it to +1 or -1, respectively
-  my $self = shift;
-  my $sign = shift; $sign = '+' if !defined $sign || $sign ne '-';
-  $self = $class if !defined $self;
-
-  if (!ref($self))
-    {
-    my $c = $self; $self = {}; bless $self, $c;
-    }
-  $self->import() if $IMPORT == 0;              # make require work
-  return if $self->modify('bone');
+sub from_hex {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
 
-  if ($self->can('_bone'))
-    {
-    # use subclass to initialize
-    $self->_bone();
-    }
-  else
-    {
-    # otherwise do our own thing
-    $self->{value} = $CALC->_one();
-    }
-  $self->{sign} = $sign;
-  if (@_ > 0)
-    {
-    if (@_ > 3)
-      {
-      # call like: $x->bone($sign,$a,$p,$r,$y);
-      ($self,$self->{_a},$self->{_p}) = $self->_find_round_parameters(@_);
-      }
-    else
-      {
-      # call like: $x->bone($sign,$a,$p,$r);
-      $self->{_a} = $_[0]
-       if ( (!defined $self->{_a}) || (defined $_[0] && $_[0] > $self->{_a}));
-      $self->{_p} = $_[1]
-       if ( (!defined $self->{_p}) || (defined $_[1] && $_[1] > $self->{_p}));
-      }
-    }
-  $self;
-  }
+    my $str = shift;
 
-##############################################################################
-# string conversion
+    # If called as a class method, initialize a new object.
 
-sub bsstr
-  {
-  # (ref to BFLOAT or num_str ) return num_str
-  # Convert number from internal format to scientific string format.
-  # internal format is always normalized (no leading zeros, "-0E0" => "+0E0")
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+    $self = $class -> bzero() unless $selfref;
 
-  if ($x->{sign} !~ /^[+-]$/)
+    if ($str =~ s/
+                     ^
+                     ( [+-]? )
+                     (0?x)?
+                     (
+                         [0-9a-fA-F]*
+                         ( _ [0-9a-fA-F]+ )*
+                     )
+                     $
+                 //x)
     {
-    return $x->{sign} unless $x->{sign} eq '+inf';      # -inf, NaN
-    return 'inf';                                       # +inf
-    }
-  my ($m,$e) = $x->parts();
-  #$m->bstr() . 'e+' . $e->bstr();      # e can only be positive in BigInt
-  # 'e+' because E can only be positive in BigInt
-  $m->bstr() . 'e+' . $CALC->_str($e->{value});
-  }
+        # Get a "clean" version of the string, i.e., non-emtpy and with no
+        # underscores or invalid characters.
 
-sub bstr
-  {
-  # make a string from bigint object
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+        my $sign = $1;
+        my $chrs = $3;
+        $chrs =~ tr/_//d;
+        $chrs = '0' unless CORE::length $chrs;
 
-  if ($x->{sign} !~ /^[+-]$/)
-    {
-    return $x->{sign} unless $x->{sign} eq '+inf';      # -inf, NaN
-    return 'inf';                                       # +inf
-    }
-  my $es = ''; $es = $x->{sign} if $x->{sign} eq '-';
-  $es.$CALC->_str($x->{value});
-  }
-
-sub numify
-  {
-  # Make a Perl scalar number from a Math::BigInt object.
-  my $x = shift; $x = $class->new($x) unless ref $x;
-
-  if ($x -> is_nan()) {
-      require Math::Complex;
-      my $inf = Math::Complex::Inf();
-      return $inf - $inf;
-  }
-
-  if ($x -> is_inf()) {
-      require Math::Complex;
-      my $inf = Math::Complex::Inf();
-      return $x -> is_negative() ? -$inf : $inf;
-  }
-
-  my $num = 0 + $CALC->_num($x->{value});
-  return $x->{sign} eq '-' ? -$num : $num;
-  }
+        # The library method requires a prefix.
 
-##############################################################################
-# public stuff (usually prefixed with "b")
+        $self->{value} = $CALC->_from_hex('0x' . $chrs);
 
-sub sign
-  {
-  # return the sign of the number: +/-/-inf/+inf/NaN
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+        # Place the sign.
 
-  $x->{sign};
-  }
+        if ($sign eq '-' && ! $CALC->_is_zero($self->{value})) {
+            $self->{sign} = '-';
+        }
 
-sub _find_round_parameters {
-    # After any operation or when calling round(), the result is rounded by
-    # regarding the A & P from arguments, local parameters, or globals.
+        return $self;
+    }
+
+    # CORE::hex() parses as much as it can, and ignores any trailing garbage.
+    # For backwards compatibility, we return NaN.
+
+    return $self->bnan();
+}
+
+# Create a Math::BigInt from an octal string.
+
+sub from_oct {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    my $str = shift;
+
+    # If called as a class method, initialize a new object.
+
+    $self = $class -> bzero() unless $selfref;
+
+    if ($str =~ s/
+                     ^
+                     ( [+-]? )
+                     (
+                         [0-7]*
+                         ( _ [0-7]+ )*
+                     )
+                     $
+                 //x)
+    {
+        # Get a "clean" version of the string, i.e., non-emtpy and with no
+        # underscores or invalid characters.
+
+        my $sign = $1;
+        my $chrs = $2;
+        $chrs =~ tr/_//d;
+        $chrs = '0' unless CORE::length $chrs;
+
+        # The library method requires a prefix.
+
+        $self->{value} = $CALC->_from_oct('0' . $chrs);
+
+        # Place the sign.
+
+        if ($sign eq '-' && ! $CALC->_is_zero($self->{value})) {
+            $self->{sign} = '-';
+        }
+
+        return $self;
+    }
+
+    # CORE::oct() parses as much as it can, and ignores any trailing garbage.
+    # For backwards compatibility, we return NaN.
+
+    return $self->bnan();
+}
+
+# Create a Math::BigInt from a binary string.
+
+sub from_bin {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    my $str = shift;
+
+    # If called as a class method, initialize a new object.
+
+    $self = $class -> bzero() unless $selfref;
+
+    if ($str =~ s/
+                     ^
+                     ( [+-]? )
+                     (0?b)?
+                     (
+                         [01]*
+                         ( _ [01]+ )*
+                     )
+                     $
+                 //x)
+    {
+        # Get a "clean" version of the string, i.e., non-emtpy and with no
+        # underscores or invalid characters.
+
+        my $sign = $1;
+        my $chrs = $3;
+        $chrs =~ tr/_//d;
+        $chrs = '0' unless CORE::length $chrs;
+
+        # The library method requires a prefix.
+
+        $self->{value} = $CALC->_from_bin('0b' . $chrs);
+
+        # Place the sign.
+
+        if ($sign eq '-' && ! $CALC->_is_zero($self->{value})) {
+            $self->{sign} = '-';
+        }
+
+        return $self;
+    }
+
+    # For consistency with from_hex() and from_oct(), we return NaN when the
+    # input is invalid.
+
+    return $self->bnan();
+}
+
+sub bzero {
+    # create/assign '+0'
+
+    if (@_ == 0) {
+        #Carp::carp("Using bzero() as a function is deprecated;",
+        #           " use bzero() as a method instead");
+        unshift @_, __PACKAGE__;
+    }
+
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    $self->import() if $IMPORT == 0;            # make require work
+    return if $self->modify('bzero');
+
+    $self = bless {}, $class unless $selfref;
+
+    $self->{sign} = '+';
+    $self->{value} = $CALC->_zero();
+
+    if (@_ > 0) {
+        if (@_ > 3) {
+            # call like: $x->bzero($a, $p, $r, $y, ...);
+            ($self, $self->{_a}, $self->{_p}) = $self->_find_round_parameters(@_);
+        } else {
+            # call like: $x->bzero($a, $p, $r);
+            $self->{_a} = $_[0]
+              if !defined $self->{_a} || (defined $_[0] && $_[0] > $self->{_a});
+            $self->{_p} = $_[1]
+              if !defined $self->{_p} || (defined $_[1] && $_[1] > $self->{_p});
+        }
+    }
+
+    return $self;
+}
+
+sub bone {
+    # Create or assign '+1' (or -1 if given sign '-').
+
+    if (@_ == 0 || (defined($_[0]) && ($_[0] eq '+' || $_[0] eq '-'))) {
+        #Carp::carp("Using bone() as a function is deprecated;",
+        #           " use bone() as a method instead");
+        unshift @_, __PACKAGE__;
+    }
+
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    $self->import() if $IMPORT == 0;            # make require work
+    return if $self->modify('bzero');
+
+    my $sign = shift;
+    $sign = defined $sign && $sign =~ /^\s*-/ ? "-" : "+";
+
+    $self = bless {}, $class unless $selfref;
+
+    $self->{sign}  = $sign;
+    $self->{value} = $CALC->_one();
+
+    if (@_ > 0) {
+        if (@_ > 3) {
+            # call like: $x->bone($sign, $a, $p, $r, $y, ...);
+            ($self, $self->{_a}, $self->{_p}) = $self->_find_round_parameters(@_);
+        } else {
+            # call like: $x->bone($sign, $a, $p, $r);
+            $self->{_a} = $_[0]
+              if !defined $self->{_a} || (defined $_[0] && $_[0] > $self->{_a});
+            $self->{_p} = $_[1]
+              if !defined $self->{_p} || (defined $_[1] && $_[1] > $self->{_p});
+        }
+    }
+
+    return $self;
+}
+
+sub binf {
+    # create/assign a '+inf' or '-inf'
+
+    if (@_ == 0 || (defined($_[0]) && !ref($_[0]) &&
+                    $_[0] =~ /^\s*[+-](inf(inity)?)?\s*$/))
+    {
+        #Carp::carp("Using binf() as a function is deprecated;",
+        #           " use binf() as a method instead");
+        unshift @_, __PACKAGE__;
+    }
+
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    {
+        no strict 'refs';
+        if (${"${class}::_trap_inf"}) {
+            Carp::croak("Tried to create +-inf in $class->binf()");
+        }
+    }
+
+    $self->import() if $IMPORT == 0;            # make require work
+    return if $self->modify('binf');
+
+    my $sign = shift;
+    $sign = defined $sign && $sign =~ /^\s*-/ ? "-" : "+";
+
+    $self = bless {}, $class unless $selfref;
+
+    $self -> {sign}  = $sign . 'inf';
+    $self -> {value} = $CALC -> _zero();
+
+    return $self;
+}
+
+sub bnan {
+    # create/assign a 'NaN'
+
+    if (@_ == 0) {
+        #Carp::carp("Using bnan() as a function is deprecated;",
+        #           " use bnan() as a method instead");
+        unshift @_, __PACKAGE__;
+    }
+
+    my $self    = shift;
+    my $selfref = ref($self);
+    my $class   = $selfref || $self;
+
+    {
+        no strict 'refs';
+        if (${"${class}::_trap_nan"}) {
+            Carp::croak("Tried to create NaN in $class->bnan()");
+        }
+    }
+
+    $self->import() if $IMPORT == 0;            # make require work
+    return if $self->modify('bnan');
+
+    $self = bless {}, $class unless $selfref;
+
+    $self -> {sign}  = $nan;
+    $self -> {value} = $CALC -> _zero();
+
+    return $self;
+}
+
+sub bpi {
+    # Calculate PI to N digits. Unless upgrading is in effect, returns the
+    # result truncated to an integer, that is, always returns '3'.
+    my ($self, $n) = @_;
+    if (@_ == 1) {
+        # called like Math::BigInt::bpi(10);
+        $n = $self;
+        $self = $class;
+    }
+    $self = ref($self) if ref($self);
+
+    return $upgrade->new($n) if defined $upgrade;
+
+    # hard-wired to "3"
+    $self->new(3);
+}
+
+sub copy {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    # If called as a class method, the object to copy is the next argument.
+
+    $self = shift() unless $selfref;
+
+    my $copy = bless {}, $class;
+
+    $copy->{sign}  = $self->{sign};
+    $copy->{value} = $CALC->_copy($self->{value});
+    $copy->{_a}    = $self->{_a} if exists $self->{_a};
+    $copy->{_p}    = $self->{_p} if exists $self->{_p};
+
+    return $copy;
+}
+
+sub as_number {
+    # An object might be asked to return itself as bigint on certain overloaded
+    # operations. This does exactly this, so that sub classes can simple inherit
+    # it or override with their own integer conversion routine.
+    $_[0]->copy();
+}
+
+###############################################################################
+# Boolean methods
+###############################################################################
+
+sub is_zero {
+    # return true if arg (BINT or num_str) is zero (array '+', '0')
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    return 0 if $x->{sign} !~ /^\+$/; # -, NaN & +-inf aren't
+    $CALC->_is_zero($x->{value});
+}
+
+sub is_one {
+    # return true if arg (BINT or num_str) is +1, or -1 if sign is given
+    my ($class, $x, $sign) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+
+    $sign = '+' if !defined $sign || $sign ne '-';
+
+    return 0 if $x->{sign} ne $sign; # -1 != +1, NaN, +-inf aren't either
+    $CALC->_is_one($x->{value});
+}
+
+sub is_finite {
+    my $x = shift;
+    return $x->{sign} eq '+' || $x->{sign} eq '-';
+}
+
+sub is_inf {
+    # return true if arg (BINT or num_str) is +-inf
+    my ($class, $x, $sign) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+
+    if (defined $sign) {
+        $sign = '[+-]inf' if $sign eq ''; # +- doesn't matter, only that's inf
+        $sign = "[$1]inf" if $sign =~ /^([+-])(inf)?$/; # extract '+' or '-'
+        return $x->{sign} =~ /^$sign$/ ? 1 : 0;
+    }
+    $x->{sign} =~ /^[+-]inf$/ ? 1 : 0; # only +-inf is infinity
+}
+
+sub is_nan {
+    # return true if arg (BINT or num_str) is NaN
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    $x->{sign} eq $nan ? 1 : 0;
+}
+
+sub is_positive {
+    # return true when arg (BINT or num_str) is positive (> 0)
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    return 1 if $x->{sign} eq '+inf'; # +inf is positive
+
+    # 0+ is neither positive nor negative
+    ($x->{sign} eq '+' && !$x->is_zero()) ? 1 : 0;
+}
+
+sub is_negative {
+    # return true when arg (BINT or num_str) is negative (< 0)
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    $x->{sign} =~ /^-/ ? 1 : 0; # -inf is negative, but NaN is not
+}
+
+sub is_odd {
+    # return true when arg (BINT or num_str) is odd, false for even
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    return 0 if $x->{sign} !~ /^[+-]$/; # NaN & +-inf aren't
+    $CALC->_is_odd($x->{value});
+}
+
+sub is_even {
+    # return true when arg (BINT or num_str) is even, false for odd
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    return 0 if $x->{sign} !~ /^[+-]$/; # NaN & +-inf aren't
+    $CALC->_is_even($x->{value});
+}
+
+sub is_int {
+    # return true when arg (BINT or num_str) is an integer
+    # always true for Math::BigInt, but different for Math::BigFloat objects
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    $x->{sign} =~ /^[+-]$/ ? 1 : 0; # inf/-inf/NaN aren't
+}
+
+###############################################################################
+# Comparison methods
+###############################################################################
+
+sub bcmp {
+    # Compares 2 values.  Returns one of undef, <0, =0, >0. (suitable for sort)
+    # (BINT or num_str, BINT or num_str) return cond_code
+
+    # set up parameters
+    my ($class, $x, $y) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+                        ? (ref($_[0]), @_)
+                        : objectify(2, @_);
+
+    return $upgrade->bcmp($x, $y) if defined $upgrade &&
+      ((!$x->isa($class)) || (!$y->isa($class)));
+
+    if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/)) {
+        # handle +-inf and NaN
+        return undef if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+        return 0 if $x->{sign} eq $y->{sign} && $x->{sign} =~ /^[+-]inf$/;
+        return +1 if $x->{sign} eq '+inf';
+        return -1 if $x->{sign} eq '-inf';
+        return -1 if $y->{sign} eq '+inf';
+        return +1;
+    }
+    # check sign for speed first
+    return 1 if $x->{sign} eq '+' && $y->{sign} eq '-'; # does also 0 <=> -y
+    return -1 if $x->{sign} eq '-' && $y->{sign} eq '+'; # does also -x <=> 0
+
+    # have same sign, so compare absolute values.  Don't make tests for zero
+    # here because it's actually slower than testing in Calc (especially w/ Pari
+    # et al)
+
+    # post-normalized compare for internal use (honors signs)
+    if ($x->{sign} eq '+') {
+        # $x and $y both > 0
+        return $CALC->_acmp($x->{value}, $y->{value});
+    }
+
+    # $x && $y both < 0
+    $CALC->_acmp($y->{value}, $x->{value}); # swapped acmp (lib returns 0, 1, -1)
+}
+
+sub bacmp {
+    # Compares 2 values, ignoring their signs.
+    # Returns one of undef, <0, =0, >0. (suitable for sort)
+    # (BINT, BINT) return cond_code
+
+    # set up parameters
+    my ($class, $x, $y) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+                        ? (ref($_[0]), @_)
+                        : objectify(2, @_);
+
+    return $upgrade->bacmp($x, $y) if defined $upgrade &&
+      ((!$x->isa($class)) || (!$y->isa($class)));
+
+    if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/)) {
+        # handle +-inf and NaN
+        return undef if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+        return 0 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} =~ /^[+-]inf$/;
+        return 1 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} !~ /^[+-]inf$/;
+        return -1;
+    }
+    $CALC->_acmp($x->{value}, $y->{value}); # lib does only 0, 1, -1
+}
+
+sub beq {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    Carp::croak 'beq() is an instance method, not a class method' unless $selfref;
+    Carp::croak 'Wrong number of arguments for beq()' unless @_ == 1;
+
+    my $cmp = $self -> bcmp(shift);
+    return defined($cmp) && ! $cmp;
+}
+
+sub bne {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    Carp::croak 'bne() is an instance method, not a class method' unless $selfref;
+    Carp::croak 'Wrong number of arguments for bne()' unless @_ == 1;
+
+    my $cmp = $self -> bcmp(shift);
+    return defined($cmp) && ! $cmp ? '' : 1;
+}
+
+sub blt {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    Carp::croak 'blt() is an instance method, not a class method' unless $selfref;
+    Carp::croak 'Wrong number of arguments for blt()' unless @_ == 1;
+
+    my $cmp = $self -> bcmp(shift);
+    return defined($cmp) && $cmp < 0;
+}
+
+sub ble {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    Carp::croak 'ble() is an instance method, not a class method' unless $selfref;
+    Carp::croak 'Wrong number of arguments for ble()' unless @_ == 1;
+
+    my $cmp = $self -> bcmp(shift);
+    return defined($cmp) && $cmp <= 0;
+}
+
+sub bgt {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    Carp::croak 'bgt() is an instance method, not a class method' unless $selfref;
+    Carp::croak 'Wrong number of arguments for bgt()' unless @_ == 1;
+
+    my $cmp = $self -> bcmp(shift);
+    return defined($cmp) && $cmp > 0;
+}
+
+sub bge {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    Carp::croak 'bge() is an instance method, not a class method'
+        unless $selfref;
+    Carp::croak 'Wrong number of arguments for bge()' unless @_ == 1;
+
+    my $cmp = $self -> bcmp(shift);
+    return defined($cmp) && $cmp >= 0;
+}
+
+###############################################################################
+# Arithmetic methods
+###############################################################################
+
+sub bneg {
+    # (BINT or num_str) return BINT
+    # negate number or make a negated number from string
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    return $x if $x->modify('bneg');
+
+    # for +0 do not negate (to have always normalized +0). Does nothing for 'NaN'
+    $x->{sign} =~ tr/+-/-+/ unless ($x->{sign} eq '+' && $CALC->_is_zero($x->{value}));
+    $x;
+}
+
+sub babs {
+    # (BINT or num_str) return BINT
+    # make number absolute, or return absolute BINT from string
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    return $x if $x->modify('babs');
+    # post-normalized abs for internal use (does nothing for NaN)
+    $x->{sign} =~ s/^-/+/;
+    $x;
+}
+
+sub bsgn {
+    # Signum function.
+
+    my $self = shift;
+
+    return $self if $self->modify('bsgn');
+
+    return $self -> bone("+") if $self -> is_pos();
+    return $self -> bone("-") if $self -> is_neg();
+    return $self;               # zero or NaN
+}
+
+sub bnorm {
+    # (numstr or BINT) return BINT
+    # Normalize number -- no-op here
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+    $x;
+}
+
+sub binc {
+    # increment arg by one
+    my ($class, $x, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+    return $x if $x->modify('binc');
+
+    if ($x->{sign} eq '+') {
+        $x->{value} = $CALC->_inc($x->{value});
+        return $x->round($a, $p, $r);
+    } elsif ($x->{sign} eq '-') {
+        $x->{value} = $CALC->_dec($x->{value});
+        $x->{sign} = '+' if $CALC->_is_zero($x->{value}); # -1 +1 => -0 => +0
+        return $x->round($a, $p, $r);
+    }
+    # inf, nan handling etc
+    $x->badd($class->bone(), $a, $p, $r); # badd does round
+}
+
+sub bdec {
+    # decrement arg by one
+    my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+    return $x if $x->modify('bdec');
+
+    if ($x->{sign} eq '-') {
+        # x already < 0
+        $x->{value} = $CALC->_inc($x->{value});
+    } else {
+        return $x->badd($class->bone('-'), @r)
+          unless $x->{sign} eq '+'; # inf or NaN
+        # >= 0
+        if ($CALC->_is_zero($x->{value})) {
+            # == 0
+            $x->{value} = $CALC->_one();
+            $x->{sign} = '-'; # 0 => -1
+        } else {
+            # > 0
+            $x->{value} = $CALC->_dec($x->{value});
+        }
+    }
+    $x->round(@r);
+}
+
+#sub bstrcmp {
+#    my $self    = shift;
+#    my $selfref = ref $self;
+#    my $class   = $selfref || $self;
+#
+#    Carp::croak 'bstrcmp() is an instance method, not a class method'
+#        unless $selfref;
+#    Carp::croak 'Wrong number of arguments for bstrcmp()' unless @_ == 1;
+#
+#    return $self -> bstr() CORE::cmp shift;
+#}
+#
+#sub bstreq {
+#    my $self    = shift;
+#    my $selfref = ref $self;
+#    my $class   = $selfref || $self;
+#
+#    Carp::croak 'bstreq() is an instance method, not a class method'
+#        unless $selfref;
+#    Carp::croak 'Wrong number of arguments for bstreq()' unless @_ == 1;
+#
+#    my $cmp = $self -> bstrcmp(shift);
+#    return defined($cmp) && ! $cmp;
+#}
+#
+#sub bstrne {
+#    my $self    = shift;
+#    my $selfref = ref $self;
+#    my $class   = $selfref || $self;
+#
+#    Carp::croak 'bstrne() is an instance method, not a class method'
+#        unless $selfref;
+#    Carp::croak 'Wrong number of arguments for bstrne()' unless @_ == 1;
+#
+#    my $cmp = $self -> bstrcmp(shift);
+#    return defined($cmp) && ! $cmp ? '' : 1;
+#}
+#
+#sub bstrlt {
+#    my $self    = shift;
+#    my $selfref = ref $self;
+#    my $class   = $selfref || $self;
+#
+#    Carp::croak 'bstrlt() is an instance method, not a class method'
+#        unless $selfref;
+#    Carp::croak 'Wrong number of arguments for bstrlt()' unless @_ == 1;
+#
+#    my $cmp = $self -> bstrcmp(shift);
+#    return defined($cmp) && $cmp < 0;
+#}
+#
+#sub bstrle {
+#    my $self    = shift;
+#    my $selfref = ref $self;
+#    my $class   = $selfref || $self;
+#
+#    Carp::croak 'bstrle() is an instance method, not a class method'
+#        unless $selfref;
+#    Carp::croak 'Wrong number of arguments for bstrle()' unless @_ == 1;
+#
+#    my $cmp = $self -> bstrcmp(shift);
+#    return defined($cmp) && $cmp <= 0;
+#}
+#
+#sub bstrgt {
+#    my $self    = shift;
+#    my $selfref = ref $self;
+#    my $class   = $selfref || $self;
+#
+#    Carp::croak 'bstrgt() is an instance method, not a class method'
+#        unless $selfref;
+#    Carp::croak 'Wrong number of arguments for bstrgt()' unless @_ == 1;
+#
+#    my $cmp = $self -> bstrcmp(shift);
+#    return defined($cmp) && $cmp > 0;
+#}
+#
+#sub bstrge {
+#    my $self    = shift;
+#    my $selfref = ref $self;
+#    my $class   = $selfref || $self;
+#
+#    Carp::croak 'bstrge() is an instance method, not a class method'
+#        unless $selfref;
+#    Carp::croak 'Wrong number of arguments for bstrge()' unless @_ == 1;
+#
+#    my $cmp = $self -> bstrcmp(shift);
+#    return defined($cmp) && $cmp >= 0;
+#}
+
+sub badd {
+    # add second arg (BINT or string) to first (BINT) (modifies first)
+    # return result as BINT
+
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
+
+    return $x if $x->modify('badd');
+    return $upgrade->badd($upgrade->new($x), $upgrade->new($y), @r) if defined $upgrade &&
+      ((!$x->isa($class)) || (!$y->isa($class)));
+
+    $r[3] = $y;                 # no push!
+    # inf and NaN handling
+    if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/) {
+        # NaN first
+        return $x->bnan() if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+        # inf handling
+        if (($x->{sign} =~ /^[+-]inf$/) && ($y->{sign} =~ /^[+-]inf$/)) {
+            # +inf++inf or -inf+-inf => same, rest is NaN
+            return $x if $x->{sign} eq $y->{sign};
+            return $x->bnan();
+        }
+        # +-inf + something => +inf
+        # something +-inf => +-inf
+        $x->{sign} = $y->{sign}, return $x if $y->{sign} =~ /^[+-]inf$/;
+        return $x;
+    }
+
+    my ($sx, $sy) = ($x->{sign}, $y->{sign});  # get signs
+
+    if ($sx eq $sy) {
+        $x->{value} = $CALC->_add($x->{value}, $y->{value}); # same sign, abs add
+    } else {
+        my $a = $CALC->_acmp ($y->{value}, $x->{value}); # absolute compare
+        if ($a > 0) {
+            $x->{value} = $CALC->_sub($y->{value}, $x->{value}, 1); # abs sub w/ swap
+            $x->{sign} = $sy;
+        } elsif ($a == 0) {
+            # speedup, if equal, set result to 0
+            $x->{value} = $CALC->_zero();
+            $x->{sign} = '+';
+        } else                  # a < 0
+        {
+            $x->{value} = $CALC->_sub($x->{value}, $y->{value}); # abs sub
+        }
+    }
+    $x->round(@r);
+}
+
+sub bsub {
+    # (BINT or num_str, BINT or num_str) return BINT
+    # subtract second arg from first, modify first
+
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
+
+    return $x if $x -> modify('bsub');
+
+    return $upgrade -> new($x) -> bsub($upgrade -> new($y), @r)
+      if defined $upgrade && (!$x -> isa($class) || !$y -> isa($class));
+
+    return $x -> round(@r) if $y -> is_zero();
+
+    # To correctly handle the lone special case $x -> bsub($x), we note the
+    # sign of $x, then flip the sign from $y, and if the sign of $x did change,
+    # too, then we caught the special case:
+
+    my $xsign = $x -> {sign};
+    $y -> {sign} =~ tr/+-/-+/;  # does nothing for NaN
+    if ($xsign ne $x -> {sign}) {
+        # special case of $x -> bsub($x) results in 0
+        return $x -> bzero(@r) if $xsign =~ /^[+-]$/;
+        return $x -> bnan();    # NaN, -inf, +inf
+    }
+    $x -> badd($y, @r);         # badd does not leave internal zeros
+    $y -> {sign} =~ tr/+-/-+/;  # refix $y (does nothing for NaN)
+    $x;                         # already rounded by badd() or no rounding
+}
+
+sub bmul {
+    # multiply the first number by the second number
+    # (BINT or num_str, BINT or num_str) return BINT
+
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
+
+    return $x if $x->modify('bmul');
+
+    return $x->bnan() if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+
+    # inf handling
+    if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/)) {
+        return $x->bnan() if $x->is_zero() || $y->is_zero();
+        # result will always be +-inf:
+        # +inf * +/+inf => +inf, -inf * -/-inf => +inf
+        # +inf * -/-inf => -inf, -inf * +/+inf => -inf
+        return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
+        return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
+        return $x->binf('-');
+    }
+
+    return $upgrade->bmul($x, $upgrade->new($y), @r)
+      if defined $upgrade && !$y->isa($class);
+
+    $r[3] = $y;                 # no push here
+
+    $x->{sign} = $x->{sign} eq $y->{sign} ? '+' : '-'; # +1 * +1 or -1 * -1 => +
+
+    $x->{value} = $CALC->_mul($x->{value}, $y->{value}); # do actual math
+    $x->{sign} = '+' if $CALC->_is_zero($x->{value});   # no -0
+
+    $x->round(@r);
+}
+
+sub bmuladd {
+    # multiply two numbers and then add the third to the result
+    # (BINT or num_str, BINT or num_str, BINT or num_str) return BINT
+
+    # set up parameters
+    my ($class, $x, $y, $z, @r) = objectify(3, @_);
+
+    return $x if $x->modify('bmuladd');
+
+    return $x->bnan() if (($x->{sign} eq $nan) ||
+                          ($y->{sign} eq $nan) ||
+                          ($z->{sign} eq $nan));
+
+    # inf handling of x and y
+    if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/)) {
+        return $x->bnan() if $x->is_zero() || $y->is_zero();
+        # result will always be +-inf:
+        # +inf * +/+inf => +inf, -inf * -/-inf => +inf
+        # +inf * -/-inf => -inf, -inf * +/+inf => -inf
+        return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
+        return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
+        return $x->binf('-');
+    }
+    # inf handling x*y and z
+    if (($z->{sign} =~ /^[+-]inf$/)) {
+        # something +-inf => +-inf
+        $x->{sign} = $z->{sign}, return $x if $z->{sign} =~ /^[+-]inf$/;
+    }
+
+    return $upgrade->bmuladd($x, $upgrade->new($y), $upgrade->new($z), @r)
+      if defined $upgrade && (!$y->isa($class) || !$z->isa($class) || !$x->isa($class));
+
+    # TODO: what if $y and $z have A or P set?
+    $r[3] = $z;                 # no push here
+
+    $x->{sign} = $x->{sign} eq $y->{sign} ? '+' : '-'; # +1 * +1 or -1 * -1 => +
+
+    $x->{value} = $CALC->_mul($x->{value}, $y->{value}); # do actual math
+    $x->{sign} = '+' if $CALC->_is_zero($x->{value});   # no -0
+
+    my ($sx, $sz) = ( $x->{sign}, $z->{sign} ); # get signs
+
+    if ($sx eq $sz) {
+        $x->{value} = $CALC->_add($x->{value}, $z->{value}); # same sign, abs add
+    } else {
+        my $a = $CALC->_acmp ($z->{value}, $x->{value}); # absolute compare
+        if ($a > 0) {
+            $x->{value} = $CALC->_sub($z->{value}, $x->{value}, 1); # abs sub w/ swap
+            $x->{sign} = $sz;
+        } elsif ($a == 0) {
+            # speedup, if equal, set result to 0
+            $x->{value} = $CALC->_zero();
+            $x->{sign} = '+';
+        } else                  # a < 0
+        {
+            $x->{value} = $CALC->_sub($x->{value}, $z->{value}); # abs sub
+        }
+    }
+    $x->round(@r);
+}
+
+sub bdiv {
+    # This does floored division, where the quotient is floored, i.e., rounded
+    # towards negative infinity. As a consequence, the remainder has the same
+    # sign as the divisor.
+
+    # Set up parameters.
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+
+    # objectify() is costly, so avoid it if we can.
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
+
+    return $x if $x -> modify('bdiv');
+
+    my $wantarray = wantarray;          # call only once
+
+    # At least one argument is NaN. Return NaN for both quotient and the
+    # modulo/remainder.
+
+    if ($x -> is_nan() || $y -> is_nan()) {
+        return $wantarray ? ($x -> bnan(), $class -> bnan()) : $x -> bnan();
+    }
+
+    # Divide by zero and modulo zero.
+    #
+    # Division: Use the common convention that x / 0 is inf with the same sign
+    # as x, except when x = 0, where we return NaN. This is also what earlier
+    # versions did.
+    #
+    # Modulo: In modular arithmetic, the congruence relation z = x (mod y)
+    # means that there is some integer k such that z - x = k y. If y = 0, we
+    # get z - x = 0 or z = x. This is also what earlier versions did, except
+    # that 0 % 0 returned NaN.
+    #
+    #     inf /    0 =  inf                  inf %    0 =  inf
+    #       5 /    0 =  inf                    5 %    0 =    5
+    #       0 /    0 =  NaN                    0 %    0 =    0
+    #      -5 /    0 = -inf                   -5 %    0 =   -5
+    #    -inf /    0 = -inf                 -inf %    0 = -inf
+
+    if ($y -> is_zero()) {
+        my $rem;
+        if ($wantarray) {
+            $rem = $x -> copy();
+        }
+        if ($x -> is_zero()) {
+            $x -> bnan();
+        } else {
+            $x -> binf($x -> {sign});
+        }
+        return $wantarray ? ($x, $rem) : $x;
+    }
+
+    # Numerator (dividend) is +/-inf, and denominator is finite and non-zero.
+    # The divide by zero cases are covered above. In all of the cases listed
+    # below we return the same as core Perl.
+    #
+    #     inf / -inf =  NaN                  inf % -inf =  NaN
+    #     inf /   -5 = -inf                  inf %   -5 =  NaN
+    #     inf /    5 =  inf                  inf %    5 =  NaN
+    #     inf /  inf =  NaN                  inf %  inf =  NaN
+    #
+    #    -inf / -inf =  NaN                 -inf % -inf =  NaN
+    #    -inf /   -5 =  inf                 -inf %   -5 =  NaN
+    #    -inf /    5 = -inf                 -inf %    5 =  NaN
+    #    -inf /  inf =  NaN                 -inf %  inf =  NaN
+
+    if ($x -> is_inf()) {
+        my $rem;
+        $rem = $class -> bnan() if $wantarray;
+        if ($y -> is_inf()) {
+            $x -> bnan();
+        } else {
+            my $sign = $x -> bcmp(0) == $y -> bcmp(0) ? '+' : '-';
+            $x -> binf($sign);
+        }
+        return $wantarray ? ($x, $rem) : $x;
+    }
+
+    # Denominator (divisor) is +/-inf. The cases when the numerator is +/-inf
+    # are covered above. In the modulo cases (in the right column) we return
+    # the same as core Perl, which does floored division, so for consistency we
+    # also do floored division in the division cases (in the left column).
+    #
+    #      -5 /  inf =   -1                   -5 %  inf =  inf
+    #       0 /  inf =    0                    0 %  inf =    0
+    #       5 /  inf =    0                    5 %  inf =    5
+    #
+    #      -5 / -inf =    0                   -5 % -inf =   -5
+    #       0 / -inf =    0                    0 % -inf =    0
+    #       5 / -inf =   -1                    5 % -inf = -inf
+
+    if ($y -> is_inf()) {
+        my $rem;
+        if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
+            $rem = $x -> copy() if $wantarray;
+            $x -> bzero();
+        } else {
+            $rem = $class -> binf($y -> {sign}) if $wantarray;
+            $x -> bone('-');
+        }
+        return $wantarray ? ($x, $rem) : $x;
+    }
+
+    # At this point, both the numerator and denominator are finite numbers, and
+    # the denominator (divisor) is non-zero.
+
+    return $upgrade -> bdiv($upgrade -> new($x), $upgrade -> new($y), @r)
+      if defined $upgrade;
+
+    $r[3] = $y;                                   # no push!
+
+    # Inialize remainder.
+
+    my $rem = $class -> bzero();
+
+    # Are both operands the same object, i.e., like $x -> bdiv($x)? If so,
+    # flipping the sign of $y also flips the sign of $x.
+
+    my $xsign = $x -> {sign};
+    my $ysign = $y -> {sign};
+
+    $y -> {sign} =~ tr/+-/-+/;            # Flip the sign of $y, and see ...
+    my $same = $xsign ne $x -> {sign};    # ... if that changed the sign of $x.
+    $y -> {sign} = $ysign;                # Re-insert the original sign.
+
+    if ($same) {
+        $x -> bone();
+    } else {
+        ($x -> {value}, $rem -> {value}) =
+          $CALC -> _div($x -> {value}, $y -> {value});
+
+        if ($CALC -> _is_zero($rem -> {value})) {
+            if ($xsign eq $ysign || $CALC -> _is_zero($x -> {value})) {
+                $x -> {sign} = '+';
+            } else {
+                $x -> {sign} = '-';
+            }
+        } else {
+            if ($xsign eq $ysign) {
+                $x -> {sign} = '+';
+            } else {
+                if ($xsign eq '+') {
+                    $x -> badd(1);
+                } else {
+                    $x -> bsub(1);
+                }
+                $x -> {sign} = '-';
+            }
+        }
+    }
+
+    $x -> round(@r);
+
+    if ($wantarray) {
+        unless ($CALC -> _is_zero($rem -> {value})) {
+            if ($xsign ne $ysign) {
+                $rem = $y -> copy() -> babs() -> bsub($rem);
+            }
+            $rem -> {sign} = $ysign;
+        }
+        $rem -> {_a} = $x -> {_a};
+        $rem -> {_p} = $x -> {_p};
+        $rem -> round(@r);
+        return ($x, $rem);
+    }
+
+    return $x;
+}
+
+sub btdiv {
+    # This does truncated division, where the quotient is truncted, i.e.,
+    # rounded towards zero.
+    #
+    # ($q, $r) = $x -> btdiv($y) returns $q and $r so that $q is int($x / $y)
+    # and $q * $y + $r = $x.
+
+    # Set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+
+    # objectify is costly, so avoid it if we can.
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
+
+    return $x if $x -> modify('btdiv');
+
+    my $wantarray = wantarray;          # call only once
+
+    # At least one argument is NaN. Return NaN for both quotient and the
+    # modulo/remainder.
+
+    if ($x -> is_nan() || $y -> is_nan()) {
+        return $wantarray ? ($x -> bnan(), $class -> bnan()) : $x -> bnan();
+    }
+
+    # Divide by zero and modulo zero.
+    #
+    # Division: Use the common convention that x / 0 is inf with the same sign
+    # as x, except when x = 0, where we return NaN. This is also what earlier
+    # versions did.
+    #
+    # Modulo: In modular arithmetic, the congruence relation z = x (mod y)
+    # means that there is some integer k such that z - x = k y. If y = 0, we
+    # get z - x = 0 or z = x. This is also what earlier versions did, except
+    # that 0 % 0 returned NaN.
+    #
+    #     inf / 0 =  inf                     inf % 0 =  inf
+    #       5 / 0 =  inf                       5 % 0 =    5
+    #       0 / 0 =  NaN                       0 % 0 =    0
+    #      -5 / 0 = -inf                      -5 % 0 =   -5
+    #    -inf / 0 = -inf                    -inf % 0 = -inf
+
+    if ($y -> is_zero()) {
+        my $rem;
+        if ($wantarray) {
+            $rem = $x -> copy();
+        }
+        if ($x -> is_zero()) {
+            $x -> bnan();
+        } else {
+            $x -> binf($x -> {sign});
+        }
+        return $wantarray ? ($x, $rem) : $x;
+    }
+
+    # Numerator (dividend) is +/-inf, and denominator is finite and non-zero.
+    # The divide by zero cases are covered above. In all of the cases listed
+    # below we return the same as core Perl.
+    #
+    #     inf / -inf =  NaN                  inf % -inf =  NaN
+    #     inf /   -5 = -inf                  inf %   -5 =  NaN
+    #     inf /    5 =  inf                  inf %    5 =  NaN
+    #     inf /  inf =  NaN                  inf %  inf =  NaN
+    #
+    #    -inf / -inf =  NaN                 -inf % -inf =  NaN
+    #    -inf /   -5 =  inf                 -inf %   -5 =  NaN
+    #    -inf /    5 = -inf                 -inf %    5 =  NaN
+    #    -inf /  inf =  NaN                 -inf %  inf =  NaN
+
+    if ($x -> is_inf()) {
+        my $rem;
+        $rem = $class -> bnan() if $wantarray;
+        if ($y -> is_inf()) {
+            $x -> bnan();
+        } else {
+            my $sign = $x -> bcmp(0) == $y -> bcmp(0) ? '+' : '-';
+            $x -> binf($sign);
+        }
+        return $wantarray ? ($x, $rem) : $x;
+    }
+
+    # Denominator (divisor) is +/-inf. The cases when the numerator is +/-inf
+    # are covered above. In the modulo cases (in the right column) we return
+    # the same as core Perl, which does floored division, so for consistency we
+    # also do floored division in the division cases (in the left column).
+    #
+    #      -5 /  inf =    0                   -5 %  inf =  -5
+    #       0 /  inf =    0                    0 %  inf =   0
+    #       5 /  inf =    0                    5 %  inf =   5
+    #
+    #      -5 / -inf =    0                   -5 % -inf =  -5
+    #       0 / -inf =    0                    0 % -inf =   0
+    #       5 / -inf =    0                    5 % -inf =   5
+
+    if ($y -> is_inf()) {
+        my $rem;
+        $rem = $x -> copy() if $wantarray;
+        $x -> bzero();
+        return $wantarray ? ($x, $rem) : $x;
+    }
+
+    return $upgrade -> btdiv($upgrade -> new($x), $upgrade -> new($y), @r)
+      if defined $upgrade;
+
+    $r[3] = $y;                 # no push!
+
+    # Inialize remainder.
+
+    my $rem = $class -> bzero();
+
+    # Are both operands the same object, i.e., like $x -> bdiv($x)? If so,
+    # flipping the sign of $y also flips the sign of $x.
+
+    my $xsign = $x -> {sign};
+    my $ysign = $y -> {sign};
+
+    $y -> {sign} =~ tr/+-/-+/;            # Flip the sign of $y, and see ...
+    my $same = $xsign ne $x -> {sign};    # ... if that changed the sign of $x.
+    $y -> {sign} = $ysign;                # Re-insert the original sign.
+
+    if ($same) {
+        $x -> bone();
+    } else {
+        ($x -> {value}, $rem -> {value}) =
+          $CALC -> _div($x -> {value}, $y -> {value});
+
+        $x -> {sign} = $xsign eq $ysign ? '+' : '-';
+        $x -> {sign} = '+' if $CALC -> _is_zero($x -> {value});
+        $x -> round(@r);
+    }
+
+    if (wantarray) {
+        $rem -> {sign} = $xsign;
+        $rem -> {sign} = '+' if $CALC -> _is_zero($rem -> {value});
+        $rem -> {_a} = $x -> {_a};
+        $rem -> {_p} = $x -> {_p};
+        $rem -> round(@r);
+        return ($x, $rem);
+    }
+
+    return $x;
+}
+
+sub bmod {
+    # This is the remainder after floored division.
+
+    # Set up parameters.
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
+
+    return $x if $x -> modify('bmod');
+    $r[3] = $y;                 # no push!
+
+    # At least one argument is NaN.
+
+    if ($x -> is_nan() || $y -> is_nan()) {
+        return $x -> bnan();
+    }
+
+    # Modulo zero. See documentation for bdiv().
+
+    if ($y -> is_zero()) {
+        return $x;
+    }
+
+    # Numerator (dividend) is +/-inf.
+
+    if ($x -> is_inf()) {
+        return $x -> bnan();
+    }
+
+    # Denominator (divisor) is +/-inf.
+
+    if ($y -> is_inf()) {
+        if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
+            return $x;
+        } else {
+            return $x -> binf($y -> sign());
+        }
+    }
+
+    # Calc new sign and in case $y == +/- 1, return $x.
+
+    $x -> {value} = $CALC -> _mod($x -> {value}, $y -> {value});
+    if ($CALC -> _is_zero($x -> {value})) {
+        $x -> {sign} = '+';     # do not leave -0
+    } else {
+        $x -> {value} = $CALC -> _sub($y -> {value}, $x -> {value}, 1) # $y-$x
+          if ($x -> {sign} ne $y -> {sign});
+        $x -> {sign} = $y -> {sign};
+    }
+
+    $x -> round(@r);
+}
+
+sub btmod {
+    # Remainder after truncated division.
+
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
 
-    # !!!!!!! If you change this, remember to change round(), too! !!!!!!!!!!
+    return $x if $x -> modify('btmod');
 
-    # This procedure finds the round parameters, but it is for speed reasons
-    # duplicated in round. Otherwise, it is tested by the testsuite and used
-    # by bdiv().
+    # At least one argument is NaN.
 
-    # returns ($self) or ($self,$a,$p,$r) - sets $self to NaN of both A and P
-    # were requested/defined (locally or globally or both)
+    if ($x -> is_nan() || $y -> is_nan()) {
+        return $x -> bnan();
+    }
 
-    my ($self, $a, $p, $r, @args) = @_;
-    # $a accuracy, if given by caller
-    # $p precision, if given by caller
-    # $r round_mode, if given by caller
-    # @args all 'other' arguments (0 for unary, 1 for binary ops)
+    # Modulo zero. See documentation for btdiv().
 
-    my $class = ref($self);       # find out class of argument(s)
-    no strict 'refs';
+    if ($y -> is_zero()) {
+        return $x;
+    }
 
-    # convert to normal scalar for speed and correctness in inner parts
-    $a = $a->can('numify') ? $a->numify() : "$a" if defined $a && ref($a);
-    $p = $p->can('numify') ? $p->numify() : "$p" if defined $p && ref($p);
+    # Numerator (dividend) is +/-inf.
 
-    # now pick $a or $p, but only if we have got "arguments"
-    if (!defined $a) {
-        foreach ($self, @args) {
-            # take the defined one, or if both defined, the one that is smaller
-            $a = $_->{_a} if (defined $_->{_a}) && (!defined $a || $_->{_a} < $a);
-        }
+    if ($x -> is_inf()) {
+        return $x -> bnan();
     }
-    if (!defined $p) {
-        # even if $a is defined, take $p, to signal error for both defined
-        foreach ($self, @args) {
-            # take the defined one, or if both defined, the one that is bigger
-            # -2 > -3, and 3 > 2
-            $p = $_->{_p} if (defined $_->{_p}) && (!defined $p || $_->{_p} > $p);
-        }
+
+    # Denominator (divisor) is +/-inf.
+
+    if ($y -> is_inf()) {
+        return $x;
     }
 
-    # if still none defined, use globals (#2)
-    $a = ${"$class\::accuracy"}  unless defined $a;
-    $p = ${"$class\::precision"} unless defined $p;
+    return $upgrade -> btmod($upgrade -> new($x), $upgrade -> new($y), @r)
+      if defined $upgrade;
 
-    # A == 0 is useless, so undef it to signal no rounding
-    $a = undef if defined $a && $a == 0;
+    $r[3] = $y;                 # no push!
 
-    # no rounding today?
-    return ($self) unless defined $a || defined $p; # early out
+    my $xsign = $x -> {sign};
+    my $ysign = $y -> {sign};
 
-    # set A and set P is an fatal error
-    return ($self->bnan()) if defined $a && defined $p; # error
+    $x -> {value} = $CALC -> _mod($x -> {value}, $y -> {value});
 
-    $r = ${"$class\::round_mode"} unless defined $r;
-    if ($r !~ /^(even|odd|[+-]inf|zero|trunc|common)$/) {
-        require Carp; Carp::croak ("Unknown round mode '$r'");
+    $x -> {sign} = $xsign;
+    $x -> {sign} = '+' if $CALC -> _is_zero($x -> {value});
+    $x -> round(@r);
+    return $x;
+}
+
+sub bmodinv {
+    # Return modular multiplicative inverse:
+    #
+    #   z is the modular inverse of x (mod y) if and only if
+    #
+    #       x*z ≡ 1  (mod y)
+    #
+    # If the modulus y is larger than one, x and z are relative primes (i.e.,
+    # their greatest common divisor is one).
+    #
+    # If no modular multiplicative inverse exists, NaN is returned.
+
+    # set up parameters
+    my ($class, $x, $y, @r) = (undef, @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
     }
 
-    $a = int($a) if defined $a;
-    $p = int($p) if defined $p;
+    return $x if $x->modify('bmodinv');
 
-    ($self, $a, $p, $r);
-}
+    # Return NaN if one or both arguments is +inf, -inf, or nan.
 
-sub round {
-    # Round $self according to given parameters, or given second argument's
-    # parameters or global defaults
+    return $x->bnan() if ($y->{sign} !~ /^[+-]$/ ||
+                          $x->{sign} !~ /^[+-]$/);
 
-    # for speed reasons, _find_round_parameters is embedded here:
+    # Return NaN if $y is zero; 1 % 0 makes no sense.
 
-    my ($self, $a, $p, $r, @args) = @_;
-    # $a accuracy, if given by caller
-    # $p precision, if given by caller
-    # $r round_mode, if given by caller
-    # @args all 'other' arguments (0 for unary, 1 for binary ops)
+    return $x->bnan() if $y->is_zero();
 
-    my $class = ref($self);       # find out class of argument(s)
-    no strict 'refs';
+    # Return 0 in the trivial case. $x % 1 or $x % -1 is zero for all finite
+    # integers $x.
 
-    # now pick $a or $p, but only if we have got "arguments"
-    if (!defined $a) {
-        foreach ($self, @args) {
-            # take the defined one, or if both defined, the one that is smaller
-            $a = $_->{_a} if (defined $_->{_a}) && (!defined $a || $_->{_a} < $a);
-        }
-    }
-    if (!defined $p) {
-        # even if $a is defined, take $p, to signal error for both defined
-        foreach ($self, @args) {
-            # take the defined one, or if both defined, the one that is bigger
-            # -2 > -3, and 3 > 2
-            $p = $_->{_p} if (defined $_->{_p}) && (!defined $p || $_->{_p} > $p);
-        }
-    }
+    return $x->bzero() if ($y->is_one() ||
+                           $y->is_one('-'));
 
-    # if still none defined, use globals (#2)
-    $a = ${"$class\::accuracy"}  unless defined $a;
-    $p = ${"$class\::precision"} unless defined $p;
+    # Return NaN if $x = 0, or $x modulo $y is zero. The only valid case when
+    # $x = 0 is when $y = 1 or $y = -1, but that was covered above.
+    #
+    # Note that computing $x modulo $y here affects the value we'll feed to
+    # $CALC->_modinv() below when $x and $y have opposite signs. E.g., if $x =
+    # 5 and $y = 7, those two values are fed to _modinv(), but if $x = -5 and
+    # $y = 7, the values fed to _modinv() are $x = 2 (= -5 % 7) and $y = 7.
+    # The value if $x is affected only when $x and $y have opposite signs.
 
-    # A == 0 is useless, so undef it to signal no rounding
-    $a = undef if defined $a && $a == 0;
+    $x->bmod($y);
+    return $x->bnan() if $x->is_zero();
 
-    # no rounding today?
-    return $self unless defined $a || defined $p; # early out
+    # Compute the modular multiplicative inverse of the absolute values. We'll
+    # correct for the signs of $x and $y later. Return NaN if no GCD is found.
 
-    # set A and set P is an fatal error
-    return $self->bnan() if defined $a && defined $p;
+    ($x->{value}, $x->{sign}) = $CALC->_modinv($x->{value}, $y->{value});
+    return $x->bnan() if !defined $x->{value};
 
-    $r = ${"$class\::round_mode"} unless defined $r;
-    if ($r !~ /^(even|odd|[+-]inf|zero|trunc|common)$/) {
-        require Carp; Carp::croak ("Unknown round mode '$r'");
-    }
+    # Library inconsistency workaround: _modinv() in Math::BigInt::GMP versions
+    # <= 1.32 return undef rather than a "+" for the sign.
 
-    # now round, by calling either bround or bfround:
-    if (defined $a) {
-        $self->bround(int($a), $r) if !defined $self->{_a} || $self->{_a} >= $a;
-    } else {                  # both can't be undefined due to early out
-        $self->bfround(int($p), $r) if !defined $self->{_p} || $self->{_p} <= $p;
-    }
+    $x->{sign} = '+' unless defined $x->{sign};
 
-    # bround() or bfround() already called bnorm() if nec.
-    $self;
-}
+    # When one or both arguments are negative, we have the following
+    # relations.  If x and y are positive:
+    #
+    #   modinv(-x, -y) = -modinv(x, y)
+    #   modinv(-x, y) = y - modinv(x, y)  = -modinv(x, y) (mod y)
+    #   modinv( x, -y) = modinv(x, y) - y  =  modinv(x, y) (mod -y)
 
-sub bnorm
-  {
-  # (numstr or BINT) return BINT
-  # Normalize number -- no-op here
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
-  $x;
-  }
-
-sub babs
-  {
-  # (BINT or num_str) return BINT
-  # make number absolute, or return absolute BINT from string
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
-
-  return $x if $x->modify('babs');
-  # post-normalized abs for internal use (does nothing for NaN)
-  $x->{sign} =~ s/^-/+/;
-  $x;
-  }
+    # We must swap the sign of the result if the original $x is negative.
+    # However, we must compensate for ignoring the signs when computing the
+    # inverse modulo. The net effect is that we must swap the sign of the
+    # result if $y is negative.
 
-sub bsgn {
-    # Signum function.
+    $x -> bneg() if $y->{sign} eq '-';
 
-    my $self = shift;
+    # Compute $x modulo $y again after correcting the sign.
 
-    return $self if $self->modify('bsgn');
+    $x -> bmod($y) if $x->{sign} ne $y->{sign};
 
-    return $self -> bone("+") if $self -> is_pos();
-    return $self -> bone("-") if $self -> is_neg();
-    return $self;               # zero or NaN
+    return $x;
 }
 
-sub bneg
-  {
-  # (BINT or num_str) return BINT
-  # negate number or make a negated number from string
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+sub bmodpow {
+    # Modular exponentiation. Raises a very large number to a very large exponent
+    # in a given very large modulus quickly, thanks to binary exponentiation.
+    # Supports negative exponents.
+    my ($class, $num, $exp, $mod, @r) = objectify(3, @_);
 
-  return $x if $x->modify('bneg');
+    return $num if $num->modify('bmodpow');
 
-  # for +0 do not negate (to have always normalized +0). Does nothing for 'NaN'
-  $x->{sign} =~ tr/+-/-+/ unless ($x->{sign} eq '+' && $CALC->_is_zero($x->{value}));
-  $x;
-  }
+    # When the exponent 'e' is negative, use the following relation, which is
+    # based on finding the multiplicative inverse 'd' of 'b' modulo 'm':
+    #
+    #    b^(-e) (mod m) = d^e (mod m) where b*d = 1 (mod m)
 
-sub bcmp
-  {
-  # Compares 2 values.  Returns one of undef, <0, =0, >0. (suitable for sort)
-  # (BINT or num_str, BINT or num_str) return cond_code
+    $num->bmodinv($mod) if ($exp->{sign} eq '-');
 
-  # set up parameters
-  my ($self,$x,$y) = (ref($_[0]),@_);
+    # Check for valid input. All operands must be finite, and the modulus must be
+    # non-zero.
 
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y) = objectify(2,@_);
-    }
+    return $num->bnan() if ($num->{sign} =~ /NaN|inf/ || # NaN, -inf, +inf
+                            $exp->{sign} =~ /NaN|inf/ || # NaN, -inf, +inf
+                            $mod->{sign} =~ /NaN|inf/);  # NaN, -inf, +inf
 
-  return $upgrade->bcmp($x,$y) if defined $upgrade &&
-    ((!$x->isa($self)) || (!$y->isa($self)));
+    # Modulo zero. See documentation for Math::BigInt's bmod() method.
 
-  if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/))
-    {
-    # handle +-inf and NaN
-    return undef if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
-    return 0 if $x->{sign} eq $y->{sign} && $x->{sign} =~ /^[+-]inf$/;
-    return +1 if $x->{sign} eq '+inf';
-    return -1 if $x->{sign} eq '-inf';
-    return -1 if $y->{sign} eq '+inf';
-    return +1;
-    }
-  # check sign for speed first
-  return 1 if $x->{sign} eq '+' && $y->{sign} eq '-';   # does also 0 <=> -y
-  return -1 if $x->{sign} eq '-' && $y->{sign} eq '+';  # does also -x <=> 0
-
-  # have same sign, so compare absolute values.  Don't make tests for zero
-  # here because it's actually slower than testing in Calc (especially w/ Pari
-  # et al)
-
-  # post-normalized compare for internal use (honors signs)
-  if ($x->{sign} eq '+')
-    {
-    # $x and $y both > 0
-    return $CALC->_acmp($x->{value},$y->{value});
+    if ($mod -> is_zero()) {
+        if ($num -> is_zero()) {
+            return $class -> bnan();
+        } else {
+            return $num -> copy();
+        }
     }
 
-  # $x && $y both < 0
-  $CALC->_acmp($y->{value},$x->{value});        # swapped acmp (lib returns 0,1,-1)
-  }
+    # Compute 'a (mod m)', ignoring the signs on 'a' and 'm'. If the resulting
+    # value is zero, the output is also zero, regardless of the signs on 'a' and
+    # 'm'.
 
-sub bacmp
-  {
-  # Compares 2 values, ignoring their signs.
-  # Returns one of undef, <0, =0, >0. (suitable for sort)
-  # (BINT, BINT) return cond_code
+    my $value = $CALC->_modpow($num->{value}, $exp->{value}, $mod->{value});
+    my $sign  = '+';
+
+    # If the resulting value is non-zero, we have four special cases, depending
+    # on the signs on 'a' and 'm'.
+
+    unless ($CALC->_is_zero($value)) {
+
+        # There is a negative sign on 'a' (= $num**$exp) only if the number we
+        # are exponentiating ($num) is negative and the exponent ($exp) is odd.
+
+        if ($num->{sign} eq '-' && $exp->is_odd()) {
+
+            # When both the number 'a' and the modulus 'm' have a negative sign,
+            # use this relation:
+            #
+            #    -a (mod -m) = -(a (mod m))
+
+            if ($mod->{sign} eq '-') {
+                $sign = '-';
+            }
+
+            # When only the number 'a' has a negative sign, use this relation:
+            #
+            #    -a (mod m) = m - (a (mod m))
+
+            else {
+                # Use copy of $mod since _sub() modifies the first argument.
+                my $mod = $CALC->_copy($mod->{value});
+                $value = $CALC->_sub($mod, $value);
+                $sign  = '+';
+            }
+
+        } else {
+
+            # When only the modulus 'm' has a negative sign, use this relation:
+            #
+            #    a (mod -m) = (a (mod m)) - m
+            #               = -(m - (a (mod m)))
+
+            if ($mod->{sign} eq '-') {
+                # Use copy of $mod since _sub() modifies the first argument.
+                my $mod = $CALC->_copy($mod->{value});
+                $value = $CALC->_sub($mod, $value);
+                $sign  = '-';
+            }
+
+            # When neither the number 'a' nor the modulus 'm' have a negative
+            # sign, directly return the already computed value.
+            #
+            #    (a (mod m))
+
+        }
 
-  # set up parameters
-  my ($self,$x,$y) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y) = objectify(2,@_);
     }
 
-  return $upgrade->bacmp($x,$y) if defined $upgrade &&
-    ((!$x->isa($self)) || (!$y->isa($self)));
+    $num->{value} = $value;
+    $num->{sign}  = $sign;
 
-  if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/))
-    {
-    # handle +-inf and NaN
-    return undef if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
-    return 0 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} =~ /^[+-]inf$/;
-    return 1 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} !~ /^[+-]inf$/;
-    return -1;
-    }
-  $CALC->_acmp($x->{value},$y->{value});        # lib does only 0,1,-1
-  }
-
-sub badd
-  {
-  # add second arg (BINT or string) to first (BINT) (modifies first)
-  # return result as BINT
-
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
+    return $num;
+}
+
+sub bpow {
+    # (BINT or num_str, BINT or num_str) return BINT
+    # compute power of two numbers -- stolen from Knuth Vol 2 pg 233
+    # modifies first argument
+
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
     }
 
-  return $x if $x->modify('badd');
-  return $upgrade->badd($upgrade->new($x),$upgrade->new($y),@r) if defined $upgrade &&
-    ((!$x->isa($self)) || (!$y->isa($self)));
+    return $x if $x->modify('bpow');
+
+    return $x->bnan() if $x->{sign} eq $nan || $y->{sign} eq $nan;
 
-  $r[3] = $y;                           # no push!
-  # inf and NaN handling
-  if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/))
-    {
-    # NaN first
-    return $x->bnan() if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
     # inf handling
-    if (($x->{sign} =~ /^[+-]inf$/) && ($y->{sign} =~ /^[+-]inf$/))
-      {
-      # +inf++inf or -inf+-inf => same, rest is NaN
-      return $x if $x->{sign} eq $y->{sign};
-      return $x->bnan();
-      }
-    # +-inf + something => +inf
-    # something +-inf => +-inf
-    $x->{sign} = $y->{sign}, return $x if $y->{sign} =~ /^[+-]inf$/;
-    return $x;
-    }
+    if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/)) {
+        if (($x->{sign} =~ /^[+-]inf$/) && ($y->{sign} =~ /^[+-]inf$/)) {
+            # +-inf ** +-inf
+            return $x->bnan();
+        }
+        # +-inf ** Y
+        if ($x->{sign} =~ /^[+-]inf/) {
+            # +inf ** 0 => NaN
+            return $x->bnan() if $y->is_zero();
+            # -inf ** -1 => 1/inf => 0
+            return $x->bzero() if $y->is_one('-') && $x->is_negative();
+
+            # +inf ** Y => inf
+            return $x if $x->{sign} eq '+inf';
+
+            # -inf ** Y => -inf if Y is odd
+            return $x if $y->is_odd();
+            return $x->babs();
+        }
+        # X ** +-inf
 
-  my ($sx, $sy) = ( $x->{sign}, $y->{sign} );           # get signs
+        # 1 ** +inf => 1
+        return $x if $x->is_one();
 
-  if ($sx eq $sy)
-    {
-    $x->{value} = $CALC->_add($x->{value},$y->{value}); # same sign, abs add
-    }
-  else
-    {
-    my $a = $CALC->_acmp ($y->{value},$x->{value});     # absolute compare
-    if ($a > 0)
-      {
-      $x->{value} = $CALC->_sub($y->{value},$x->{value},1); # abs sub w/ swap
-      $x->{sign} = $sy;
-      }
-    elsif ($a == 0)
-      {
-      # speedup, if equal, set result to 0
-      $x->{value} = $CALC->_zero();
-      $x->{sign} = '+';
-      }
-    else # a < 0
-      {
-      $x->{value} = $CALC->_sub($x->{value}, $y->{value}); # abs sub
-      }
-    }
-  $x->round(@r);
-  }
-
-sub bsub
-  {
-  # (BINT or num_str, BINT or num_str) return BINT
-  # subtract second arg from first, modify first
-
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
-    }
+        # 0 ** inf => 0
+        return $x if $x->is_zero() && $y->{sign} =~ /^[+]/;
 
-  return $x if $x->modify('bsub');
+        # 0 ** -inf => inf
+        return $x->binf() if $x->is_zero();
 
-  return $upgrade->new($x)->bsub($upgrade->new($y),@r) if defined $upgrade &&
-   ((!$x->isa($self)) || (!$y->isa($self)));
+        # -1 ** -inf => NaN
+        return $x->bnan() if $x->is_one('-') && $y->{sign} =~ /^[-]/;
 
-  return $x->round(@r) if $y->is_zero();
+        # -X ** -inf => 0
+        return $x->bzero() if $x->{sign} eq '-' && $y->{sign} =~ /^[-]/;
 
-  # To correctly handle the lone special case $x->bsub($x), we note the sign
-  # of $x, then flip the sign from $y, and if the sign of $x did change, too,
-  # then we caught the special case:
-  my $xsign = $x->{sign};
-  $y->{sign} =~ tr/+\-/-+/;     # does nothing for NaN
-  if ($xsign ne $x->{sign})
-    {
-    # special case of $x->bsub($x) results in 0
-    return $x->bzero(@r) if $xsign =~ /^[+-]$/;
-    return $x->bnan();          # NaN, -inf, +inf
-    }
-  $x->badd($y,@r);              # badd does not leave internal zeros
-  $y->{sign} =~ tr/+\-/-+/;     # refix $y (does nothing for NaN)
-  $x;                           # already rounded by badd() or no round nec.
-  }
-
-sub binc
-  {
-  # increment arg by one
-  my ($self,$x,$a,$p,$r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
-  return $x if $x->modify('binc');
-
-  if ($x->{sign} eq '+')
-    {
-    $x->{value} = $CALC->_inc($x->{value});
-    return $x->round($a,$p,$r);
-    }
-  elsif ($x->{sign} eq '-')
-    {
-    $x->{value} = $CALC->_dec($x->{value});
-    $x->{sign} = '+' if $CALC->_is_zero($x->{value}); # -1 +1 => -0 => +0
-    return $x->round($a,$p,$r);
+        # -1 ** inf => NaN
+        return $x->bnan() if $x->{sign} eq '-';
+
+        # X ** inf => inf
+        return $x->binf() if $y->{sign} =~ /^[+]/;
+        # X ** -inf => 0
+        return $x->bzero();
     }
-  # inf, nan handling etc
-  $x->badd($self->bone(),$a,$p,$r);             # badd does round
-  }
 
-sub bdec
-  {
-  # decrement arg by one
-  my ($self,$x,@r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
-  return $x if $x->modify('bdec');
+    return $upgrade->bpow($upgrade->new($x), $y, @r)
+      if defined $upgrade && (!$y->isa($class) || $y->{sign} eq '-');
 
-  if ($x->{sign} eq '-')
-    {
-    # x already < 0
-    $x->{value} = $CALC->_inc($x->{value});
-    }
-  else
-    {
-    return $x->badd($self->bone('-'),@r)
-        unless $x->{sign} eq '+'; # inf or NaN
-    # >= 0
-    if ($CALC->_is_zero($x->{value}))
-      {
-      # == 0
-      $x->{value} = $CALC->_one(); $x->{sign} = '-';            # 0 => -1
-      }
-    else
-      {
-      # > 0
-      $x->{value} = $CALC->_dec($x->{value});
-      }
-    }
-  $x->round(@r);
-  }
-
-sub blog
-  {
-  # Return the logarithm of the operand. If a second operand is defined, that
-  # value is used as the base, otherwise the base is assumed to be Euler's
-  # constant.
-
-  # Don't objectify the base, since an undefined base, as in $x->blog() or
-  # $x->blog(undef) signals that the base is Euler's number.
-
-  # set up parameters
-  my ($self,$x,$base,@r) = (undef,@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
-      ($self,$x,$base,@r) = objectify(1,@_);
-  }
-
-  return $x if $x->modify('blog');
-
-  # Handle all exception cases and all trivial cases. I have used Wolfram Alpha
-  # (http://www.wolframalpha.com) as the reference for these cases.
-
-  return $x -> bnan() if $x -> is_nan();
-
-  if (defined $base) {
-      $base = $self -> new($base) unless ref $base;
-      if ($base -> is_nan() || $base -> is_one()) {
-          return $x -> bnan();
-      } elsif ($base -> is_inf() || $base -> is_zero()) {
-          return $x -> bnan() if $x -> is_inf() || $x -> is_zero();
-          return $x -> bzero();
-      } elsif ($base -> is_negative()) {            # -inf < base < 0
-          return $x -> bzero() if $x -> is_one();   #     x = 1
-          return $x -> bone()  if $x == $base;      #     x = base
-          return $x -> bnan();                      #     otherwise
-      }
-      return $x -> bone() if $x == $base;           # 0 < base && 0 < x < inf
-  }
-
-  # We now know that the base is either undefined or >= 2 and finite.
-
-  return $x -> binf('+') if $x -> is_inf();         #   x = +/-inf
-  return $x -> bnan()    if $x -> is_neg();         #   -inf < x < 0
-  return $x -> bzero()   if $x -> is_one();         #   x = 1
-  return $x -> binf('-') if $x -> is_zero();        #   x = 0
-
-  # At this point we are done handling all exception cases and trivial cases.
-
-  return $upgrade -> blog($upgrade -> new($x), $base, @r) if defined $upgrade;
-
-  # fix for bug #24969:
-  # the default base is e (Euler's number) which is not an integer
-  if (!defined $base)
-    {
-    require Math::BigFloat;
-    my $u = Math::BigFloat->blog(Math::BigFloat->new($x))->as_int();
-    # modify $x in place
-    $x->{value} = $u->{value};
-    $x->{sign} = $u->{sign};
-    return $x;
+    $r[3] = $y;                 # no push!
+
+    # cases 0 ** Y, X ** 0, X ** 1, 1 ** Y are handled by Calc or Emu
+
+    my $new_sign = '+';
+    $new_sign = $y->is_odd() ? '-' : '+' if ($x->{sign} ne '+');
+
+    # 0 ** -7 => ( 1 / (0 ** 7)) => 1 / 0 => +inf
+    return $x->binf()
+      if $y->{sign} eq '-' && $x->{sign} eq '+' && $CALC->_is_zero($x->{value});
+    # 1 ** -y => 1 / (1 ** |y|)
+    # so do test for negative $y after above's clause
+    return $x->bnan() if $y->{sign} eq '-' && !$CALC->_is_one($x->{value});
+
+    $x->{value} = $CALC->_pow($x->{value}, $y->{value});
+    $x->{sign} = $new_sign;
+    $x->{sign} = '+' if $CALC->_is_zero($y->{value});
+    $x->round(@r);
+}
+
+sub blog {
+    # Return the logarithm of the operand. If a second operand is defined, that
+    # value is used as the base, otherwise the base is assumed to be Euler's
+    # constant.
+
+    # Don't objectify the base, since an undefined base, as in $x->blog() or
+    # $x->blog(undef) signals that the base is Euler's number.
+
+    # set up parameters
+    my ($class, $x, $base, @r) = (undef, @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $base, @r) = objectify(1, @_);
     }
 
-  my ($rc,$exact) = $CALC->_log_int($x->{value},$base->{value});
-  return $x->bnan() unless defined $rc;         # not possible to take log?
-  $x->{value} = $rc;
-  $x->round(@r);
-  }
+    return $x if $x->modify('blog');
 
-sub bnok
-  {
-  # Calculate n over k (binomial coefficient or "choose" function) as integer.
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
+    # Handle all exception cases and all trivial cases. I have used Wolfram Alpha
+    # (http://www.wolframalpha.com) as the reference for these cases.
 
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
+    return $x -> bnan() if $x -> is_nan();
+
+    if (defined $base) {
+        $base = $class -> new($base) unless ref $base;
+        if ($base -> is_nan() || $base -> is_one()) {
+            return $x -> bnan();
+        } elsif ($base -> is_inf() || $base -> is_zero()) {
+            return $x -> bnan() if $x -> is_inf() || $x -> is_zero();
+            return $x -> bzero();
+        } elsif ($base -> is_negative()) {        # -inf < base < 0
+            return $x -> bzero() if $x -> is_one(); #     x = 1
+            return $x -> bone()  if $x == $base;    #     x = base
+            return $x -> bnan();                    #     otherwise
+        }
+        return $x -> bone() if $x == $base; # 0 < base && 0 < x < inf
     }
 
-  return $x if $x->modify('bnok');
-  return $x->bnan() if $x->{sign} eq 'NaN' || $y->{sign} eq 'NaN';
-  return $x->binf() if $x->{sign} eq '+inf';
+    # We now know that the base is either undefined or >= 2 and finite.
 
-  # k > n or k < 0 => 0
-  my $cmp = $x->bacmp($y);
-  return $x->bzero() if $cmp < 0 || $y->{sign} =~ /^-/;
-  # k == n => 1
-  return $x->bone(@r) if $cmp == 0;
+    return $x -> binf('+') if $x -> is_inf(); #   x = +/-inf
+    return $x -> bnan()    if $x -> is_neg(); #   -inf < x < 0
+    return $x -> bzero()   if $x -> is_one(); #   x = 1
+    return $x -> binf('-') if $x -> is_zero(); #   x = 0
 
-  if ($CALC->can('_nok'))
-    {
-    $x->{value} = $CALC->_nok($x->{value},$y->{value});
+    # At this point we are done handling all exception cases and trivial cases.
+
+    return $upgrade -> blog($upgrade -> new($x), $base, @r) if defined $upgrade;
+
+    # fix for bug #24969:
+    # the default base is e (Euler's number) which is not an integer
+    if (!defined $base) {
+        require Math::BigFloat;
+        my $u = Math::BigFloat->blog(Math::BigFloat->new($x))->as_int();
+        # modify $x in place
+        $x->{value} = $u->{value};
+        $x->{sign} = $u->{sign};
+        return $x;
     }
-  else
-    {
-    # ( 7 )       7!       1*2*3*4 * 5*6*7   5 * 6 * 7       6   7
-    # ( - ) = --------- =  --------------- = --------- = 5 * - * -
-    # ( 3 )   (7-3)! 3!    1*2*3*4 * 1*2*3   1 * 2 * 3       2   3
-
-    if (!$y->is_zero())
-      {
-      my $z = $x - $y;
-      $z->binc();
-      my $r = $z->copy(); $z->binc();
-      my $d = $self->new(2);
-      while ($z->bacmp($x) <= 0)                # f <= x ?
-        {
-        $r->bmul($z); $r->bdiv($d);
-        $z->binc(); $d->binc();
-        }
-      $x->{value} = $r->{value}; $x->{sign} = '+';
-      }
-    else { $x->bone(); }
-    }
-  $x->round(@r);
-  }
-
-sub bexp
-  {
-  # Calculate e ** $x (Euler's number to the power of X), truncated to
-  # an integer value.
-  my ($self,$x,@r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
-  return $x if $x->modify('bexp');
-
-  # inf, -inf, NaN, <0 => NaN
-  return $x->bnan() if $x->{sign} eq 'NaN';
-  return $x->bone() if $x->is_zero();
-  return $x if $x->{sign} eq '+inf';
-  return $x->bzero() if $x->{sign} eq '-inf';
-
-  my $u;
-  {
-    # run through Math::BigFloat unless told otherwise
-    require Math::BigFloat unless defined $upgrade;
-    local $upgrade = 'Math::BigFloat' unless defined $upgrade;
-    # calculate result, truncate it to integer
-    $u = $upgrade->bexp($upgrade->new($x),@r);
-  }
-
-  if (!defined $upgrade)
-    {
-    $u = $u->as_int();
-    # modify $x in place
-    $x->{value} = $u->{value};
+
+    my ($rc, $exact) = $CALC->_log_int($x->{value}, $base->{value});
+    return $x->bnan() unless defined $rc; # not possible to take log?
+    $x->{value} = $rc;
     $x->round(@r);
-    }
-  else { $x = $u; }
-  }
+}
 
-sub blcm
-  {
-  # (BINT or num_str, BINT or num_str) return BINT
-  # does not modify arguments, but returns new object
-  # Lowest Common Multiple
+sub bexp {
+    # Calculate e ** $x (Euler's number to the power of X), truncated to
+    # an integer value.
+    my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+    return $x if $x->modify('bexp');
 
-  my $y = shift; my ($x);
-  if (ref($y))
+    # inf, -inf, NaN, <0 => NaN
+    return $x->bnan() if $x->{sign} eq 'NaN';
+    return $x->bone() if $x->is_zero();
+    return $x if $x->{sign} eq '+inf';
+    return $x->bzero() if $x->{sign} eq '-inf';
+
+    my $u;
     {
-    $x = $y->copy();
+        # run through Math::BigFloat unless told otherwise
+        require Math::BigFloat unless defined $upgrade;
+        local $upgrade = 'Math::BigFloat' unless defined $upgrade;
+        # calculate result, truncate it to integer
+        $u = $upgrade->bexp($upgrade->new($x), @r);
     }
-  else
-    {
-    $x = $class->new($y);
+
+    if (defined $upgrade) {
+        $x = $u;
+    } else {
+        $u = $u->as_int();
+        # modify $x in place
+        $x->{value} = $u->{value};
+        $x->round(@r);
     }
-  my $self = ref($x);
-  while (@_)
-    {
-    my $y = shift; $y = $self->new($y) if !ref ($y);
-    $x = __lcm($x,$y);
+}
+
+sub bnok {
+    # Calculate n over k (binomial coefficient or "choose" function) as integer.
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
     }
-  $x;
-  }
 
-sub bgcd
-  {
-  # (BINT or num_str, BINT or num_str) return BINT
-  # does not modify arguments, but returns new object
-  # GCD -- Euclid's algorithm, variant C (Knuth Vol 3, pg 341 ff)
+    return $x if $x->modify('bnok');
+    return $x->bnan() if $x->{sign} eq 'NaN' || $y->{sign} eq 'NaN';
+    return $x->binf() if $x->{sign} eq '+inf';
 
-  my $y = shift;
-  $y = $class->new($y) if !ref($y);
-  my $self = ref($y);
-  my $x = $y->copy()->babs();                   # keep arguments
-  return $x->bnan() if $x->{sign} !~ /^[+-]$/;  # x NaN?
+    # k > n or k < 0 => 0
+    my $cmp = $x->bacmp($y);
+    return $x->bzero() if $cmp < 0 || substr($y->{sign}, 0, 1) eq "-";
 
-  while (@_)
-    {
-    $y = shift; $y = $self->new($y) if !ref($y);
-    return $x->bnan() if $y->{sign} !~ /^[+-]$/;        # y NaN?
-    $x->{value} = $CALC->_gcd($x->{value},$y->{value});
-    last if $CALC->_is_one($x->{value});
-    }
-  $x;
-  }
+    if ($CALC->can('_nok')) {
+        $x->{value} = $CALC->_nok($x->{value}, $y->{value});
+    } else {
+        # ( 7 )       7!       1*2*3*4 * 5*6*7   5 * 6 * 7       6   7
+        # ( - ) = --------- =  --------------- = --------- = 5 * - * -
+        # ( 3 )   (7-3)! 3!    1*2*3*4 * 1*2*3   1 * 2 * 3       2   3
 
-sub bnot
-  {
-  # (num_str or BINT) return BINT
-  # represent ~x as twos-complement number
-  # we don't need $self, so undef instead of ref($_[0]) make it slightly faster
-  my ($self,$x,$a,$p,$r) = ref($_[0]) ? (undef,@_) : objectify(1,@_);
+        my $n = $x -> {value};
+        my $k = $y -> {value};
 
-  return $x if $x->modify('bnot');
-  $x->binc()->bneg();                   # binc already does round
-  }
+        # If k > n/2, or, equivalently, 2*k > n, compute nok(n, k) as
+        # nok(n, n-k) to minimize the number if iterations in the loop.
 
-##############################################################################
-# is_foo test routines
-# we don't need $self, so undef instead of ref($_[0]) make it slightly faster
+        {
+            my $twok = $CALC->_mul($CALC->_two(), $CALC->_copy($k));
+            if ($CALC->_acmp($twok, $n) > 0) {
+                $k = $CALC->_sub($CALC->_copy($n), $k);
+            }
+        }
 
-sub is_zero
-  {
-  # return true if arg (BINT or num_str) is zero (array '+', '0')
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+        if ($CALC->_is_zero($k)) {
+            $n = $CALC->_one();
+        } else {
 
-  return 0 if $x->{sign} !~ /^\+$/;                     # -, NaN & +-inf aren't
-  $CALC->_is_zero($x->{value});
-  }
+            # Make a copy of the original n, since we'll be modifying n
+            # in-place.
 
-sub is_nan
-  {
-  # return true if arg (BINT or num_str) is NaN
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+            my $n_orig = $CALC->_copy($n);
 
-  $x->{sign} eq $nan ? 1 : 0;
-  }
+            $CALC->_sub($n, $k);
+            $CALC->_inc($n);
 
-sub is_inf
-  {
-  # return true if arg (BINT or num_str) is +-inf
-  my ($self,$x,$sign) = ref($_[0]) ? (undef,@_) : objectify(1,@_);
+            my $f = $CALC->_copy($n);
+            $CALC->_inc($f);
 
-  if (defined $sign)
-    {
-    $sign = '[+-]inf' if $sign eq '';   # +- doesn't matter, only that's inf
-    $sign = "[$1]inf" if $sign =~ /^([+-])(inf)?$/;     # extract '+' or '-'
-    return $x->{sign} =~ /^$sign$/ ? 1 : 0;
+            my $d = $CALC->_two();
+
+            # while f <= n (the original n, that is) ...
+
+            while ($CALC->_acmp($f, $n_orig) <= 0) {
+                $CALC->_mul($n, $f);
+                $CALC->_div($n, $d);
+                $CALC->_inc($f);
+                $CALC->_inc($d);
+            }
+        }
+
+        $x -> {value} = $n;
     }
-  $x->{sign} =~ /^[+-]inf$/ ? 1 : 0;            # only +-inf is infinity
-  }
 
-sub is_one
-  {
-  # return true if arg (BINT or num_str) is +1, or -1 if sign is given
-  my ($self,$x,$sign) = ref($_[0]) ? (undef,@_) : objectify(1,@_);
+    $x->round(@r);
+}
+
+sub bsin {
+    # Calculate sinus(x) to N digits. Unless upgrading is in effect, returns the
+    # result truncated to an integer.
+    my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
 
-  $sign = '+' if !defined $sign || $sign ne '-';
+    return $x if $x->modify('bsin');
 
-  return 0 if $x->{sign} ne $sign;      # -1 != +1, NaN, +-inf aren't either
-  $CALC->_is_one($x->{value});
-  }
+    return $x->bnan() if $x->{sign} !~ /^[+-]\z/; # -inf +inf or NaN => NaN
 
-sub is_odd
-  {
-  # return true when arg (BINT or num_str) is odd, false for even
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+    return $upgrade->new($x)->bsin(@r) if defined $upgrade;
 
-  return 0 if $x->{sign} !~ /^[+-]$/;                   # NaN & +-inf aren't
-  $CALC->_is_odd($x->{value});
-  }
+    require Math::BigFloat;
+    # calculate the result and truncate it to integer
+    my $t = Math::BigFloat->new($x)->bsin(@r)->as_int();
 
-sub is_even
-  {
-  # return true when arg (BINT or num_str) is even, false for odd
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+    $x->bone() if $t->is_one();
+    $x->bzero() if $t->is_zero();
+    $x->round(@r);
+}
 
-  return 0 if $x->{sign} !~ /^[+-]$/;                   # NaN & +-inf aren't
-  $CALC->_is_even($x->{value});
-  }
+sub bcos {
+    # Calculate cosinus(x) to N digits. Unless upgrading is in effect, returns the
+    # result truncated to an integer.
+    my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
 
-sub is_positive
-  {
-  # return true when arg (BINT or num_str) is positive (> 0)
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+    return $x if $x->modify('bcos');
 
-  return 1 if $x->{sign} eq '+inf';                     # +inf is positive
+    return $x->bnan() if $x->{sign} !~ /^[+-]\z/; # -inf +inf or NaN => NaN
 
-  # 0+ is neither positive nor negative
-  ($x->{sign} eq '+' && !$x->is_zero()) ? 1 : 0;
-  }
+    return $upgrade->new($x)->bcos(@r) if defined $upgrade;
 
-sub is_negative
-  {
-  # return true when arg (BINT or num_str) is negative (< 0)
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+    require Math::BigFloat;
+    # calculate the result and truncate it to integer
+    my $t = Math::BigFloat->new($x)->bcos(@r)->as_int();
 
-  $x->{sign} =~ /^-/ ? 1 : 0;           # -inf is negative, but NaN is not
-  }
+    $x->bone() if $t->is_one();
+    $x->bzero() if $t->is_zero();
+    $x->round(@r);
+}
 
-sub is_int
-  {
-  # return true when arg (BINT or num_str) is an integer
-  # always true for BigInt, but different for BigFloats
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+sub batan {
+    # Calculate arcus tangens of x to N digits. Unless upgrading is in effect, returns the
+    # result truncated to an integer.
+    my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
 
-  $x->{sign} =~ /^[+-]$/ ? 1 : 0;               # inf/-inf/NaN aren't
-  }
+    return $x if $x->modify('batan');
 
-###############################################################################
+    return $x->bnan() if $x->{sign} !~ /^[+-]\z/; # -inf +inf or NaN => NaN
 
-sub bmul
-  {
-  # multiply the first number by the second number
-  # (BINT or num_str, BINT or num_str) return BINT
+    return $upgrade->new($x)->batan(@r) if defined $upgrade;
 
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
-    }
+    # calculate the result and truncate it to integer
+    my $t = Math::BigFloat->new($x)->batan(@r);
 
-  return $x if $x->modify('bmul');
+    $x->{value} = $CALC->_new($x->as_int()->bstr());
+    $x->round(@r);
+}
 
-  return $x->bnan() if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+sub batan2 {
+    # calculate arcus tangens of ($y/$x)
 
-  # inf handling
-  if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/))
-    {
-    return $x->bnan() if $x->is_zero() || $y->is_zero();
-    # result will always be +-inf:
-    # +inf * +/+inf => +inf, -inf * -/-inf => +inf
-    # +inf * -/-inf => -inf, -inf * +/+inf => -inf
-    return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
-    return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
-    return $x->binf('-');
+    # set up parameters
+    my ($class, $y, $x, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $y, $x, @r) = objectify(2, @_);
+    }
+
+    return $y if $y->modify('batan2');
+
+    return $y->bnan() if ($y->{sign} eq $nan) || ($x->{sign} eq $nan);
+
+    # Y    X
+    # != 0 -inf result is +- pi
+    if ($x->is_inf() || $y->is_inf()) {
+        # upgrade to Math::BigFloat etc.
+        return $upgrade->new($y)->batan2($upgrade->new($x), @r) if defined $upgrade;
+        if ($y->is_inf()) {
+            if ($x->{sign} eq '-inf') {
+                # calculate 3 pi/4 => 2.3.. => 2
+                $y->bone(substr($y->{sign}, 0, 1));
+                $y->bmul($class->new(2));
+            } elsif ($x->{sign} eq '+inf') {
+                # calculate pi/4 => 0.7 => 0
+                $y->bzero();
+            } else {
+                # calculate pi/2 => 1.5 => 1
+                $y->bone(substr($y->{sign}, 0, 1));
+            }
+        } else {
+            if ($x->{sign} eq '+inf') {
+                # calculate pi/4 => 0.7 => 0
+                $y->bzero();
+            } else {
+                # PI => 3.1415.. => 3
+                $y->bone(substr($y->{sign}, 0, 1));
+                $y->bmul($class->new(3));
+            }
+        }
+        return $y;
     }
 
-  return $upgrade->bmul($x,$upgrade->new($y),@r)
-   if defined $upgrade && !$y->isa($self);
+    return $upgrade->new($y)->batan2($upgrade->new($x), @r) if defined $upgrade;
+
+    require Math::BigFloat;
+    my $r = Math::BigFloat->new($y)
+      ->batan2(Math::BigFloat->new($x), @r)
+        ->as_int();
+
+    $x->{value} = $r->{value};
+    $x->{sign} = $r->{sign};
 
-  $r[3] = $y;                           # no push here
+    $x;
+}
+
+sub bsqrt {
+    # calculate square root of $x
+    my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+
+    return $x if $x->modify('bsqrt');
+
+    return $x->bnan() if $x->{sign} !~ /^\+/; # -x or -inf or NaN => NaN
+    return $x if $x->{sign} eq '+inf';        # sqrt(+inf) == inf
 
-  $x->{sign} = $x->{sign} eq $y->{sign} ? '+' : '-'; # +1 * +1 or -1 * -1 => +
+    return $upgrade->bsqrt($x, @r) if defined $upgrade;
 
-  $x->{value} = $CALC->_mul($x->{value},$y->{value});   # do actual math
-  $x->{sign} = '+' if $CALC->_is_zero($x->{value});     # no -0
+    $x->{value} = $CALC->_sqrt($x->{value});
+    $x->round(@r);
+}
 
-  $x->round(@r);
-  }
+sub broot {
+    # calculate $y'th root of $x
 
-sub bmuladd
-  {
-  # multiply two numbers and then add the third to the result
-  # (BINT or num_str, BINT or num_str, BINT or num_str) return BINT
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
 
-  # set up parameters
-  my ($self,$x,$y,$z,@r) = objectify(3,@_);
+    $y = $class->new(2) unless defined $y;
+
+    # objectify is costly, so avoid it
+    if ((!ref($x)) || (ref($x) ne ref($y))) {
+        ($class, $x, $y, @r) = objectify(2, $class || $class, @_);
+    }
 
-  return $x if $x->modify('bmuladd');
+    return $x if $x->modify('broot');
 
-  return $x->bnan() if  ($x->{sign} eq $nan) ||
-                        ($y->{sign} eq $nan) ||
-                        ($z->{sign} eq $nan);
+    # NaN handling: $x ** 1/0, x or y NaN, or y inf/-inf or y == 0
+    return $x->bnan() if $x->{sign} !~ /^\+/ || $y->is_zero() ||
+      $y->{sign} !~ /^\+$/;
 
-  # inf handling of x and y
-  if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/))
-    {
-    return $x->bnan() if $x->is_zero() || $y->is_zero();
-    # result will always be +-inf:
-    # +inf * +/+inf => +inf, -inf * -/-inf => +inf
-    # +inf * -/-inf => -inf, -inf * +/+inf => -inf
-    return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
-    return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
-    return $x->binf('-');
-    }
-  # inf handling x*y and z
-  if (($z->{sign} =~ /^[+-]inf$/))
-    {
-    # something +-inf => +-inf
-    $x->{sign} = $z->{sign}, return $x if $z->{sign} =~ /^[+-]inf$/;
-    }
+    return $x->round(@r)
+      if $x->is_zero() || $x->is_one() || $x->is_inf() || $y->is_one();
 
-  return $upgrade->bmuladd($x,$upgrade->new($y),$upgrade->new($z),@r)
-   if defined $upgrade && (!$y->isa($self) || !$z->isa($self) || !$x->isa($self));
+    return $upgrade->new($x)->broot($upgrade->new($y), @r) if defined $upgrade;
 
-  # TODO: what if $y and $z have A or P set?
-  $r[3] = $z;                           # no push here
+    $x->{value} = $CALC->_root($x->{value}, $y->{value});
+    $x->round(@r);
+}
 
-  $x->{sign} = $x->{sign} eq $y->{sign} ? '+' : '-'; # +1 * +1 or -1 * -1 => +
+sub bfac {
+    # (BINT or num_str, BINT or num_str) return BINT
+    # compute factorial number from $x, modify $x in place
+    my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
 
-  $x->{value} = $CALC->_mul($x->{value},$y->{value});   # do actual math
-  $x->{sign} = '+' if $CALC->_is_zero($x->{value});     # no -0
+    return $x if $x->modify('bfac') || $x->{sign} eq '+inf'; # inf => inf
+    return $x->bnan() if $x->{sign} ne '+'; # NaN, <0 etc => NaN
 
-  my ($sx, $sz) = ( $x->{sign}, $z->{sign} );           # get signs
+    $x->{value} = $CALC->_fac($x->{value});
+    $x->round(@r);
+}
 
-  if ($sx eq $sz)
-    {
-    $x->{value} = $CALC->_add($x->{value},$z->{value}); # same sign, abs add
-    }
-  else
-    {
-    my $a = $CALC->_acmp ($z->{value},$x->{value});     # absolute compare
-    if ($a > 0)
-      {
-      $x->{value} = $CALC->_sub($z->{value},$x->{value},1); # abs sub w/ swap
-      $x->{sign} = $sz;
-      }
-    elsif ($a == 0)
-      {
-      # speedup, if equal, set result to 0
-      $x->{value} = $CALC->_zero();
-      $x->{sign} = '+';
-      }
-    else # a < 0
-      {
-      $x->{value} = $CALC->_sub($x->{value}, $z->{value}); # abs sub
-      }
-    }
-  $x->round(@r);
-  }
-
-sub bdiv
-  {
-
-    # This does floored division, where the quotient is floored toward negative
-    # infinity and the remainder has the same sign as the divisor.
+sub blsft {
+    # (BINT or num_str, BINT or num_str) return BINT
+    # compute x << y, base n, y >= 0
 
-    # Set up parameters.
-    my ($self,$x,$y,@r) = (ref($_[0]),@_);
+    # set up parameters
+    my ($class, $x, $y, $b, @r) = (ref($_[0]), @_);
 
-    # objectify() is costly, so avoid it if we can.
+    # objectify is costly, so avoid it
     if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
-        ($self,$x,$y,@r) = objectify(2,@_);
+        ($class, $x, $y, $b, @r) = objectify(2, @_);
     }
 
-    return $x if $x->modify('bdiv');
+    return $x if $x -> modify('blsft');
+    return $x -> bnan() if ($x -> {sign} !~ /^[+-]$/ ||
+                            $y -> {sign} !~ /^[+-]$/);
+    return $x -> round(@r) if $y -> is_zero();
 
-    my $wantarray = wantarray;          # call only once
+    $b = 2 if !defined $b;
+    return $x -> bnan() if $b <= 0 || $y -> {sign} eq '-';
 
-    # At least one argument is NaN. Return NaN for both quotient and the
-    # modulo/remainder.
+    $x -> {value} = $CALC -> _lsft($x -> {value}, $y -> {value}, $b);
+    $x -> round(@r);
+}
 
-    if ($x -> is_nan() || $y -> is_nan()) {
-        return $wantarray ? ($x -> bnan(), $self -> bnan()) : $x -> bnan();
-    }
+sub brsft {
+    # (BINT or num_str, BINT or num_str) return BINT
+    # compute x >> y, base n, y >= 0
 
-    # Divide by zero and modulo zero.
-    #
-    # Division: Use the common convention that x / 0 is inf with the same sign
-    # as x, except when x = 0, where we return NaN. This is also what earlier
-    # versions did.
-    #
-    # Modulo: In modular arithmetic, the congruence relation z = x (mod y)
-    # means that there is some integer k such that z - x = k y. If y = 0, we
-    # get z - x = 0 or z = x. This is also what earlier versions did, except
-    # that 0 % 0 returned NaN.
-    #
-    #     inf / 0 =  inf                     inf % 0 =  inf
-    #       5 / 0 =  inf                       5 % 0 =    5
-    #       0 / 0 =  NaN                       0 % 0 =    0 (before: NaN)
-    #      -5 / 0 = -inf                      -5 % 0 =   -5
-    #    -inf / 0 = -inf                    -inf % 0 = -inf
+    # set up parameters
+    my ($class, $x, $y, $b, @r) = (ref($_[0]), @_);
 
-    if ($y -> is_zero()) {
-        my ($quo, $rem);
-        if ($wantarray) {
-                $rem = $x -> copy();
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, $b, @r) = objectify(2, @_);
+    }
+
+    return $x if $x -> modify('brsft');
+    return $x -> bnan() if ($x -> {sign} !~ /^[+-]$/ || $y -> {sign} !~ /^[+-]$/);
+    return $x -> round(@r) if $y -> is_zero();
+    return $x -> bzero(@r) if $x -> is_zero(); # 0 => 0
+
+    $b = 2 if !defined $b;
+    return $x -> bnan() if $b <= 0 || $y -> {sign} eq '-';
+
+    # this only works for negative numbers when shifting in base 2
+    if (($x -> {sign} eq '-') && ($b == 2)) {
+        return $x -> round(@r) if $x -> is_one('-'); # -1 => -1
+        if (!$y -> is_one()) {
+            # although this is O(N*N) in calc (as_bin!) it is O(N) in Pari et
+            # al but perhaps there is a better emulation for two's complement
+            # shift...
+            # if $y != 1, we must simulate it by doing:
+            # convert to bin, flip all bits, shift, and be done
+            $x -> binc();           # -3 => -2
+            my $bin = $x -> as_bin();
+            $bin =~ s/^-0b//;       # strip '-0b' prefix
+            $bin =~ tr/10/01/;      # flip bits
+            # now shift
+            if ($y >= CORE::length($bin)) {
+                $bin = '0';         # shifting to far right creates -1
+                                    # 0, because later increment makes
+                                    # that 1, attached '-' makes it '-1'
+                                    # because -1 >> x == -1 !
+            } else {
+                $bin =~ s/.{$y}$//; # cut off at the right side
+                $bin = '1' . $bin;  # extend left side by one dummy '1'
+                $bin =~ tr/10/01/;  # flip bits back
             }
-        if ($x -> is_zero()) {
-            $quo = $x -> bnan();
-        } else {
-            $quo = $x -> binf($x -> {sign});
+            my $res = $class -> new('0b' . $bin); # add prefix and convert back
+            $res -> binc();                       # remember to increment
+            $x -> {value} = $res -> {value};      # take over value
+            return $x -> round(@r); # we are done now, magic, isn't?
         }
-        return $wantarray ? ($quo, $rem) : $quo;
-    }
-
-    # Numerator (dividend) is +/-inf, and denominator is finite and non-zero.
-    # The divide by zero cases are covered above. In all of the cases listed
-    # below we return the same as core Perl.
-    #
-    #     inf / -inf =  NaN                  inf % -inf =  NaN
-    #     inf /   -5 = -inf                  inf %   -5 =  NaN (before: 0)
-    #     inf /    5 =  inf                  inf %    5 =  NaN (before: 0)
-    #     inf /  inf =  NaN                  inf %  inf =  NaN
-    #
-    #    -inf / -inf =  NaN                 -inf % -inf =  NaN
-    #    -inf /   -5 =  inf                 -inf %   -5 =  NaN (before: 0)
-    #    -inf /    5 = -inf                 -inf %    5 =  NaN (before: 0)
-    #    -inf /  inf =  NaN                 -inf %  inf =  NaN
 
-    if ($x -> is_inf()) {
-        my ($quo, $rem);
-        $rem = $self -> bnan() if $wantarray;
-        if ($y -> is_inf()) {
-            $quo = $x -> bnan();
-        } else {
-            my $sign = $x -> bcmp(0) == $y -> bcmp(0) ? '+' : '-';
-            $quo = $x -> binf($sign);
-      }
-        return $wantarray ? ($quo, $rem) : $quo;
+        # x < 0, n == 2, y == 1
+        $x -> bdec();           # n == 2, but $y == 1: this fixes it
     }
 
-    # Denominator (divisor) is +/-inf. The cases when the numerator is +/-inf
-    # are covered above. In the modulo cases (in the right column) we return
-    # the same as core Perl, which does floored division, so for consistency we
-    # also do floored division in the division cases (in the left column).
-    #
-    #      -5 /  inf =   -1 (before: 0)       -5 %  inf =  inf (before: -5)
-    #       0 /  inf =    0                    0 %  inf =    0
-    #       5 /  inf =    0                    5 %  inf =    5
-    #
-    #      -5 / -inf =    0                   -5 % -inf =   -5
-    #       0 / -inf =    0                    0 % -inf =    0
-    #       5 / -inf =   -1 (before: 0)        5 % -inf = -inf (before: 5)
-
-    if ($y -> is_inf()) {
-        my ($quo, $rem);
-        if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
-            $rem = $x -> copy() if $wantarray;
-            $quo = $x -> bzero();
-        } else {
-            $rem = $self -> binf($y -> {sign}) if $wantarray;
-            $quo = $x -> bone('-');
-        }
-        return $wantarray ? ($quo, $rem) : $quo;
-  }
-
-  # At this point, both the numerator and denominator are finite numbers, and
-  # the denominator (divisor) is non-zero.
-
-  return $upgrade->bdiv($upgrade->new($x),$upgrade->new($y),@r)
-   if defined $upgrade;
+    $x -> {value} = $CALC -> _rsft($x -> {value}, $y -> {value}, $b);
+    $x -> round(@r);
+}
 
-  $r[3] = $y;                                   # no push!
+###############################################################################
+# Bitwise methods
+###############################################################################
 
-    # Inialize remainder.
+sub band {
+    #(BINT or num_str, BINT or num_str) return BINT
+    # compute x & y
 
-    my $rem = $self->bzero();
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
 
-    # Are both operands the same object, i.e., like $x -> bdiv($x)?
-    # If so, flipping the sign of $y also flips the sign of $x.
+    return $x if $x->modify('band');
 
-    my $xsign = $x->{sign};
-    my $ysign = $y->{sign};
+    $r[3] = $y;                 # no push!
 
-    $y->{sign} =~ tr/+-/-+/;            # Flip the sign of $y, and see ...
-    my $same = $xsign ne $x->{sign};    # ... if that changed the sign of $x.
-    $y->{sign} = $ysign;                # Re-insert the original sign.
+    return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
 
-    if ($same) {
-        $x -> bone();
-    } else {
-    ($x->{value},$rem->{value}) = $CALC->_div($x->{value},$y->{value});
+    my $sx = $x->{sign} eq '+' ? 1 : -1;
+    my $sy = $y->{sign} eq '+' ? 1 : -1;
 
-        if ($CALC -> _is_zero($rem->{value})) {
-            if ($xsign eq $ysign || $CALC -> _is_zero($x->{value})) {
-                $x->{sign} = '+';
-            } else {
-                $x->{sign} = '-';
-            }
-        } else {
-            if ($xsign eq $ysign) {
-                $x->{sign} = '+';
-            } else {
-                if ($xsign eq '+') {
-                    $x -> badd(1);
-                } else {
-                    $x -> bsub(1);
-                }
-                $x->{sign} = '-';
-            }
-        }
+    if ($sx == 1 && $sy == 1) {
+        $x->{value} = $CALC->_and($x->{value}, $y->{value});
+        return $x->round(@r);
     }
 
-    $x->round(@r);
-
-    if ($wantarray) {
-        unless ($CALC -> _is_zero($rem->{value})) {
-            if ($xsign ne $ysign) {
-                $rem = $y -> copy() -> babs() -> bsub($rem);
-      }
-            $rem->{sign} = $ysign;
-      }
-        $rem->{_a} = $x->{_a};
-        $rem->{_p} = $x->{_p};
-    $rem->round(@r);
-    return ($x,$rem);
+    if ($CAN{signed_and}) {
+        $x->{value} = $CALC->_signed_and($x->{value}, $y->{value}, $sx, $sy);
+        return $x->round(@r);
     }
 
-    return $x;
-  }
-
-###############################################################################
-# modulus functions
+    require $EMU_LIB;
+    __emu_band($class, $x, $y, $sx, $sy, @r);
+}
 
-sub bmod
-  {
+sub bior {
+    #(BINT or num_str, BINT or num_str) return BINT
+    # compute x | y
 
-    # This is the remainder after floored division, where the quotient is
-    # floored toward negative infinity and the remainder has the same sign as
-    # the divisor.
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
 
-    # Set up parameters.
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
+    return $x if $x->modify('bior');
+    $r[3] = $y;                 # no push!
 
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
-    }
+    return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
 
-  return $x if $x->modify('bmod');
-  $r[3] = $y;                                   # no push!
+    my $sx = $x->{sign} eq '+' ? 1 : -1;
+    my $sy = $y->{sign} eq '+' ? 1 : -1;
 
-    # At least one argument is NaN.
+    # the sign of X follows the sign of X, e.g. sign of Y irrelevant for bior()
 
-    if ($x -> is_nan() || $y -> is_nan()) {
-        return $x -> bnan();
+    # don't use lib for negative values
+    if ($sx == 1 && $sy == 1) {
+        $x->{value} = $CALC->_or($x->{value}, $y->{value});
+        return $x->round(@r);
     }
 
-    # Modulo zero. See documentation for bdiv().
+    # if lib can do negative values, let it handle this
+    if ($CAN{signed_or}) {
+        $x->{value} = $CALC->_signed_or($x->{value}, $y->{value}, $sx, $sy);
+        return $x->round(@r);
+    }
 
-    if ($y -> is_zero()) {
-            return $x;
-        }
+    require $EMU_LIB;
+    __emu_bior($class, $x, $y, $sx, $sy, @r);
+}
 
-    # Numerator (dividend) is +/-inf.
+sub bxor {
+    #(BINT or num_str, BINT or num_str) return BINT
+    # compute x ^ y
 
-    if ($x -> is_inf()) {
-        return $x -> bnan();
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
     }
 
-    # Denominator (divisor) is +/-inf.
+    return $x if $x->modify('bxor');
+    $r[3] = $y;                 # no push!
 
-    if ($y -> is_inf()) {
-        if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
-            return $x;
-        } else {
-            return $x -> binf($y -> sign());
-        }
-    }
+    return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
 
-    # Calc new sign and in case $y == +/- 1, return $x.
+    my $sx = $x->{sign} eq '+' ? 1 : -1;
+    my $sy = $y->{sign} eq '+' ? 1 : -1;
 
-  $x->{value} = $CALC->_mod($x->{value},$y->{value});
-  if ($CALC -> _is_zero($x->{value}))
-    {
-        $x->{sign} = '+';       # do not leave -0
+    # don't use lib for negative values
+    if ($sx == 1 && $sy == 1) {
+        $x->{value} = $CALC->_xor($x->{value}, $y->{value});
+        return $x->round(@r);
     }
-  else
-    {
-    $x->{value} = $CALC->_sub($y->{value},$x->{value},1)        # $y-$x
-      if ($x->{sign} ne $y->{sign});
-    $x->{sign} = $y->{sign};
-    }
-
-  $x->round(@r);
-  }
-
-sub bmodinv
-  {
-  # Return modular multiplicative inverse:
-  #
-  #   z is the modular inverse of x (mod y) if and only if
-  #
-  #       x*z ≡ 1  (mod y)
-  #
-  # If the modulus y is larger than one, x and z are relative primes (i.e.,
-  # their greatest common divisor is one).
-  #
-  # If no modular multiplicative inverse exists, NaN is returned.
-
-  # set up parameters
-  my ($self,$x,$y,@r) = (undef,@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
+
+    # if lib can do negative values, let it handle this
+    if ($CAN{signed_xor}) {
+        $x->{value} = $CALC->_signed_xor($x->{value}, $y->{value}, $sx, $sy);
+        return $x->round(@r);
     }
 
-  return $x if $x->modify('bmodinv');
+    require $EMU_LIB;
+    __emu_bxor($class, $x, $y, $sx, $sy, @r);
+}
 
-  # Return NaN if one or both arguments is +inf, -inf, or nan.
+sub bnot {
+    # (num_str or BINT) return BINT
+    # represent ~x as twos-complement number
+    # we don't need $class, so undef instead of ref($_[0]) make it slightly faster
+    my ($class, $x, $a, $p, $r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
 
-  return $x->bnan() if ($y->{sign} !~ /^[+-]$/ ||
-                        $x->{sign} !~ /^[+-]$/);
+    return $x if $x->modify('bnot');
+    $x->binc()->bneg();         # binc already does round
+}
 
-  # Return NaN if $y is zero; 1 % 0 makes no sense.
+###############################################################################
+# Rounding methods
+###############################################################################
 
-  return $x->bnan() if $y->is_zero();
+sub round {
+    # Round $self according to given parameters, or given second argument's
+    # parameters or global defaults
 
-  # Return 0 in the trivial case. $x % 1 or $x % -1 is zero for all finite
-  # integers $x.
+    # for speed reasons, _find_round_parameters is embedded here:
 
-  return $x->bzero() if ($y->is_one() ||
-                         $y->is_one('-'));
+    my ($self, $a, $p, $r, @args) = @_;
+    # $a accuracy, if given by caller
+    # $p precision, if given by caller
+    # $r round_mode, if given by caller
+    # @args all 'other' arguments (0 for unary, 1 for binary ops)
 
-  # Return NaN if $x = 0, or $x modulo $y is zero. The only valid case when
-  # $x = 0 is when $y = 1 or $y = -1, but that was covered above.
-  #
-  # Note that computing $x modulo $y here affects the value we'll feed to
-  # $CALC->_modinv() below when $x and $y have opposite signs. E.g., if $x =
-  # 5 and $y = 7, those two values are fed to _modinv(), but if $x = -5 and
-  # $y = 7, the values fed to _modinv() are $x = 2 (= -5 % 7) and $y = 7.
-  # The value if $x is affected only when $x and $y have opposite signs.
+    my $class = ref($self);       # find out class of argument(s)
+    no strict 'refs';
 
-  $x->bmod($y);
-  return $x->bnan() if $x->is_zero();
+    # now pick $a or $p, but only if we have got "arguments"
+    if (!defined $a) {
+        foreach ($self, @args) {
+            # take the defined one, or if both defined, the one that is smaller
+            $a = $_->{_a} if (defined $_->{_a}) && (!defined $a || $_->{_a} < $a);
+        }
+    }
+    if (!defined $p) {
+        # even if $a is defined, take $p, to signal error for both defined
+        foreach ($self, @args) {
+            # take the defined one, or if both defined, the one that is bigger
+            # -2 > -3, and 3 > 2
+            $p = $_->{_p} if (defined $_->{_p}) && (!defined $p || $_->{_p} > $p);
+        }
+    }
 
-  # Compute the modular multiplicative inverse of the absolute values. We'll
-  # correct for the signs of $x and $y later. Return NaN if no GCD is found.
+    # if still none defined, use globals (#2)
+    $a = ${"$class\::accuracy"}  unless defined $a;
+    $p = ${"$class\::precision"} unless defined $p;
 
-  ($x->{value}, $x->{sign}) = $CALC->_modinv($x->{value}, $y->{value});
-  return $x->bnan() if !defined $x->{value};
+    # A == 0 is useless, so undef it to signal no rounding
+    $a = undef if defined $a && $a == 0;
 
-  # Library inconsistency workaround: _modinv() in Math::BigInt::GMP versions
-  # <= 1.32 return undef rather than a "+" for the sign.
+    # no rounding today?
+    return $self unless defined $a || defined $p; # early out
 
-  $x->{sign} = '+' unless defined $x->{sign};
+    # set A and set P is an fatal error
+    return $self->bnan() if defined $a && defined $p;
 
-  # When one or both arguments are negative, we have the following
-  # relations.  If x and y are positive:
-  #
-  #   modinv(-x, -y) = -modinv(x, y)
-  #   modinv(-x,  y) = y - modinv(x, y)  = -modinv(x, y) (mod y)
-  #   modinv( x, -y) = modinv(x, y) - y  =  modinv(x, y) (mod -y)
+    $r = ${"$class\::round_mode"} unless defined $r;
+    if ($r !~ /^(even|odd|[+-]inf|zero|trunc|common)$/) {
+        Carp::croak("Unknown round mode '$r'");
+    }
 
-  # We must swap the sign of the result if the original $x is negative.
-  # However, we must compensate for ignoring the signs when computing the
-  # inverse modulo. The net effect is that we must swap the sign of the
-  # result if $y is negative.
+    # now round, by calling either bround or bfround:
+    if (defined $a) {
+        $self->bround(int($a), $r) if !defined $self->{_a} || $self->{_a} >= $a;
+    } else {                  # both can't be undefined due to early out
+        $self->bfround(int($p), $r) if !defined $self->{_p} || $self->{_p} <= $p;
+    }
 
-  $x -> bneg() if $y->{sign} eq '-';
+    # bround() or bfround() already called bnorm() if nec.
+    $self;
+}
 
-  # Compute $x modulo $y again after correcting the sign.
+sub bround {
+    # accuracy: +$n preserve $n digits from left,
+    #           -$n preserve $n digits from right (f.i. for 0.1234 style in MBF)
+    # no-op for $n == 0
+    # and overwrite the rest with 0's, return normalized number
+    # do not return $x->bnorm(), but $x
+
+    my $x = shift;
+    $x = $class->new($x) unless ref $x;
+    my ($scale, $mode) = $x->_scale_a(@_);
+    return $x if !defined $scale || $x->modify('bround'); # no-op
+
+    if ($x->is_zero() || $scale == 0) {
+        $x->{_a} = $scale if !defined $x->{_a} || $x->{_a} > $scale; # 3 > 2
+        return $x;
+    }
+    return $x if $x->{sign} !~ /^[+-]$/; # inf, NaN
+
+    # we have fewer digits than we want to scale to
+    my $len = $x->length();
+    # convert $scale to a scalar in case it is an object (put's a limit on the
+    # number length, but this would already limited by memory constraints), makes
+    # it faster
+    $scale = $scale->numify() if ref ($scale);
+
+    # scale < 0, but > -len (not >=!)
+    if (($scale < 0 && $scale < -$len-1) || ($scale >= $len)) {
+        $x->{_a} = $scale if !defined $x->{_a} || $x->{_a} > $scale; # 3 > 2
+        return $x;
+    }
+
+    # count of 0's to pad, from left (+) or right (-): 9 - +6 => 3, or |-6| => 6
+    my ($pad, $digit_round, $digit_after);
+    $pad = $len - $scale;
+    $pad = abs($scale-1) if $scale < 0;
+
+    # do not use digit(), it is very costly for binary => decimal
+    # getting the entire string is also costly, but we need to do it only once
+    my $xs = $CALC->_str($x->{value});
+    my $pl = -$pad-1;
+
+    # pad:   123: 0 => -1, at 1 => -2, at 2 => -3, at 3 => -4
+    # pad+1: 123: 0 => 0, at 1 => -1, at 2 => -2, at 3 => -3
+    $digit_round = '0';
+    $digit_round = substr($xs, $pl, 1) if $pad <= $len;
+    $pl++;
+    $pl ++ if $pad >= $len;
+    $digit_after = '0';
+    $digit_after = substr($xs, $pl, 1) if $pad > 0;
+
+    # in case of 01234 we round down, for 6789 up, and only in case 5 we look
+    # closer at the remaining digits of the original $x, remember decision
+    my $round_up = 1;           # default round up
+    $round_up -- if
+      ($mode eq 'trunc')                      ||   # trunc by round down
+        ($digit_after =~ /[01234]/)           ||   # round down anyway,
+          # 6789 => round up
+          ($digit_after eq '5')               &&   # not 5000...0000
+            ($x->_scan_for_nonzero($pad, $xs, $len) == 0)   &&
+              (
+               ($mode eq 'even') && ($digit_round =~ /[24680]/) ||
+               ($mode eq 'odd')  && ($digit_round =~ /[13579]/) ||
+               ($mode eq '+inf') && ($x->{sign} eq '-')         ||
+               ($mode eq '-inf') && ($x->{sign} eq '+')         ||
+               ($mode eq 'zero') # round down if zero, sign adjusted below
+              );
+    my $put_back = 0;           # not yet modified
+
+    if (($pad > 0) && ($pad <= $len)) {
+        substr($xs, -$pad, $pad) = '0' x $pad; # replace with '00...'
+        $put_back = 1;                         # need to put back
+    } elsif ($pad > $len) {
+        $x->bzero();            # round to '0'
+    }
+
+    if ($round_up) {            # what gave test above?
+        $put_back = 1;                               # need to put back
+        $pad = $len, $xs = '0' x $pad if $scale < 0; # tlr: whack 0.51=>1.0
+
+        # we modify directly the string variant instead of creating a number and
+        # adding it, since that is faster (we already have the string)
+        my $c = 0;
+        $pad ++;                # for $pad == $len case
+        while ($pad <= $len) {
+            $c = substr($xs, -$pad, 1) + 1;
+            $c = '0' if $c eq '10';
+            substr($xs, -$pad, 1) = $c;
+            $pad++;
+            last if $c != 0;    # no overflow => early out
+        }
+        $xs = '1'.$xs if $c == 0;
 
-  $x -> bmod($y) if $x->{sign} ne $y->{sign};
+    }
+    $x->{value} = $CALC->_new($xs) if $put_back == 1; # put back, if needed
 
-  return $x;
-  }
+    $x->{_a} = $scale if $scale >= 0;
+    if ($scale < 0) {
+        $x->{_a} = $len+$scale;
+        $x->{_a} = 0 if $scale < -$len;
+    }
+    $x;
+}
 
-sub bmodpow
-  {
-  # Modular exponentiation. Raises a very large number to a very large exponent
-  # in a given very large modulus quickly, thanks to binary exponentiation.
-  # Supports negative exponents.
-  my ($self,$num,$exp,$mod,@r) = objectify(3,@_);
+sub bfround {
+    # precision: round to the $Nth digit left (+$n) or right (-$n) from the '.'
+    # $n == 0 || $n == 1 => round to integer
+    my $x = shift;
+    my $class = ref($x) || $x;
+    $x = $class->new($x) unless ref $x;
 
-  return $num if $num->modify('bmodpow');
+    my ($scale, $mode) = $x->_scale_p(@_);
 
-  # When the exponent 'e' is negative, use the following relation, which is
-  # based on finding the multiplicative inverse 'd' of 'b' modulo 'm':
-  #
-  #    b^(-e) (mod m) = d^e (mod m) where b*d = 1 (mod m)
+    return $x if !defined $scale || $x->modify('bfround'); # no-op
 
-  $num->bmodinv($mod) if ($exp->{sign} eq '-');
+    # no-op for Math::BigInt objects if $n <= 0
+    $x->bround($x->length()-$scale, $mode) if $scale > 0;
 
-  # Check for valid input. All operands must be finite, and the modulus must be
-  # non-zero.
+    delete $x->{_a};            # delete to save memory
+    $x->{_p} = $scale;          # store new _p
+    $x;
+}
 
-  return $num->bnan() if ($num->{sign} =~ /NaN|inf/ ||  # NaN, -inf, +inf
-                          $exp->{sign} =~ /NaN|inf/ ||  # NaN, -inf, +inf
-                          $mod->{sign} =~ /NaN|inf/);   # NaN, -inf, +inf
+sub fround {
+    # Exists to make life easier for switch between MBF and MBI (should we
+    # autoload fxxx() like MBF does for bxxx()?)
+    my $x = shift;
+    $x = $class->new($x) unless ref $x;
+    $x->bround(@_);
+}
 
-  # Modulo zero. See documentation for Math::BigInt's bmod() method.
+sub bfloor {
+    # round towards minus infinity; no-op since it's already integer
+    my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
 
-  if ($mod -> is_zero()) {
-      if ($num -> is_zero()) {
-          return $self -> bnan();
-      } else {
-          return $num -> copy();
-      }
-  }
+    $x->round(@r);
+}
 
-  # Compute 'a (mod m)', ignoring the signs on 'a' and 'm'. If the resulting
-  # value is zero, the output is also zero, regardless of the signs on 'a' and
-  # 'm'.
+sub bceil {
+    # round towards plus infinity; no-op since it's already int
+    my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
 
-  my $value = $CALC->_modpow($num->{value}, $exp->{value}, $mod->{value});
-  my $sign  = '+';
+    $x->round(@r);
+}
 
-  # If the resulting value is non-zero, we have four special cases, depending
-  # on the signs on 'a' and 'm'.
+sub bint {
+    # round towards zero; no-op since it's already integer
+    my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
 
-  unless ($CALC->_is_zero($value)) {
+    $x->round(@r);
+}
 
-      # There is a negative sign on 'a' (= $num**$exp) only if the number we
-      # are exponentiating ($num) is negative and the exponent ($exp) is odd.
+###############################################################################
+# Other mathematical methods
+###############################################################################
 
-      if ($num->{sign} eq '-' && $exp->is_odd()) {
+sub bgcd {
+    # (BINT or num_str, BINT or num_str) return BINT
+    # does not modify arguments, but returns new object
+    # GCD -- Euclid's algorithm, variant C (Knuth Vol 3, pg 341 ff)
+
+    my $y = shift;
+    $y = $class->new($y) if !ref($y);
+    my $class = ref($y);
+    my $x = $y->copy()->babs();                  # keep arguments
+    return $x->bnan() if $x->{sign} !~ /^[+-]$/; # x NaN?
+
+    while (@_) {
+        $y = shift;
+        $y = $class->new($y) if !ref($y);
+        return $x->bnan() if $y->{sign} !~ /^[+-]$/; # y NaN?
+        $x->{value} = $CALC->_gcd($x->{value}, $y->{value});
+        last if $CALC->_is_one($x->{value});
+    }
+    $x;
+}
 
-          # When both the number 'a' and the modulus 'm' have a negative sign,
-          # use this relation:
-          #
-          #    -a (mod -m) = -(a (mod m))
+sub blcm {
+    # (BINT or num_str, BINT or num_str) return BINT
+    # does not modify arguments, but returns new object
+    # Lowest Common Multiple
 
-          if ($mod->{sign} eq '-') {
-              $sign = '-';
-          }
+    my $y = shift;
+    my ($x);
+    if (ref($y)) {
+        $x = $y->copy();
+    } else {
+        $x = $class->new($y);
+    }
+    my $class = ref($x);
+    while (@_) {
+        my $y = shift;
+        $y = $class->new($y) if !ref ($y);
+        $x = __lcm($x, $y);
+    }
+    $x;
+}
 
-          # When only the number 'a' has a negative sign, use this relation:
-          #
-          #    -a (mod m) = m - (a (mod m))
+###############################################################################
+# Object property methods
+###############################################################################
 
-          else {
-              # Use copy of $mod since _sub() modifies the first argument.
-              my $mod = $CALC->_copy($mod->{value});
-              $value = $CALC->_sub($mod, $value);
-              $sign  = '+';
-          }
+sub sign {
+    # return the sign of the number: +/-/-inf/+inf/NaN
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-      } else {
+    $x->{sign};
+}
 
-          # When only the modulus 'm' has a negative sign, use this relation:
-          #
-          #    a (mod -m) = (a (mod m)) - m
-          #               = -(m - (a (mod m)))
+sub digit {
+    # return the nth decimal digit, negative values count backward, 0 is right
+    my ($class, $x, $n) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
 
-          if ($mod->{sign} eq '-') {
-              # Use copy of $mod since _sub() modifies the first argument.
-              my $mod = $CALC->_copy($mod->{value});
-              $value = $CALC->_sub($mod, $value);
-              $sign  = '-';
-          }
+    $n = $n->numify() if ref($n);
+    $CALC->_digit($x->{value}, $n || 0);
+}
 
-          # When neither the number 'a' nor the modulus 'm' have a negative
-          # sign, directly return the already computed value.
-          #
-          #    (a (mod m))
+sub length {
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-      }
+    my $e = $CALC->_len($x->{value});
+    wantarray ? ($e, 0) : $e;
+}
 
-  }
+sub exponent {
+    # return a copy of the exponent (here always 0, NaN or 1 for $m == 0)
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
 
-  $num->{value} = $value;
-  $num->{sign}  = $sign;
+    if ($x->{sign} !~ /^[+-]$/) {
+        my $s = $x->{sign};
+        $s =~ s/^[+-]//; # NaN, -inf, +inf => NaN or inf
+        return $class->new($s);
+    }
+    return $class->bzero() if $x->is_zero();
 
-  return $num;
-  }
+    # 12300 => 2 trailing zeros => exponent is 2
+    $class->new($CALC->_zeros($x->{value}));
+}
 
-###############################################################################
+sub mantissa {
+    # return the mantissa (compatible to Math::BigFloat, e.g. reduced)
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
 
-sub bfac
-  {
-  # (BINT or num_str, BINT or num_str) return BINT
-  # compute factorial number from $x, modify $x in place
-  my ($self,$x,@r) = ref($_[0]) ? (undef,@_) : objectify(1,@_);
-
-  return $x if $x->modify('bfac') || $x->{sign} eq '+inf';      # inf => inf
-  return $x->bnan() if $x->{sign} ne '+';                       # NaN, <0 etc => NaN
-
-  $x->{value} = $CALC->_fac($x->{value});
-  $x->round(@r);
-  }
-
-sub bpow
-  {
-  # (BINT or num_str, BINT or num_str) return BINT
-  # compute power of two numbers -- stolen from Knuth Vol 2 pg 233
-  # modifies first argument
-
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
+    if ($x->{sign} !~ /^[+-]$/) {
+        # for NaN, +inf, -inf: keep the sign
+        return $class->new($x->{sign});
     }
+    my $m = $x->copy();
+    delete $m->{_p};
+    delete $m->{_a};
 
-  return $x if $x->modify('bpow');
-
-  return $x->bnan() if $x->{sign} eq $nan || $y->{sign} eq $nan;
+    # that's a bit inefficient:
+    my $zeros = $CALC->_zeros($m->{value});
+    $m->brsft($zeros, 10) if $zeros != 0;
+    $m;
+}
 
-  # inf handling
-  if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/))
-    {
-    if (($x->{sign} =~ /^[+-]inf$/) && ($y->{sign} =~ /^[+-]inf$/))
-      {
-      # +-inf ** +-inf
-      return $x->bnan();
-      }
-    # +-inf ** Y
-    if ($x->{sign} =~ /^[+-]inf/)
-      {
-      # +inf ** 0 => NaN
-      return $x->bnan() if $y->is_zero();
-      # -inf ** -1 => 1/inf => 0
-      return $x->bzero() if $y->is_one('-') && $x->is_negative();
-
-      # +inf ** Y => inf
-      return $x if $x->{sign} eq '+inf';
-
-      # -inf ** Y => -inf if Y is odd
-      return $x if $y->is_odd();
-      return $x->babs();
-      }
-    # X ** +-inf
-
-    # 1 ** +inf => 1
-    return $x if $x->is_one();
-
-    # 0 ** inf => 0
-    return $x if $x->is_zero() && $y->{sign} =~ /^[+]/;
-
-    # 0 ** -inf => inf
-    return $x->binf() if $x->is_zero();
-
-    # -1 ** -inf => NaN
-    return $x->bnan() if $x->is_one('-') && $y->{sign} =~ /^[-]/;
-
-    # -X ** -inf => 0
-    return $x->bzero() if $x->{sign} eq '-' && $y->{sign} =~ /^[-]/;
-
-    # -1 ** inf => NaN
-    return $x->bnan() if $x->{sign} eq '-';
-
-    # X ** inf => inf
-    return $x->binf() if $y->{sign} =~ /^[+]/;
-    # X ** -inf => 0
-    return $x->bzero();
-    }
-
-  return $upgrade->bpow($upgrade->new($x),$y,@r)
-   if defined $upgrade && (!$y->isa($self) || $y->{sign} eq '-');
-
-  $r[3] = $y;                                   # no push!
-
-  # cases 0 ** Y, X ** 0, X ** 1, 1 ** Y are handled by Calc or Emu
-
-  my $new_sign = '+';
-  $new_sign = $y->is_odd() ? '-' : '+' if ($x->{sign} ne '+');
-
-  # 0 ** -7 => ( 1 / (0 ** 7)) => 1 / 0 => +inf
-  return $x->binf()
-    if $y->{sign} eq '-' && $x->{sign} eq '+' && $CALC->_is_zero($x->{value});
-  # 1 ** -y => 1 / (1 ** |y|)
-  # so do test for negative $y after above's clause
-  return $x->bnan() if $y->{sign} eq '-' && !$CALC->_is_one($x->{value});
-
-  $x->{value} = $CALC->_pow($x->{value},$y->{value});
-  $x->{sign} = $new_sign;
-  $x->{sign} = '+' if $CALC->_is_zero($y->{value});
-  $x->round(@r);
-  }
-
-sub blsft
-  {
-  # (BINT or num_str, BINT or num_str) return BINT
-  # compute x << y, base n, y >= 0
-
-  # set up parameters
-  my ($self,$x,$y,$n,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,$n,@r) = objectify(2,@_);
-    }
+sub parts {
+    # return a copy of both the exponent and the mantissa
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-  return $x if $x->modify('blsft');
-  return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
-  return $x->round(@r) if $y->is_zero();
+    ($x->mantissa(), $x->exponent());
+}
 
-  $n = 2 if !defined $n; return $x->bnan() if $n <= 0 || $y->{sign} eq '-';
+sub sparts {
+    my $self  = shift;
+    my $class = ref $self;
 
-  $x->{value} = $CALC->_lsft($x->{value},$y->{value},$n);
-  $x->round(@r);
-  }
+    Carp::croak("sparts() is an instance method, not a class method")
+        unless $class;
 
-sub brsft
-  {
-  # (BINT or num_str, BINT or num_str) return BINT
-  # compute x >> y, base n, y >= 0
+    # Not-a-number.
 
-  # set up parameters
-  my ($self,$x,$y,$n,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,$n,@r) = objectify(2,@_);
+    if ($self -> is_nan()) {
+        my $mant = $self -> copy();             # mantissa
+        return $mant unless wantarray;          # scalar context
+        my $expo = $class -> bnan();            # exponent
+        return ($mant, $expo);                  # list context
     }
 
-  return $x if $x->modify('brsft');
-  return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
-  return $x->round(@r) if $y->is_zero();
-  return $x->bzero(@r) if $x->is_zero();                # 0 => 0
-
-  $n = 2 if !defined $n; return $x->bnan() if $n <= 0 || $y->{sign} eq '-';
+    # Infinity.
 
-   # this only works for negative numbers when shifting in base 2
-  if (($x->{sign} eq '-') && ($n == 2))
-    {
-    return $x->round(@r) if $x->is_one('-');    # -1 => -1
-    if (!$y->is_one())
-      {
-      # although this is O(N*N) in calc (as_bin!) it is O(N) in Pari et al
-      # but perhaps there is a better emulation for two's complement shift...
-      # if $y != 1, we must simulate it by doing:
-      # convert to bin, flip all bits, shift, and be done
-      $x->binc();                       # -3 => -2
-      my $bin = $x->as_bin();
-      $bin =~ s/^-0b//;                 # strip '-0b' prefix
-      $bin =~ tr/10/01/;                # flip bits
-      # now shift
-      if ($y >= CORE::length($bin))
-        {
-        $bin = '0';                     # shifting to far right creates -1
-                                        # 0, because later increment makes
-                                        # that 1, attached '-' makes it '-1'
-                                        # because -1 >> x == -1 !
-        }
-      else
-        {
-        $bin =~ s/.{$y}$//;             # cut off at the right side
-        $bin = '1' . $bin;              # extend left side by one dummy '1'
-        $bin =~ tr/10/01/;              # flip bits back
-        }
-      my $res = $self->new('0b'.$bin);  # add prefix and convert back
-      $res->binc();                     # remember to increment
-      $x->{value} = $res->{value};      # take over value
-      return $x->round(@r);             # we are done now, magic, isn't?
-      }
-    # x < 0, n == 2, y == 1
-    $x->bdec();                         # n == 2, but $y == 1: this fixes it
-    }
-
-  $x->{value} = $CALC->_rsft($x->{value},$y->{value},$n);
-  $x->round(@r);
-  }
-
-sub band
-  {
-  #(BINT or num_str, BINT or num_str) return BINT
-  # compute x & y
-
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
+    if ($self -> is_inf()) {
+        my $mant = $self -> copy();             # mantissa
+        return $mant unless wantarray;          # scalar context
+        my $expo = $class -> binf('+');         # exponent
+        return ($mant, $expo);                  # list context
     }
 
-  return $x if $x->modify('band');
+    # Finite number.
 
-  $r[3] = $y;                           # no push!
+    my $mant   = $self -> copy();
+    my $nzeros = $CALC -> _zeros($mant -> {value});
 
-  return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
+    $mant -> brsft($nzeros, 10) if $nzeros != 0;
+    return $mant unless wantarray;
 
-  my $sx = $x->{sign} eq '+' ? 1 : -1;
-  my $sy = $y->{sign} eq '+' ? 1 : -1;
-
-  if ($sx == 1 && $sy == 1)
-    {
-    $x->{value} = $CALC->_and($x->{value},$y->{value});
-    return $x->round(@r);
-    }
+    my $expo = $class -> new($nzeros);
+    return ($mant, $expo);
+}
 
-  if ($CAN{signed_and})
-    {
-    $x->{value} = $CALC->_signed_and($x->{value},$y->{value},$sx,$sy);
-    return $x->round(@r);
-    }
+sub nparts {
+    my $self  = shift;
+    my $class = ref $self;
 
-  require $EMU_LIB;
-  __emu_band($self,$x,$y,$sx,$sy,@r);
-  }
+    Carp::croak("nparts() is an instance method, not a class method")
+        unless $class;
 
-sub bior
-  {
-  #(BINT or num_str, BINT or num_str) return BINT
-  # compute x | y
+    # Not-a-number.
 
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
+    if ($self -> is_nan()) {
+        my $mant = $self -> copy();             # mantissa
+        return $mant unless wantarray;          # scalar context
+        my $expo = $class -> bnan();            # exponent
+        return ($mant, $expo);                  # list context
     }
 
-  return $x if $x->modify('bior');
-  $r[3] = $y;                           # no push!
+    # Infinity.
 
-  return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
+    if ($self -> is_inf()) {
+        my $mant = $self -> copy();             # mantissa
+        return $mant unless wantarray;          # scalar context
+        my $expo = $class -> binf('+');         # exponent
+        return ($mant, $expo);                  # list context
+    }
 
-  my $sx = $x->{sign} eq '+' ? 1 : -1;
-  my $sy = $y->{sign} eq '+' ? 1 : -1;
+    # Finite number.
 
-  # the sign of X follows the sign of X, e.g. sign of Y irrelevant for bior()
+    my ($mant, $expo) = $self -> sparts();
 
-  # don't use lib for negative values
-  if ($sx == 1 && $sy == 1)
-    {
-    $x->{value} = $CALC->_or($x->{value},$y->{value});
-    return $x->round(@r);
-    }
+    if ($mant -> bcmp(0)) {
+        my ($ndigtot, $ndigfrac) = $mant -> length();
+        my $expo10adj = $ndigtot - $ndigfrac - 1;
 
-  # if lib can do negative values, let it handle this
-  if ($CAN{signed_or})
-    {
-    $x->{value} = $CALC->_signed_or($x->{value},$y->{value},$sx,$sy);
-    return $x->round(@r);
+        if ($expo10adj != 0) {
+            return $upgrade -> new($self) -> nparts() if $upgrade;
+            $mant -> bnan();
+            return $mant unless wantarray;
+            $expo -> badd($expo10adj);
+            return ($mant, $expo);
+        }
     }
 
-  require $EMU_LIB;
-  __emu_bior($self,$x,$y,$sx,$sy,@r);
-  }
+    return $mant unless wantarray;
+    return ($mant, $expo);
+}
 
-sub bxor
-  {
-  #(BINT or num_str, BINT or num_str) return BINT
-  # compute x ^ y
+sub eparts {
+    my $self  = shift;
+    my $class = ref $self;
 
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
-    }
+    Carp::croak("eparts() is an instance method, not a class method")
+        unless $class;
 
-  return $x if $x->modify('bxor');
-  $r[3] = $y;                           # no push!
+    # Not-a-number and Infinity.
 
-  return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
+    return $self -> sparts() if $self -> is_nan() || $self -> is_inf();
 
-  my $sx = $x->{sign} eq '+' ? 1 : -1;
-  my $sy = $y->{sign} eq '+' ? 1 : -1;
+    # Finite number.
 
-  # don't use lib for negative values
-  if ($sx == 1 && $sy == 1)
-    {
-    $x->{value} = $CALC->_xor($x->{value},$y->{value});
-    return $x->round(@r);
-    }
+    my ($mant, $expo) = $self -> sparts();
 
-  # if lib can do negative values, let it handle this
-  if ($CAN{signed_xor})
-    {
-    $x->{value} = $CALC->_signed_xor($x->{value},$y->{value},$sx,$sy);
-    return $x->round(@r);
-    }
+    if ($mant -> bcmp(0)) {
+        my $ndigmant  = $mant -> length();
+        $expo -> badd($ndigmant);
+
+        # $c is the number of digits that will be in the integer part of the
+        # final mantissa.
 
-  require $EMU_LIB;
-  __emu_bxor($self,$x,$y,$sx,$sy,@r);
-  }
+        my $c = $expo -> copy() -> bdec() -> bmod(3) -> binc();
+        $expo -> bsub($c);
 
-sub length
-  {
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+        if ($ndigmant > $c) {
+            return $upgrade -> new($self) -> eparts() if $upgrade;
+            $mant -> bnan();
+            return $mant unless wantarray;
+            return ($mant, $expo);
+        }
 
-  my $e = $CALC->_len($x->{value});
-  wantarray ? ($e,0) : $e;
-  }
+        $mant -> blsft($c - $ndigmant, 10);
+    }
 
-sub digit
-  {
-  # return the nth decimal digit, negative values count backward, 0 is right
-  my ($self,$x,$n) = ref($_[0]) ? (undef,@_) : objectify(1,@_);
+    return $mant unless wantarray;
+    return ($mant, $expo);
+}
 
-  $n = $n->numify() if ref($n);
-  $CALC->_digit($x->{value},$n||0);
-  }
+sub dparts {
+    my $self  = shift;
+    my $class = ref $self;
 
-sub _trailing_zeros
-  {
-  # return the amount of trailing zeros in $x (as scalar)
-  my $x = shift;
-  $x = $class->new($x) unless ref $x;
+    Carp::croak("dparts() is an instance method, not a class method")
+        unless $class;
 
-  return 0 if $x->{sign} !~ /^[+-]$/;   # NaN, inf, -inf etc
+    my $int = $self -> copy();
+    return $int unless wantarray;
 
-  $CALC->_zeros($x->{value});           # must handle odd values, 0 etc
-  }
+    my $frc = $class -> bzero();
+    return ($int, $frc);
+}
 
-sub bsqrt
-  {
-  # calculate square root of $x
-  my ($self,$x,@r) = ref($_[0]) ? (undef,@_) : objectify(1,@_);
+###############################################################################
+# String conversion methods
+###############################################################################
 
-  return $x if $x->modify('bsqrt');
+sub bstr {
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-  return $x->bnan() if $x->{sign} !~ /^\+/;     # -x or -inf or NaN => NaN
-  return $x if $x->{sign} eq '+inf';            # sqrt(+inf) == inf
+    if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+        return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+        return 'inf';                                  # +inf
+    }
+    my $str = $CALC->_str($x->{value});
+    return $x->{sign} eq '-' ? "-$str" : $str;
+}
 
-  return $upgrade->bsqrt($x,@r) if defined $upgrade;
+# Scientific notation with significand/mantissa as an integer, e.g., "12345" is
+# written as "1.2345e+4".
 
-  $x->{value} = $CALC->_sqrt($x->{value});
-  $x->round(@r);
-  }
+sub bsstr {
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-sub broot
-  {
-  # calculate $y'th root of $x
+    if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+        return $x->{sign} unless $x->{sign} eq '+inf';  # -inf, NaN
+        return 'inf';                                   # +inf
+    }
+    my ($m, $e) = $x -> parts();
+    my $str = $CALC->_str($m->{value}) . 'e+' . $CALC->_str($e->{value});
+    return $x->{sign} eq '-' ? "-$str" : $str;
+}
 
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
+# Normalized notation, e.g., "12345" is written as "12345e+0".
 
-  $y = $self->new(2) unless defined $y;
+sub bnstr {
+    my $x = shift;
 
-  # objectify is costly, so avoid it
-  if ((!ref($x)) || (ref($x) ne ref($y)))
-    {
-    ($self,$x,$y,@r) = objectify(2,$self || $class,@_);
+    if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+        return $x->{sign} unless $x->{sign} eq '+inf';  # -inf, NaN
+        return 'inf';                                   # +inf
     }
 
-  return $x if $x->modify('broot');
-
-  # NaN handling: $x ** 1/0, x or y NaN, or y inf/-inf or y == 0
-  return $x->bnan() if $x->{sign} !~ /^\+/ || $y->is_zero() ||
-         $y->{sign} !~ /^\+$/;
+    return $x -> bstr() if $x -> is_nan() || $x -> is_inf();
 
-  return $x->round(@r)
-    if $x->is_zero() || $x->is_one() || $x->is_inf() || $y->is_one();
+    my ($mant, $expo) = $x -> parts();
 
-  return $upgrade->new($x)->broot($upgrade->new($y),@r) if defined $upgrade;
+    # The "fraction posision" is the position (offset) for the decimal point
+    # relative to the end of the digit string.
 
-  $x->{value} = $CALC->_root($x->{value},$y->{value});
-  $x->round(@r);
-  }
+    my $fracpos = $mant -> length() - 1;
+    if ($fracpos == 0) {
+        my $str = $CALC->_str($mant->{value}) . "e+" . $CALC->_str($expo->{value});
+        return $x->{sign} eq '-' ? "-$str" : $str;
+    }
 
-sub exponent
-  {
-  # return a copy of the exponent (here always 0, NaN or 1 for $m == 0)
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
+    $expo += $fracpos;
+    my $mantstr = $CALC->_str($mant -> {value});
+    substr($mantstr, -$fracpos, 0) = '.';
 
-  if ($x->{sign} !~ /^[+-]$/)
-    {
-    my $s = $x->{sign}; $s =~ s/^[+-]//;  # NaN, -inf,+inf => NaN or inf
-    return $self->new($s);
-    }
-  return $self->bzero() if $x->is_zero();
+    my $str = $mantstr . 'e+' . $CALC->_str($expo -> {value});
+    return $x->{sign} eq '-' ? "-$str" : $str;
+}
 
-  # 12300 => 2 trailing zeros => exponent is 2
-  $self->new( $CALC->_zeros($x->{value}) );
-  }
+# Engineering notation, e.g., "12345" is written as "12.345e+3".
 
-sub mantissa
-  {
-  # return the mantissa (compatible to Math::BigFloat, e.g. reduced)
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
+sub bestr {
+    my $x = shift;
 
-  if ($x->{sign} !~ /^[+-]$/)
-    {
-    # for NaN, +inf, -inf: keep the sign
-    return $self->new($x->{sign});
+    if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+        return $x->{sign} unless $x->{sign} eq '+inf';  # -inf, NaN
+        return 'inf';                                   # +inf
     }
-  my $m = $x->copy(); delete $m->{_p}; delete $m->{_a};
 
-  # that's a bit inefficient:
-  my $zeros = $CALC->_zeros($m->{value});
-  $m->brsft($zeros,10) if $zeros != 0;
-  $m;
-  }
+    my ($mant, $expo) = $x -> parts();
 
-sub parts
-  {
-  # return a copy of both the exponent and the mantissa
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+    my $sign = $mant -> sign();
+    $mant -> babs();
 
-  ($x->mantissa(),$x->exponent());
-  }
+    my $mantstr = $CALC->_str($mant -> {value});
+    my $mantlen = CORE::length($mantstr);
 
-##############################################################################
-# rounding functions
-
-sub bfround
-  {
-  # precision: round to the $Nth digit left (+$n) or right (-$n) from the '.'
-  # $n == 0 || $n == 1 => round to integer
-  my $x = shift; my $self = ref($x) || $x; $x = $self->new($x) unless ref $x;
-
-  my ($scale,$mode) = $x->_scale_p(@_);
-
-  return $x if !defined $scale || $x->modify('bfround');        # no-op
-
-  # no-op for BigInts if $n <= 0
-  $x->bround( $x->length()-$scale, $mode) if $scale > 0;
-
-  delete $x->{_a};      # delete to save memory
-  $x->{_p} = $scale;    # store new _p
-  $x;
-  }
-
-sub _scan_for_nonzero
-  {
-  # internal, used by bround() to scan for non-zeros after a '5'
-  my ($x,$pad,$xs,$len) = @_;
-
-  return 0 if $len == 1;                # "5" is trailed by invisible zeros
-  my $follow = $pad - 1;
-  return 0 if $follow > $len || $follow < 1;
-
-  # use the string form to check whether only '0's follow or not
-  substr ($xs,-$follow) =~ /[^0]/ ? 1 : 0;
-  }
-
-sub fround
-  {
-  # Exists to make life easier for switch between MBF and MBI (should we
-  # autoload fxxx() like MBF does for bxxx()?)
-  my $x = shift; $x = $class->new($x) unless ref $x;
-  $x->bround(@_);
-  }
-
-sub bround
-  {
-  # accuracy: +$n preserve $n digits from left,
-  #           -$n preserve $n digits from right (f.i. for 0.1234 style in MBF)
-  # no-op for $n == 0
-  # and overwrite the rest with 0's, return normalized number
-  # do not return $x->bnorm(), but $x
-
-  my $x = shift; $x = $class->new($x) unless ref $x;
-  my ($scale,$mode) = $x->_scale_a(@_);
-  return $x if !defined $scale || $x->modify('bround'); # no-op
-
-  if ($x->is_zero() || $scale == 0)
-    {
-    $x->{_a} = $scale if !defined $x->{_a} || $x->{_a} > $scale; # 3 > 2
-    return $x;
-    }
-  return $x if $x->{sign} !~ /^[+-]$/;          # inf, NaN
+    my $dotidx = 1;
+    $expo += $mantlen - 1;
 
-  # we have fewer digits than we want to scale to
-  my $len = $x->length();
-  # convert $scale to a scalar in case it is an object (put's a limit on the
-  # number length, but this would already limited by memory constraints), makes
-  # it faster
-  $scale = $scale->numify() if ref ($scale);
+    my $c = $expo -> copy() -> bmod(3);
+    $expo   -= $c;
+    $dotidx += $c;
 
-  # scale < 0, but > -len (not >=!)
-  if (($scale < 0 && $scale < -$len-1) || ($scale >= $len))
-    {
-    $x->{_a} = $scale if !defined $x->{_a} || $x->{_a} > $scale; # 3 > 2
-    return $x;
+    if ($mantlen < $dotidx) {
+        $mantstr .= "0" x ($dotidx - $mantlen);
+    } elsif ($mantlen > $dotidx) {
+        substr($mantstr, $dotidx, 0) = ".";
     }
 
-  # count of 0's to pad, from left (+) or right (-): 9 - +6 => 3, or |-6| => 6
-  my ($pad,$digit_round,$digit_after);
-  $pad = $len - $scale;
-  $pad = abs($scale-1) if $scale < 0;
-
-  # do not use digit(), it is very costly for binary => decimal
-  # getting the entire string is also costly, but we need to do it only once
-  my $xs = $CALC->_str($x->{value});
-  my $pl = -$pad-1;
-
-  # pad:   123: 0 => -1, at 1 => -2, at 2 => -3, at 3 => -4
-  # pad+1: 123: 0 => 0,  at 1 => -1, at 2 => -2, at 3 => -3
-  $digit_round = '0'; $digit_round = substr($xs,$pl,1) if $pad <= $len;
-  $pl++; $pl ++ if $pad >= $len;
-  $digit_after = '0'; $digit_after = substr($xs,$pl,1) if $pad > 0;
-
-  # in case of 01234 we round down, for 6789 up, and only in case 5 we look
-  # closer at the remaining digits of the original $x, remember decision
-  my $round_up = 1;                                     # default round up
-  $round_up -- if
-    ($mode eq 'trunc')                          ||      # trunc by round down
-    ($digit_after =~ /[01234]/)                 ||      # round down anyway,
-                                                        # 6789 => round up
-    ($digit_after eq '5')                       &&      # not 5000...0000
-    ($x->_scan_for_nonzero($pad,$xs,$len) == 0)         &&
-    (
-     ($mode eq 'even') && ($digit_round =~ /[24680]/) ||
-     ($mode eq 'odd')  && ($digit_round =~ /[13579]/) ||
-     ($mode eq '+inf') && ($x->{sign} eq '-')   ||
-     ($mode eq '-inf') && ($x->{sign} eq '+')   ||
-     ($mode eq 'zero')          # round down if zero, sign adjusted below
-    );
-  my $put_back = 0;                                     # not yet modified
-
-  if (($pad > 0) && ($pad <= $len))
-    {
-    substr($xs,-$pad,$pad) = '0' x $pad;                # replace with '00...'
-    $put_back = 1;                                      # need to put back
-    }
-  elsif ($pad > $len)
-    {
-    $x->bzero();                                        # round to '0'
-    }
+    my $str = $mantstr . 'e+' . $CALC->_str($expo -> {value});
+    return $sign eq "-" ? "-$str" : $str;
+}
 
-  if ($round_up)                                        # what gave test above?
-    {
-    $put_back = 1;                                      # need to put back
-    $pad = $len, $xs = '0' x $pad if $scale < 0;        # tlr: whack 0.51=>1.0
+# Decimal notation, e.g., "12345".
 
-    # we modify directly the string variant instead of creating a number and
-    # adding it, since that is faster (we already have the string)
-    my $c = 0; $pad ++;                         # for $pad == $len case
-    while ($pad <= $len)
-      {
-      $c = substr($xs,-$pad,1) + 1; $c = '0' if $c eq '10';
-      substr($xs,-$pad,1) = $c; $pad++;
-      last if $c != 0;                          # no overflow => early out
-      }
-    $xs = '1'.$xs if $c == 0;
+sub bdstr {
+    my $x = shift;
 
+    if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+        return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+        return 'inf';                                  # +inf
     }
-  $x->{value} = $CALC->_new($xs) if $put_back == 1;     # put back, if needed
 
-  $x->{_a} = $scale if $scale >= 0;
-  if ($scale < 0)
-    {
-    $x->{_a} = $len+$scale;
-    $x->{_a} = 0 if $scale < -$len;
-    }
-  $x;
-  }
+    my $str = $CALC->_str($x->{value});
+    return $x->{sign} eq '-' ? "-$str" : $str;
+}
 
-sub bfloor
-  {
-  # round towards minus infinity; no-op since it's already integer
-  my ($self,$x,@r) = ref($_[0]) ? (undef,@_) : objectify(1,@_);
+sub as_hex {
+    # return as hex string, with prefixed 0x
+    my $x = shift;
+    $x = $class->new($x) if !ref($x);
 
-  $x->round(@r);
-  }
+    return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
 
-sub bceil
-  {
-  # round towards plus infinity; no-op since it's already int
-  my ($self,$x,@r) = ref($_[0]) ? (undef,@_) : objectify(1,@_);
+    my $s = '';
+    $s = $x->{sign} if $x->{sign} eq '-';
+    $s . $CALC->_as_hex($x->{value});
+}
 
-  $x->round(@r);
-  }
+sub as_oct {
+    # return as octal string, with prefixed 0
+    my $x = shift;
+    $x = $class->new($x) if !ref($x);
 
-sub bint {
-    # round towards zero; no-op since it's already integer
-    my ($self,$x,@r) = ref($_[0]) ? (undef,@_) : objectify(1,@_);
+    return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
 
-    $x->round(@r);
+    my $oct = $CALC->_as_oct($x->{value});
+    return $x->{sign} eq '-' ? "-$oct" : $oct;
 }
 
-sub as_number
-  {
-  # An object might be asked to return itself as bigint on certain overloaded
-  # operations. This does exactly this, so that sub classes can simple inherit
-  # it or override with their own integer conversion routine.
-  $_[0]->copy();
-  }
-
-sub as_hex
-  {
-  # return as hex string, with prefixed 0x
-  my $x = shift; $x = $class->new($x) if !ref($x);
-
-  return $x->bstr() if $x->{sign} !~ /^[+-]$/;  # inf, nan etc
+sub as_bin {
+    # return as binary string, with prefixed 0b
+    my $x = shift;
+    $x = $class->new($x) if !ref($x);
 
-  my $s = '';
-  $s = $x->{sign} if $x->{sign} eq '-';
-  $s . $CALC->_as_hex($x->{value});
-  }
+    return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
 
-sub as_bin
-  {
-  # return as binary string, with prefixed 0b
-  my $x = shift; $x = $class->new($x) if !ref($x);
+    my $s = '';
+    $s = $x->{sign} if $x->{sign} eq '-';
+    return $s . $CALC->_as_bin($x->{value});
+}
 
-  return $x->bstr() if $x->{sign} !~ /^[+-]$/;  # inf, nan etc
+###############################################################################
+# Other conversion methods
+###############################################################################
 
-  my $s = ''; $s = $x->{sign} if $x->{sign} eq '-';
-  return $s . $CALC->_as_bin($x->{value});
-  }
+sub numify {
+    # Make a Perl scalar number from a Math::BigInt object.
+    my $x = shift;
+    $x = $class->new($x) unless ref $x;
 
-sub as_oct
-  {
-  # return as octal string, with prefixed 0
-  my $x = shift; $x = $class->new($x) if !ref($x);
+    if ($x -> is_nan()) {
+        require Math::Complex;
+        my $inf = Math::Complex::Inf();
+        return $inf - $inf;
+    }
 
-  return $x->bstr() if $x->{sign} !~ /^[+-]$/;  # inf, nan etc
+    if ($x -> is_inf()) {
+        require Math::Complex;
+        my $inf = Math::Complex::Inf();
+        return $x -> is_negative() ? -$inf : $inf;
+    }
 
-  my $oct = $CALC->_as_oct($x->{value});
-  return $x->{sign} eq '-' ? "-$oct" : $oct;
-  }
+    my $num = 0 + $CALC->_num($x->{value});
+    return $x->{sign} eq '-' ? -$num : $num;
+}
 
-##############################################################################
-# private stuff (internal use only)
+###############################################################################
+# Private methods and functions.
+###############################################################################
 
 sub objectify {
     # Convert strings and "foreign objects" to the objects we want.
@@ -2782,19 +3522,18 @@ sub objectify {
     # Caller:                        Gives us:
     #
     # $x->badd(1);                => ref x, scalar y
-    # Class->badd(1,2);           => classname x (scalar), scalar x, scalar y
-    # Class->badd(Class->(1),2);  => classname x (scalar), ref x, scalar y
-    # Math::BigInt::badd(1,2);    => scalar x, scalar y
+    # Class->badd(1, 2);           => classname x (scalar), scalar x, scalar y
+    # Class->badd(Class->(1), 2);  => classname x (scalar), ref x, scalar y
+    # Math::BigInt::badd(1, 2);    => scalar x, scalar y
 
     # A shortcut for the common case $x->unary_op():
 
-    return (ref($_[1]), $_[1]) if (@_ == 2) && ($_[0]||0 == 1) && ref($_[1]);
+    return (ref($_[1]), $_[1]) if @_ == 2 && ($_[0] || 0) == 1 && ref($_[1]);
 
     # Check the context.
 
     unless (wantarray) {
-        require Carp;
-        Carp::croak ("${class}::objectify() needs list context");
+        Carp::croak("${class}::objectify() needs list context");
     }
 
     # Get the number of arguments to objectify.
@@ -2827,7 +3566,7 @@ sub objectify {
 
     my $up = ${"$a[0]::upgrade"};
 
-    # Disable downgrading, because Math::BigFloat -> foo('1.0','2.0') needs
+    # Disable downgrading, because Math::BigFloat -> foo('1.0', '2.0') needs
     # floats.
 
     my $down;
@@ -2908,334 +3647,150 @@ sub objectify {
     return @a;
 }
 
-sub _register_callback
-  {
-  my ($class,$callback) = @_;
-
-  if (ref($callback) ne 'CODE')
-    {
-    require Carp;
-    Carp::croak ("$callback is not a coderef");
-    }
-  $CALLBACKS{$class} = $callback;
-  }
-
-sub import
-  {
-  my $self = shift;
-
-  $IMPORT++;                            # remember we did import()
-  my @a; my $l = scalar @_;
-  my $warn_or_die = 0;                  # 0 - no warn, 1 - warn, 2 - die
-  for ( my $i = 0; $i < $l ; $i++ )
-    {
-    if ($_[$i] eq ':constant')
-      {
-      # this causes overlord er load to step in
-      overload::constant
-        integer => sub { $self->new(shift) },
-        binary => sub { $self->new(shift) };
-      }
-    elsif ($_[$i] eq 'upgrade')
-      {
-      # this causes upgrading
-      $upgrade = $_[$i+1];              # or undef to disable
-      $i++;
-      }
-    elsif ($_[$i] =~ /^(lib|try|only)\z/)
-      {
-      # this causes a different low lib to take care...
-      $CALC = $_[$i+1] || '';
-      # lib => 1 (warn on fallback), try => 0 (no warn), only => 2 (die on fallback)
-      $warn_or_die = 1 if $_[$i] eq 'lib';
-      $warn_or_die = 2 if $_[$i] eq 'only';
-      $i++;
-      }
-    else
-      {
-      push @a, $_[$i];
-      }
-    }
-  # any non :constant stuff is handled by our parent, Exporter
-  if (@a > 0)
-    {
-    require Exporter;
-
-    $self->SUPER::import(@a);                   # need it for subclasses
-    $self->export_to_level(1,$self,@a);         # need it for MBF
-    }
-
-  # try to load core math lib
-  my @c = split /\s*,\s*/,$CALC;
-  foreach (@c)
-    {
-    $_ =~ tr/a-zA-Z0-9://cd;                    # limit to sane characters
+sub import {
+    my $class = shift;
+
+    $IMPORT++;                  # remember we did import()
+    my @a;
+    my $l = scalar @_;
+    my $warn_or_die = 0;        # 0 - no warn, 1 - warn, 2 - die
+    for (my $i = 0; $i < $l ; $i++) {
+        if ($_[$i] eq ':constant') {
+            # this causes overlord er load to step in
+            overload::constant
+                integer => sub { $class->new(shift) },
+                binary  => sub { $class->new(shift) };
+        } elsif ($_[$i] eq 'upgrade') {
+            # this causes upgrading
+            $upgrade = $_[$i+1]; # or undef to disable
+            $i++;
+        } elsif ($_[$i] =~ /^(lib|try|only)\z/) {
+            # this causes a different low lib to take care...
+            $CALC = $_[$i+1] || '';
+            # lib => 1 (warn on fallback), try => 0 (no warn), only => 2 (die on fallback)
+            $warn_or_die = 1 if $_[$i] eq 'lib';
+            $warn_or_die = 2 if $_[$i] eq 'only';
+            $i++;
+        } else {
+            push @a, $_[$i];
+        }
     }
-  push @c, \'Calc'                              # if all fail, try these
-    if $warn_or_die < 2;                        # but not for "only"
-  $CALC = '';                                   # signal error
-  foreach my $l (@c)
-    {
-    # fallback libraries are "marked" as \'string', extract string if nec.
-    my $lib = $l; $lib = $$l if ref($l);
-
-    next if ($lib || '') eq '';
-    $lib = 'Math::BigInt::'.$lib if $lib !~ /^Math::BigInt/i;
-    $lib =~ s/\.pm$//;
-    if ($] < 5.006)
-      {
-      # Perl < 5.6.0 dies with "out of memory!" when eval("") and ':constant' is
-      # used in the same script, or eval("") inside import().
-      my @parts = split /::/, $lib;             # Math::BigInt => Math BigInt
-      my $file = pop @parts; $file .= '.pm';    # BigInt => BigInt.pm
-      require File::Spec;
-      $file = File::Spec->catfile (@parts, $file);
-      eval { require "$file"; $lib->import( @c ); }
-      }
-    else
-      {
-      eval "use $lib qw/@c/;";
-      }
-    if ($@ eq '')
-      {
-      my $ok = 1;
-      # loaded it ok, see if the api_version() is high enough
-      if ($lib->can('api_version') && $lib->api_version() >= 1.0)
-        {
-        $ok = 0;
-        # api_version matches, check if it really provides anything we need
-        for my $method (qw/
-                one two ten
-                str num
-                add mul div sub dec inc
-                acmp len digit is_one is_zero is_even is_odd
-                is_two is_ten
-                zeros new copy check
-                from_hex from_oct from_bin as_hex as_bin as_oct
-                rsft lsft xor and or
-                mod sqrt root fac pow modinv modpow log_int gcd
-         /)
-          {
-          if (!$lib->can("_$method"))
-            {
-            if (($WARN{$lib}||0) < 2)
-              {
-              require Carp;
-              Carp::carp ("$lib is missing method '_$method'");
-              $WARN{$lib} = 1;          # still warn about the lib
-              }
-            $ok++; last;
+    # any non :constant stuff is handled by our parent, Exporter
+    if (@a > 0) {
+        require Exporter;
+
+        $class->SUPER::import(@a);            # need it for subclasses
+        $class->export_to_level(1, $class, @a); # need it for MBF
+    }
+
+    # try to load core math lib
+    my @c = split /\s*,\s*/, $CALC;
+    foreach (@c) {
+        $_ =~ tr/a-zA-Z0-9://cd; # limit to sane characters
+    }
+    push @c, \'Calc'            # if all fail, try these
+      if $warn_or_die < 2;      # but not for "only"
+    $CALC = '';                 # signal error
+    foreach my $l (@c) {
+        # fallback libraries are "marked" as \'string', extract string if nec.
+        my $lib = $l;
+        $lib = $$l if ref($l);
+
+        next if ($lib || '') eq '';
+        $lib = 'Math::BigInt::'.$lib if $lib !~ /^Math::BigInt/i;
+        $lib =~ s/\.pm$//;
+        if ($] < 5.006) {
+            # Perl < 5.6.0 dies with "out of memory!" when eval("") and ':constant' is
+            # used in the same script, or eval("") inside import().
+            my @parts = split /::/, $lib; # Math::BigInt => Math BigInt
+            my $file = pop @parts;
+            $file .= '.pm';     # BigInt => BigInt.pm
+            require File::Spec;
+            $file = File::Spec->catfile (@parts, $file);
+            eval {
+                require "$file";
+                $lib->import(@c);
             }
-          }
-        }
-      if ($ok == 0)
-        {
-        $CALC = $lib;
-        if ($warn_or_die > 0 && ref($l))
-          {
-          require Carp;
-          my $msg =
-        "Math::BigInt: couldn't load specified math lib(s), fallback to $lib";
-          Carp::carp ($msg) if $warn_or_die == 1;
-          Carp::croak ($msg) if $warn_or_die == 2;
-          }
-        last;                   # found a usable one, break
+        } else {
+            eval "use $lib qw/@c/;";
         }
-      else
-        {
-        if (($WARN{$lib}||0) < 2)
-          {
-          my $ver = eval "\$$lib\::VERSION" || 'unknown';
-          require Carp;
-          Carp::carp ("Cannot load outdated $lib v$ver, please upgrade");
-          $WARN{$lib} = 2;              # never warn again
-          }
+        if ($@ eq '') {
+            my $ok = 1;
+            # loaded it ok, see if the api_version() is high enough
+            if ($lib->can('api_version') && $lib->api_version() >= 1.0) {
+                $ok = 0;
+                # api_version matches, check if it really provides anything we need
+                for my $method (qw/
+                                      one two ten
+                                      str num
+                                      add mul div sub dec inc
+                                      acmp len digit is_one is_zero is_even is_odd
+                                      is_two is_ten
+                                      zeros new copy check
+                                      from_hex from_oct from_bin as_hex as_bin as_oct
+                                      rsft lsft xor and or
+                                      mod sqrt root fac pow modinv modpow log_int gcd
+                                  /) {
+                    if (!$lib->can("_$method")) {
+                        if (($WARN{$lib} || 0) < 2) {
+                            Carp::carp("$lib is missing method '_$method'");
+                            $WARN{$lib} = 1; # still warn about the lib
+                        }
+                        $ok++;
+                        last;
+                    }
+                }
+            }
+            if ($ok == 0) {
+                $CALC = $lib;
+                if ($warn_or_die > 0 && ref($l)) {
+                    my $msg = "Math::BigInt: couldn't load specified"
+                            . " math lib(s), fallback to $lib";
+                    Carp::carp($msg)  if $warn_or_die == 1;
+                    Carp::croak($msg) if $warn_or_die == 2;
+                }
+                last;           # found a usable one, break
+            } else {
+                if (($WARN{$lib} || 0) < 2) {
+                    my $ver = eval "\$$lib\::VERSION" || 'unknown';
+                    Carp::carp("Cannot load outdated $lib v$ver, please upgrade");
+                    $WARN{$lib} = 2; # never warn again
+                }
+            }
         }
-      }
-    }
-  if ($CALC eq '')
-    {
-    require Carp;
-    if ($warn_or_die == 2)
-      {
-      Carp::croak(
-          "Couldn't load specified math lib(s) and fallback disallowed");
-      }
-    else
-      {
-      Carp::croak(
-          "Couldn't load any math lib(s), not even fallback to Calc.pm");
-      }
-    }
-
-  # notify callbacks
-  foreach my $class (keys %CALLBACKS)
-    {
-    &{$CALLBACKS{$class}}($CALC);
-    }
-
-  # Fill $CAN with the results of $CALC->can(...) for emulating lower math lib
-  # functions
-
-  %CAN = ();
-  for my $method (qw/ signed_and signed_or signed_xor /)
-    {
-    $CAN{$method} = $CALC->can("_$method") ? 1 : 0;
     }
-
-  # import done
-  }
-
-# Create a Math::BigInt from a hexadecimal string.
-
-sub from_hex {
-    my $self    = shift;
-    my $selfref = ref $self;
-    my $class   = $selfref || $self;
-
-    my $str = shift;
-
-    # If called as a class method, initialize a new object.
-
-    $self = $class -> bzero() unless $selfref;
-
-    if ($str =~ s/
-                     ^
-                     ( [+-]? )
-                     (0?x)?
-                     (
-                         [0-9a-fA-F]*
-                         ( _ [0-9a-fA-F]+ )*
-                     )
-                     $
-                 //x)
-    {
-        # Get a "clean" version of the string, i.e., non-emtpy and with no
-        # underscores or invalid characters.
-
-        my $sign = $1;
-        my $chrs = $3;
-        $chrs =~ tr/_//d;
-        $chrs = '0' unless CORE::length $chrs;
-
-        # The library method requires a prefix.
-
-        $self->{value} = $CALC->_from_hex('0x' . $chrs);
-
-        # Place the sign.
-
-        if ($sign eq '-' && ! $CALC->_is_zero($self->{value})) {
-            $self->{sign} = '-';
+    if ($CALC eq '') {
+        if ($warn_or_die == 2) {
+            Carp::croak("Couldn't load specified math lib(s)" .
+                        " and fallback disallowed");
+        } else {
+            Carp::croak("Couldn't load any math lib(s), not even fallback to Calc.pm");
         }
-
-        return $self;
     }
 
-    # CORE::hex() parses as much as it can, and ignores any trailing garbage.
-    # For backwards compatibility, we return NaN.
-
-    return $self->bnan();
-}
-
-# Create a Math::BigInt from an octal string.
-
-sub from_oct {
-    my $self    = shift;
-    my $selfref = ref $self;
-    my $class   = $selfref || $self;
-
-    my $str = shift;
-
-    # If called as a class method, initialize a new object.
-
-    $self = $class -> bzero() unless $selfref;
-
-    if ($str =~ s/
-                     ^
-                     ( [+-]? )
-                     (
-                         [0-7]*
-                         ( _ [0-7]+ )*
-                     )
-                     $
-                 //x)
-    {
-        # Get a "clean" version of the string, i.e., non-emtpy and with no
-        # underscores or invalid characters.
-
-        my $sign = $1;
-        my $chrs = $2;
-        $chrs =~ tr/_//d;
-        $chrs = '0' unless CORE::length $chrs;
-
-        # The library method requires a prefix.
-
-        $self->{value} = $CALC->_from_oct('0' . $chrs);
-
-        # Place the sign.
+    # notify callbacks
+    foreach my $class (keys %CALLBACKS) {
+        &{$CALLBACKS{$class}}($CALC);
+    }
 
-        if ($sign eq '-' && ! $CALC->_is_zero($self->{value})) {
-            $self->{sign} = '-';
-        }
+    # Fill $CAN with the results of $CALC->can(...) for emulating lower math lib
+    # functions
 
-        return $self;
+    %CAN = ();
+    for my $method (qw/ signed_and signed_or signed_xor /) {
+        $CAN{$method} = $CALC->can("_$method") ? 1 : 0;
     }
 
-    # CORE::oct() parses as much as it can, and ignores any trailing garbage.
-    # For backwards compatibility, we return NaN.
-
-    return $self->bnan();
+    # import done
 }
 
-# Create a Math::BigInt from a binary string.
-
-sub from_bin {
-    my $self    = shift;
-    my $selfref = ref $self;
-    my $class   = $selfref || $self;
-
-    my $str = shift;
-
-    # If called as a class method, initialize a new object.
-
-    $self = $class -> bzero() unless $selfref;
-
-    if ($str =~ s/
-                     ^
-                     ( [+-]? )
-                     (0?b)?
-                     (
-                         [01]*
-                         ( _ [01]+ )*
-                     )
-                     $
-                 //x)
-    {
-        # Get a "clean" version of the string, i.e., non-emtpy and with no
-        # underscores or invalid characters.
-
-        my $sign = $1;
-        my $chrs = $3;
-        $chrs =~ tr/_//d;
-        $chrs = '0' unless CORE::length $chrs;
-
-        # The library method requires a prefix.
-
-        $self->{value} = $CALC->_from_bin('0b' . $chrs);
-
-        # Place the sign.
-
-        if ($sign eq '-' && ! $CALC->_is_zero($self->{value})) {
-            $self->{sign} = '-';
-        }
+sub _register_callback {
+    my ($class, $callback) = @_;
 
-        return $self;
+    if (ref($callback) ne 'CODE') {
+        Carp::croak("$callback is not a coderef");
     }
-
-    # For consistency with from_hex() and from_oct(), we return NaN when the
-    # input is invalid.
-
-    return $self->bnan();
+    $CALLBACKS{$class} = $callback;
 }
 
 sub _split_dec_string {
@@ -3273,8 +3828,7 @@ sub _split_dec_string {
                      ( \D .*? )?
 
                      \z
-                 //x)
-    {
+                 //x) {
         my $leading         = $1;
         my $significand_sgn = $2 || '+';
         my $significand_abs = $3;
@@ -3312,240 +3866,175 @@ sub _split_dec_string {
     return undef;
 }
 
-sub _split
-  {
-  # input: num_str; output: undef for invalid or
-  # (\$mantissa_sign,\$mantissa_value,\$mantissa_fraction,
-  # \$exp_sign,\$exp_value)
-  # Internal, take apart a string and return the pieces.
-  # Strip leading/trailing whitespace, leading zeros, underscore and reject
-  # invalid input.
-  my $x = shift;
-
-  # strip white space at front, also extraneous leading zeros
-  $x =~ s/^\s*([-]?)0*([0-9])/$1$2/g;   # will not strip '  .2'
-  $x =~ s/^\s+//;                       # but this will
-  $x =~ s/\s+$//g;                      # strip white space at end
-
-  # shortcut, if nothing to split, return early
-  if ($x =~ /^[+-]?[0-9]+\z/)
-    {
-    $x =~ s/^([+-])0*([0-9])/$2/; my $sign = $1 || '+';
-    return (\$sign, \$x, \'', \'', \0);
-    }
-
-  # invalid starting char?
-  return if $x !~ /^[+-]?(\.?[0-9]|0b[0-1]|0x[0-9a-fA-F])/;
-
-  return Math::BigInt->from_hex($x) if $x =~ /^[+-]?0x/;        # hex string
-  return Math::BigInt->from_bin($x) if $x =~ /^[+-]?0b/;        # binary string
-
-  # strip underscores between digits
-  $x =~ s/([0-9])_([0-9])/$1$2/g;
-  $x =~ s/([0-9])_([0-9])/$1$2/g;               # do twice for 1_2_3
-
-  # some possible inputs:
-  # 2.1234 # 0.12        # 1          # 1E1 # 2.134E1 # 434E-10 # 1.02009E-2
-  # .2     # 1_2_3.4_5_6 # 1.4E1_2_3  # 1e3 # +.2     # 0e999
-
-  my ($m,$e,$last) = split /[Ee]/,$x;
-  return if defined $last;              # last defined => 1e2E3 or others
-  $e = '0' if !defined $e || $e eq "";
-
-  # sign,value for exponent,mantint,mantfrac
-  my ($es,$ev,$mis,$miv,$mfv);
-  # valid exponent?
-  if ($e =~ /^([+-]?)0*([0-9]+)$/)      # strip leading zeros
-    {
-    $es = $1; $ev = $2;
-    # valid mantissa?
-    return if $m eq '.' || $m eq '';
-    my ($mi,$mf,$lastf) = split /\./,$m;
-    return if defined $lastf;           # lastf defined => 1.2.3 or others
-    $mi = '0' if !defined $mi;
-    $mi .= '0' if $mi =~ /^[\-\+]?$/;
-    $mf = '0' if !defined $mf || $mf eq '';
-    if ($mi =~ /^([+-]?)0*([0-9]+)$/)           # strip leading zeros
-      {
-      $mis = $1||'+'; $miv = $2;
-      return unless ($mf =~ /^([0-9]*?)0*$/);   # strip trailing zeros
-      $mfv = $1;
-      # handle the 0e999 case here
-      $ev = 0 if $miv eq '0' && $mfv eq '';
-      return (\$mis,\$miv,\$mfv,\$es,\$ev);
-      }
-    }
-  return; # NaN, not a number
-  }
-
-##############################################################################
-# internal calculation routines (others are in Math::BigInt::Calc etc)
-
-sub __lcm
-  {
-  # (BINT or num_str, BINT or num_str) return BINT
-  # does modify first argument
-  # LCM
-
-  my ($x,$ty) = @_;
-  return $x->bnan() if ($x->{sign} eq $nan) || ($ty->{sign} eq $nan);
-  my $method = ref($x) . '::bgcd';
-  no strict 'refs';
-  $x * $ty / &$method($x,$ty);
-  }
-
-###############################################################################
-# trigonometric functions
-
-sub bpi
-  {
-  # Calculate PI to N digits. Unless upgrading is in effect, returns the
-  # result truncated to an integer, that is, always returns '3'.
-  my ($self,$n) = @_;
-  if (@_ == 1)
+sub _split {
+    # input: num_str; output: undef for invalid or
+    # (\$mantissa_sign, \$mantissa_value, \$mantissa_fraction,
+    # \$exp_sign, \$exp_value)
+    # Internal, take apart a string and return the pieces.
+    # Strip leading/trailing whitespace, leading zeros, underscore and reject
+    # invalid input.
+    my $x = shift;
+
+    # strip white space at front, also extraneous leading zeros
+    $x =~ s/^\s*([-]?)0*([0-9])/$1$2/g; # will not strip '  .2'
+    $x =~ s/^\s+//;                     # but this will
+    $x =~ s/\s+$//g;                    # strip white space at end
+
+    # shortcut, if nothing to split, return early
+    if ($x =~ /^[+-]?[0-9]+\z/) {
+        $x =~ s/^([+-])0*([0-9])/$2/;
+        my $sign = $1 || '+';
+        return (\$sign, \$x, \'', \'', \0);
+    }
+
+    # invalid starting char?
+    return if $x !~ /^[+-]?(\.?[0-9]|0b[0-1]|0x[0-9a-fA-F])/;
+
+    return Math::BigInt->from_hex($x) if $x =~ /^[+-]?0x/; # hex string
+    return Math::BigInt->from_bin($x) if $x =~ /^[+-]?0b/; # binary string
+
+    # strip underscores between digits
+    $x =~ s/([0-9])_([0-9])/$1$2/g;
+    $x =~ s/([0-9])_([0-9])/$1$2/g; # do twice for 1_2_3
+
+    # some possible inputs:
+    # 2.1234 # 0.12        # 1          # 1E1 # 2.134E1 # 434E-10 # 1.02009E-2
+    # .2     # 1_2_3.4_5_6 # 1.4E1_2_3  # 1e3 # +.2     # 0e999
+
+    my ($m, $e, $last) = split /[Ee]/, $x;
+    return if defined $last;    # last defined => 1e2E3 or others
+    $e = '0' if !defined $e || $e eq "";
+
+    # sign, value for exponent, mantint, mantfrac
+    my ($es, $ev, $mis, $miv, $mfv);
+    # valid exponent?
+    if ($e =~ /^([+-]?)0*([0-9]+)$/) # strip leading zeros
     {
-    # called like Math::BigInt::bpi(10);
-    $n = $self; $self = $class;
+        $es = $1;
+        $ev = $2;
+        # valid mantissa?
+        return if $m eq '.' || $m eq '';
+        my ($mi, $mf, $lastf) = split /\./, $m;
+        return if defined $lastf; # lastf defined => 1.2.3 or others
+        $mi = '0' if !defined $mi;
+        $mi .= '0' if $mi =~ /^[\-\+]?$/;
+        $mf = '0' if !defined $mf || $mf eq '';
+        if ($mi =~ /^([+-]?)0*([0-9]+)$/) # strip leading zeros
+        {
+            $mis = $1 || '+';
+            $miv = $2;
+            return unless ($mf =~ /^([0-9]*?)0*$/); # strip trailing zeros
+            $mfv = $1;
+            # handle the 0e999 case here
+            $ev = 0 if $miv eq '0' && $mfv eq '';
+            return (\$mis, \$miv, \$mfv, \$es, \$ev);
+        }
     }
-  $self = ref($self) if ref($self);
-
-  return $upgrade->new($n) if defined $upgrade;
-
-  # hard-wired to "3"
-  $self->new(3);
-  }
-
-sub bcos
-  {
-  # Calculate cosinus(x) to N digits. Unless upgrading is in effect, returns the
-  # result truncated to an integer.
-  my ($self,$x,@r) = ref($_[0]) ? (undef,@_) : objectify(1,@_);
-
-  return $x if $x->modify('bcos');
-
-  return $x->bnan() if $x->{sign} !~ /^[+-]\z/; # -inf +inf or NaN => NaN
-
-  return $upgrade->new($x)->bcos(@r) if defined $upgrade;
+    return;                     # NaN, not a number
+}
 
-  require Math::BigFloat;
-  # calculate the result and truncate it to integer
-  my $t = Math::BigFloat->new($x)->bcos(@r)->as_int();
+sub _trailing_zeros {
+    # return the amount of trailing zeros in $x (as scalar)
+    my $x = shift;
+    $x = $class->new($x) unless ref $x;
 
-  $x->bone() if $t->is_one();
-  $x->bzero() if $t->is_zero();
-  $x->round(@r);
-  }
+    return 0 if $x->{sign} !~ /^[+-]$/; # NaN, inf, -inf etc
 
-sub bsin
-  {
-  # Calculate sinus(x) to N digits. Unless upgrading is in effect, returns the
-  # result truncated to an integer.
-  my ($self,$x,@r) = ref($_[0]) ? (undef,@_) : objectify(1,@_);
+    $CALC->_zeros($x->{value}); # must handle odd values, 0 etc
+}
 
-  return $x if $x->modify('bsin');
+sub _scan_for_nonzero {
+    # internal, used by bround() to scan for non-zeros after a '5'
+    my ($x, $pad, $xs, $len) = @_;
 
-  return $x->bnan() if $x->{sign} !~ /^[+-]\z/; # -inf +inf or NaN => NaN
+    return 0 if $len == 1;      # "5" is trailed by invisible zeros
+    my $follow = $pad - 1;
+    return 0 if $follow > $len || $follow < 1;
 
-  return $upgrade->new($x)->bsin(@r) if defined $upgrade;
+    # use the string form to check whether only '0's follow or not
+    substr ($xs, -$follow) =~ /[^0]/ ? 1 : 0;
+}
 
-  require Math::BigFloat;
-  # calculate the result and truncate it to integer
-  my $t = Math::BigFloat->new($x)->bsin(@r)->as_int();
+sub _find_round_parameters {
+    # After any operation or when calling round(), the result is rounded by
+    # regarding the A & P from arguments, local parameters, or globals.
 
-  $x->bone() if $t->is_one();
-  $x->bzero() if $t->is_zero();
-  $x->round(@r);
-  }
+    # !!!!!!! If you change this, remember to change round(), too! !!!!!!!!!!
 
-sub batan2
-  {
-  # calculate arcus tangens of ($y/$x)
+    # This procedure finds the round parameters, but it is for speed reasons
+    # duplicated in round. Otherwise, it is tested by the testsuite and used
+    # by bdiv().
 
-  # set up parameters
-  my ($self,$y,$x,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$y,$x,@r) = objectify(2,@_);
-    }
+    # returns ($self) or ($self, $a, $p, $r) - sets $self to NaN of both A and P
+    # were requested/defined (locally or globally or both)
 
-  return $y if $y->modify('batan2');
+    my ($self, $a, $p, $r, @args) = @_;
+    # $a accuracy, if given by caller
+    # $p precision, if given by caller
+    # $r round_mode, if given by caller
+    # @args all 'other' arguments (0 for unary, 1 for binary ops)
 
-  return $y->bnan() if ($y->{sign} eq $nan) || ($x->{sign} eq $nan);
+    my $class = ref($self);       # find out class of argument(s)
+    no strict 'refs';
 
-  # Y    X
-  # != 0 -inf result is +- pi
-  if ($x->is_inf() || $y->is_inf())
-    {
-    # upgrade to BigFloat etc.
-    return $upgrade->new($y)->batan2($upgrade->new($x),@r) if defined $upgrade;
-    if ($y->is_inf())
-      {
-      if ($x->{sign} eq '-inf')
-        {
-        # calculate 3 pi/4 => 2.3.. => 2
-        $y->bone( substr($y->{sign},0,1) );
-        $y->bmul($self->new(2));
-        }
-      elsif ($x->{sign} eq '+inf')
-        {
-        # calculate pi/4 => 0.7 => 0
-        $y->bzero();
-        }
-      else
-        {
-        # calculate pi/2 => 1.5 => 1
-        $y->bone( substr($y->{sign},0,1) );
-        }
-      }
-    else
-      {
-      if ($x->{sign} eq '+inf')
-        {
-        # calculate pi/4 => 0.7 => 0
-        $y->bzero();
+    # convert to normal scalar for speed and correctness in inner parts
+    $a = $a->can('numify') ? $a->numify() : "$a" if defined $a && ref($a);
+    $p = $p->can('numify') ? $p->numify() : "$p" if defined $p && ref($p);
+
+    # now pick $a or $p, but only if we have got "arguments"
+    if (!defined $a) {
+        foreach ($self, @args) {
+            # take the defined one, or if both defined, the one that is smaller
+            $a = $_->{_a} if (defined $_->{_a}) && (!defined $a || $_->{_a} < $a);
         }
-      else
-        {
-        # PI => 3.1415.. => 3
-        $y->bone( substr($y->{sign},0,1) );
-        $y->bmul($self->new(3));
+    }
+    if (!defined $p) {
+        # even if $a is defined, take $p, to signal error for both defined
+        foreach ($self, @args) {
+            # take the defined one, or if both defined, the one that is bigger
+            # -2 > -3, and 3 > 2
+            $p = $_->{_p} if (defined $_->{_p}) && (!defined $p || $_->{_p} > $p);
         }
-      }
-    return $y;
     }
 
-  return $upgrade->new($y)->batan2($upgrade->new($x),@r) if defined $upgrade;
+    # if still none defined, use globals (#2)
+    $a = ${"$class\::accuracy"}  unless defined $a;
+    $p = ${"$class\::precision"} unless defined $p;
 
-  require Math::BigFloat;
-  my $r = Math::BigFloat->new($y)
-                        ->batan2(Math::BigFloat->new($x),@r)
-                        ->as_int();
+    # A == 0 is useless, so undef it to signal no rounding
+    $a = undef if defined $a && $a == 0;
 
-  $x->{value} = $r->{value};
-  $x->{sign} = $r->{sign};
+    # no rounding today?
+    return ($self) unless defined $a || defined $p; # early out
 
-  $x;
-  }
+    # set A and set P is an fatal error
+    return ($self->bnan()) if defined $a && defined $p; # error
 
-sub batan
-  {
-  # Calculate arcus tangens of x to N digits. Unless upgrading is in effect, returns the
-  # result truncated to an integer.
-  my ($self,$x,@r) = ref($_[0]) ? (undef,@_) : objectify(1,@_);
+    $r = ${"$class\::round_mode"} unless defined $r;
+    if ($r !~ /^(even|odd|[+-]inf|zero|trunc|common)$/) {
+        Carp::croak("Unknown round mode '$r'");
+    }
 
-  return $x if $x->modify('batan');
+    $a = int($a) if defined $a;
+    $p = int($p) if defined $p;
 
-  return $x->bnan() if $x->{sign} !~ /^[+-]\z/; # -inf +inf or NaN => NaN
+    ($self, $a, $p, $r);
+}
 
-  return $upgrade->new($x)->batan(@r) if defined $upgrade;
+##############################################################################
+# internal calculation routines (others are in Math::BigInt::Calc etc)
 
-  # calculate the result and truncate it to integer
-  my $t = Math::BigFloat->new($x)->batan(@r);
+sub __lcm {
+    # (BINT or num_str, BINT or num_str) return BINT
+    # does modify first argument
+    # LCM
 
-  $x->{value} = $CALC->_new( $x->as_int()->bstr() );
-  $x->round(@r);
-  }
+    my ($x, $ty) = @_;
+    return $x->bnan() if ($x->{sign} eq $nan) || ($ty->{sign} eq $nan);
+    my $method = ref($x) . '::bgcd';
+    no strict 'refs';
+    $x * $ty / &$method($x, $ty);
+}
 
 ###############################################################################
 # this method returns 0 if the object can be modified, or 1 if not.
@@ -3555,6 +4044,7 @@ sub batan
 sub modify () { 0; }
 
 1;
+
 __END__
 
 =pod
@@ -3568,11 +4058,11 @@ Math::BigInt - Arbitrary size integer/float math package
   use Math::BigInt;
 
   # or make it faster with huge numbers: install (optional)
-  # Math::BigInt::GMP and always use (it will fall back to
+  # Math::BigInt::GMP and always use (it falls back to
   # pure Perl if the GMP library is not installed):
   # (See also the L<MATH LIBRARY> section!)
 
-  # will warn if Math::BigInt::GMP cannot be found
+  # warns if Math::BigInt::GMP cannot be found
   use Math::BigInt lib => 'GMP';
 
   # to suppress the warning use this:
@@ -3582,226 +4072,362 @@ Math::BigInt - Arbitrary size integer/float math package
   # use Math::BigInt only => 'GMP';
 
   my $str = '1234567890';
-  my @values = (64,74,18);
+  my @values = (64, 74, 18);
   my $n = 1; my $sign = '-';
 
-  # Number creation
-  my $x = Math::BigInt->new($str);      # defaults to 0
-  my $y = $x->copy();                   # make a true copy
-  my $nan  = Math::BigInt->bnan();      # create a NotANumber
-  my $zero = Math::BigInt->bzero();     # create a +0
-  my $inf = Math::BigInt->binf();       # create a +inf
-  my $inf = Math::BigInt->binf('-');    # create a -inf
-  my $one = Math::BigInt->bone();       # create a +1
-  my $mone = Math::BigInt->bone('-');   # create a -1
-
-  my $pi = Math::BigInt->bpi();         # returns '3'
-                                        # see Math::BigFloat::bpi()
-
-  $h = Math::BigInt->new('0x123');      # from hexadecimal
-  $b = Math::BigInt->new('0b101');      # from binary
-  $o = Math::BigInt->from_oct('0101');  # from octal
-  $h = Math::BigInt->from_hex('cafe');  # from hexadecimal
-  $b = Math::BigInt->from_bin('0101');  # from binary
-
-  # Testing (don't modify their arguments)
-  # (return true if the condition is met, otherwise false)
-
-  $x->is_zero();        # if $x is +0
-  $x->is_nan();         # if $x is NaN
-  $x->is_one();         # if $x is +1
-  $x->is_one('-');      # if $x is -1
-  $x->is_odd();         # if $x is odd
-  $x->is_even();        # if $x is even
-  $x->is_pos();         # if $x > 0
-  $x->is_neg();         # if $x < 0
-  $x->is_inf($sign);    # if $x is +inf, or -inf (sign is default '+')
-  $x->is_int();         # if $x is an integer (not a float)
-
-  # comparing and digit/sign extraction
-  $x->bcmp($y);         # compare numbers (undef,<0,=0,>0)
-  $x->bacmp($y);        # compare absolutely (undef,<0,=0,>0)
-  $x->sign();           # return the sign, either +,- or NaN
-  $x->digit($n);        # return the nth digit, counting from right
-  $x->digit(-$n);       # return the nth digit, counting from left
-
-  # The following all modify their first argument. If you want to pre-
-  # serve $x, use $z = $x->copy()->bXXX($y); See under L<CAVEATS> for
-  # why this is necessary when mixing $a = $b assignments with non-over-
-  # loaded math.
-
-  $x->bzero();          # set $x to 0
-  $x->bnan();           # set $x to NaN
-  $x->bone();           # set $x to +1
-  $x->bone('-');        # set $x to -1
-  $x->binf();           # set $x to inf
-  $x->binf('-');        # set $x to -inf
-
-  $x->bneg();           # negation
-  $x->babs();           # absolute value
-  $x->bsgn();           # sign function (-1, 0, 1, or NaN)
-  $x->bnorm();          # normalize (no-op in BigInt)
-  $x->bnot();           # two's complement (bit wise not)
-  $x->binc();           # increment $x by 1
-  $x->bdec();           # decrement $x by 1
-
-  $x->badd($y);         # addition (add $y to $x)
-  $x->bsub($y);         # subtraction (subtract $y from $x)
-  $x->bmul($y);         # multiplication (multiply $x by $y)
-  $x->bdiv($y);         # divide, set $x to quotient
-                        # return (quo,rem) or quo if scalar
-
-  $x->bmuladd($y,$z);   # $x = $x * $y + $z
-
-  $x->bmod($y);         # modulus (x % y)
-  $x->bmodpow($y,$mod); # modular exponentiation (($x ** $y) % $mod)
-  $x->bmodinv($mod);    # modular multiplicative inverse
-  $x->bpow($y);         # power of arguments (x ** y)
-  $x->blsft($y);        # left shift in base 2
-  $x->brsft($y);        # right shift in base 2
-                        # returns (quo,rem) or quo if in sca-
-                        # lar context
-  $x->blsft($y,$n);     # left shift by $y places in base $n
-  $x->brsft($y,$n);     # right shift by $y places in base $n
-                        # returns (quo,rem) or quo if in sca-
-                        # lar context
-
-  $x->band($y);         # bitwise and
-  $x->bior($y);         # bitwise inclusive or
-  $x->bxor($y);         # bitwise exclusive or
-  $x->bnot();           # bitwise not (two's complement)
-
-  $x->bsqrt();          # calculate square-root
-  $x->broot($y);        # $y'th root of $x (e.g. $y == 3 => cubic root)
-  $x->bfac();           # factorial of $x (1*2*3*4*..$x)
-
-  $x->bnok($y);         # x over y (binomial coefficient n over k)
-
-  $x->blog();           # logarithm of $x to base e (Euler's number)
-  $x->blog($base);      # logarithm of $x to base $base (f.i. 2)
-  $x->bexp();           # calculate e ** $x where e is Euler's number
-
-  $x->round($A,$P,$mode);  # round to accuracy or precision using
-                           # mode $mode
-  $x->bround($n);          # accuracy: preserve $n digits
-  $x->bfround($n);         # $n > 0: round $nth digits,
-                           # $n < 0: round to the $nth digit after the
-                           # dot, no-op for BigInts
-
-  # The following do not modify their arguments in BigInt (are no-ops),
-  # but do so in BigFloat:
-
-  $x->bfloor();            # round towards minus infinity
-  $x->bceil();             # round towards plus infinity
-  $x->bint();              # round towards zero
-
-  # The following do not modify their arguments:
-
-  # greatest common divisor (no OO style)
-  my $gcd = Math::BigInt::bgcd(@values);
-  # lowest common multiple (no OO style)
-  my $lcm = Math::BigInt::blcm(@values);
-
+  # Configuration methods (may be used as class methods and instance methods)
+
+  Math::BigInt->accuracy();     # get class accuracy
+  Math::BigInt->accuracy($n);   # set class accuracy
+  Math::BigInt->precision();    # get class precision
+  Math::BigInt->precision($n);  # set class precision
+  Math::BigInt->round_mode();   # get class rounding mode
+  Math::BigInt->round_mode($m); # set global round mode, must be one of
+                                # 'even', 'odd', '+inf', '-inf', 'zero',
+                                # 'trunc', or 'common'
+  Math::BigInt->config();       # return hash with configuration
+
+  # Constructor methods (when the class methods below are used as instance
+  # methods, the value is assigned the invocand)
+
+  $x = Math::BigInt->new($str);         # defaults to 0
+  $x = Math::BigInt->new('0x123');      # from hexadecimal
+  $x = Math::BigInt->new('0b101');      # from binary
+  $x = Math::BigInt->from_hex('cafe');  # from hexadecimal
+  $x = Math::BigInt->from_oct('377');   # from octal
+  $x = Math::BigInt->from_bin('1101');  # from binary
+  $x = Math::BigInt->bzero();           # create a +0
+  $x = Math::BigInt->bone();            # create a +1
+  $x = Math::BigInt->bone('-');         # create a -1
+  $x = Math::BigInt->binf();            # create a +inf
+  $x = Math::BigInt->binf('-');         # create a -inf
+  $x = Math::BigInt->bnan();            # create a Not-A-Number
+  $x = Math::BigInt->bpi();             # returns pi
+
+  $y = $x->copy();         # make a copy (unlike $y = $x)
+  $y = $x->as_int();       # return as a Math::BigInt
+
+  # Boolean methods (these don't modify the invocand)
+
+  $x->is_zero();          # if $x is 0
+  $x->is_one();           # if $x is +1
+  $x->is_one("+");        # ditto
+  $x->is_one("-");        # if $x is -1
+  $x->is_inf();           # if $x is +inf or -inf
+  $x->is_inf("+");        # if $x is +inf
+  $x->is_inf("-");        # if $x is -inf
+  $x->is_nan();           # if $x is NaN
+
+  $x->is_positive();      # if $x > 0
+  $x->is_pos();           # ditto
+  $x->is_negative();      # if $x < 0
+  $x->is_neg();           # ditto
+
+  $x->is_odd();           # if $x is odd
+  $x->is_even();          # if $x is even
+  $x->is_int();           # if $x is an integer
+
+  # Comparison methods
+
+  $x->bcmp($y);           # compare numbers (undef, < 0, == 0, > 0)
+  $x->bacmp($y);          # compare absolutely (undef, < 0, == 0, > 0)
+  $x->beq($y);            # true if and only if $x == $y
+  $x->bne($y);            # true if and only if $x != $y
+  $x->blt($y);            # true if and only if $x < $y
+  $x->ble($y);            # true if and only if $x <= $y
+  $x->bgt($y);            # true if and only if $x > $y
+  $x->bge($y);            # true if and only if $x >= $y
+
+  # Arithmetic methods
+
+  $x->bneg();             # negation
+  $x->babs();             # absolute value
+  $x->bsgn();             # sign function (-1, 0, 1, or NaN)
+  $x->bnorm();            # normalize (no-op)
+  $x->binc();             # increment $x by 1
+  $x->bdec();             # decrement $x by 1
+  $x->badd($y);           # addition (add $y to $x)
+  $x->bsub($y);           # subtraction (subtract $y from $x)
+  $x->bmul($y);           # multiplication (multiply $x by $y)
+  $x->bmuladd($y,$z);     # $x = $x * $y + $z
+  $x->bdiv($y);           # division (floored), set $x to quotient
+                          # return (quo,rem) or quo if scalar
+  $x->btdiv($y);          # division (truncated), set $x to quotient
+                          # return (quo,rem) or quo if scalar
+  $x->bmod($y);           # modulus (x % y)
+  $x->btmod($y);          # modulus (truncated)
+  $x->bmodinv($mod);      # modular multiplicative inverse
+  $x->bmodpow($y,$mod);   # modular exponentiation (($x ** $y) % $mod)
+  $x->bpow($y);           # power of arguments (x ** y)
+  $x->blog();             # logarithm of $x to base e (Euler's number)
+  $x->blog($base);        # logarithm of $x to base $base (e.g., base 2)
+  $x->bexp();             # calculate e ** $x where e is Euler's number
+  $x->bnok($y);           # x over y (binomial coefficient n over k)
+  $x->bsin();             # sine
+  $x->bcos();             # cosine
+  $x->batan();            # inverse tangent
+  $x->batan2($y);         # two-argument inverse tangent
+  $x->bsqrt();            # calculate square-root
+  $x->broot($y);          # $y'th root of $x (e.g. $y == 3 => cubic root)
+  $x->bfac();             # factorial of $x (1*2*3*4*..$x)
+
+  $x->blsft($n);          # left shift $n places in base 2
+  $x->blsft($n,$b);       # left shift $n places in base $b
+                          # returns (quo,rem) or quo (scalar context)
+  $x->brsft($n);          # right shift $n places in base 2
+  $x->brsft($n,$b);       # right shift $n places in base $b
+                          # returns (quo,rem) or quo (scalar context)
+
+  # Bitwise methods
+
+  $x->band($y);           # bitwise and
+  $x->bior($y);           # bitwise inclusive or
+  $x->bxor($y);           # bitwise exclusive or
+  $x->bnot();             # bitwise not (two's complement)
+
+  # Rounding methods
+  $x->round($A,$P,$mode); # round to accuracy or precision using
+                          # rounding mode $mode
+  $x->bround($n);         # accuracy: preserve $n digits
+  $x->bfround($n);        # $n > 0: round to $nth digit left of dec. point
+                          # $n < 0: round to $nth digit right of dec. point
+  $x->bfloor();           # round towards minus infinity
+  $x->bceil();            # round towards plus infinity
+  $x->bint();             # round towards zero
+
+  # Other mathematical methods
+
+  $x->bgcd($y);            # greatest common divisor
+  $x->blcm($y);            # least common multiple
+
+  # Object property methods (do not modify the invocand)
+
+  $x->sign();              # the sign, either +, - or NaN
+  $x->digit($n);           # the nth digit, counting from the right
+  $x->digit(-$n);          # the nth digit, counting from the left
   $x->length();            # return number of digits in number
   ($xl,$f) = $x->length(); # length of number and length of fraction
                            # part, latter is always 0 digits long
-                           # for BigInts
-
-  $x->exponent();         # return exponent as BigInt
-  $x->mantissa();         # return (signed) mantissa as BigInt
-  $x->parts();            # return (mantissa,exponent) as BigInt
-  $x->copy();             # make a true copy of $x (unlike $y = $x;)
-  $x->as_int();           # return as BigInt (in BigInt: same as copy())
-  $x->numify();           # return as scalar (might overflow!)
-
-  # conversion to string (do not modify their argument)
-  $x->bstr();         # normalized string (e.g. '3')
-  $x->bsstr();        # norm. string in scientific notation (e.g. '3E0')
+                           # for Math::BigInt objects
+  $x->mantissa();          # return (signed) mantissa as a Math::BigInt
+  $x->exponent();          # return exponent as a Math::BigInt
+  $x->parts();             # return (mantissa,exponent) as a Math::BigInt
+  $x->sparts();            # mantissa and exponent (as integers)
+  $x->nparts();            # mantissa and exponent (normalised)
+  $x->eparts();            # mantissa and exponent (engineering notation)
+  $x->dparts();            # integer and fraction part
+
+  # Conversion methods (do not modify the invocand)
+
+  $x->bstr();         # decimal notation, possibly zero padded
+  $x->bsstr();        # string in scientific notation with integers
+  $x->bnstr();        # string in normalized notation
+  $x->bestr();        # string in engineering notation
+  $x->bdstr();        # string in decimal notation
   $x->as_hex();       # as signed hexadecimal string with prefixed 0x
   $x->as_bin();       # as signed binary string with prefixed 0b
   $x->as_oct();       # as signed octal string with prefixed 0
 
+  # Other conversion methods
 
-  # precision and accuracy (see section about rounding for more)
-  $x->precision();       # return P of $x (or global, if P of $x undef)
-  $x->precision($n);     # set P of $x to $n
-  $x->accuracy();        # return A of $x (or global, if A of $x undef)
-  $x->accuracy($n);      # set A $x to $n
-
-  # Global methods
-  Math::BigInt->precision();   # get/set global P for all BigInt objects
-  Math::BigInt->accuracy();    # get/set global A for all BigInt objects
-  Math::BigInt->round_mode();  # get/set global round mode, one of
-                               # 'even', 'odd', '+inf', '-inf', 'zero',
-                               # 'trunc' or 'common'
-  Math::BigInt->config();      # return hash containing configuration
+  $x->numify();           # return as scalar (might overflow or underflow)
 
 =head1 DESCRIPTION
 
-All operators (including basic math operations) are overloaded if you
-declare your big integers as
+Math::BigInt provides support for arbitrary precision integers. Overloading is
+also provided for Perl operators.
+
+=head2 Input
 
-  $i = Math::BigInt -> new('123_456_789_123_456_789');
+Input values to these routines may be any scalar number or string that looks
+like a number and represents an integer.
 
-Operations with overloaded operators preserve the arguments which is
-exactly what you expect.
+=over
 
-=head2 Input
+=item *
+
+Leading and trailing whitespace is ignored.
+
+=item *
+
+Leading and trailing zeros are ignored.
 
-Input values to these routines may be any string, that looks like a number
-and results in an integer, including hexadecimal and binary numbers.
+=item *
+
+If the string has a "0x" prefix, it is interpreted as a hexadecimal number.
+
+=item *
+
+If the string has a "0b" prefix, it is interpreted as a binary number.
+
+=item *
+
+One underline is allowed between any two digits.
 
-Scalars holding numbers may also be passed, but note that non-integer numbers
-may already have lost precision due to the conversion to float. Quote
-your input if you want BigInt to see all the digits:
+=item *
 
-        $x = Math::BigInt->new(12345678890123456789);   # bad
-        $x = Math::BigInt->new('12345678901234567890'); # good
+If the string can not be interpreted, NaN is returned.
 
-You can include one underscore between any two digits.
+=back
 
-This means integer values like 1.01E2 or even 1000E-2 are also accepted.
-Non-integer values result in NaN.
+Octal numbers are typically prefixed by "0", but since leading zeros are
+stripped, these methods can not automatically recognize octal numbers, so use
+the constructor from_oct() to intepret octal strings.
 
-Hexadecimal (prefixed with "0x") and binary numbers (prefixed with "0b")
-are accepted, too. Please note that octal numbers are not recognized
-by new(), so the following will print "123":
+Some examples of valid string input
 
-        perl -MMath::BigInt -le 'print Math::BigInt->new("0123")'
+    Input string                Resulting value
+    123                         123
+    1.23e2                      123
+    12300e-2                    123
+    0xcafe                      51966
+    0b1101                      13
+    67_538_754                  67538754
+    -4_5_6.7_8_9e+0_1_0         -4567890000000
 
-To convert an octal number, use from_oct();
+Input given as scalar numbers might lose precision. Quote your input to ensure
+that no digits are lost:
 
-        perl -MMath::BigInt -le 'print Math::BigInt->from_oct("0123")'
+    $x = Math::BigInt->new( 56789012345678901234 );   # bad
+    $x = Math::BigInt->new('56789012345678901234');   # good
 
-Currently, Math::BigInt::new() defaults to 0, while Math::BigInt::new('')
+Currently, Math::BigInt->new() defaults to 0, while Math::BigInt->new('')
 results in 'NaN'. This might change in the future, so use always the following
 explicit forms to get a zero or NaN:
 
-        $zero = Math::BigInt->bzero();
-        $nan = Math::BigInt->bnan();
-
-C<bnorm()> on a BigInt object is now effectively a no-op, since the numbers
-are always stored in normalized form. If passed a string, creates a BigInt
-object from the input.
+    $zero = Math::BigInt->bzero();
+    $nan  = Math::BigInt->bnan();
 
 =head2 Output
 
-Output values are BigInt objects (normalized), except for the methods which
-return a string (see L</SYNOPSIS>).
+Output values are usually Math::BigInt objects.
+
+Boolean operators C<is_zero()>, C<is_one()>, C<is_inf()>, etc. return true or
+false.
 
-Some routines (C<is_odd()>, C<is_even()>, C<is_zero()>, C<is_one()>,
-C<is_nan()>, etc.) return true or false, while others (C<bcmp()>, C<bacmp()>)
-return either undef (if NaN is involved), <0, 0 or >0 and are suited for sort.
+Comparison operators C<bcmp()> and C<bacmp()>) return -1, 0, 1, or
+undef.
 
 =head1 METHODS
 
-Each of the methods below (except config(), accuracy() and precision())
-accepts three additional parameters. These arguments C<$A>, C<$P> and C<$R>
-are C<accuracy>, C<precision> and C<round_mode>. Please see the section about
+=head2 Configuration methods
+
+Each of the methods below (except config(), accuracy() and precision()) accepts
+three additional parameters. These arguments C<$A>, C<$P> and C<$R> are
+C<accuracy>, C<precision> and C<round_mode>. Please see the section about
 L</ACCURACY and PRECISION> for more information.
 
+Setting a class variable effects all object instance that are created
+afterwards.
+
 =over
 
+=item accuracy()
+
+    Math::BigInt->accuracy(5);      # set class accuracy
+    $x->accuracy(5);                # set instance accuracy
+
+    $A = Math::BigInt->accuracy();  # get class accuracy
+    $A = $x->accuracy();            # get instance accuracy
+
+Set or get the accuracy, i.e., the number of significant digits. The accuracy
+must be an integer. If the accuracy is set to C<undef>, no rounding is done.
+
+Alternatively, one can round the results explicitly using one of L</round()>,
+L</bround()> or L</bfround()> or by passing the desired accuracy to the method
+as an additional parameter:
+
+    my $x = Math::BigInt->new(30000);
+    my $y = Math::BigInt->new(7);
+    print scalar $x->copy()->bdiv($y, 2);               # prints 4300
+    print scalar $x->copy()->bdiv($y)->bround(2);       # prints 4300
+
+Please see the section about L</ACCURACY and PRECISION> for further details.
+
+    $y = Math::BigInt->new(1234567);    # $y is not rounded
+    Math::BigInt->accuracy(4);          # set class accuracy to 4
+    $x = Math::BigInt->new(1234567);    # $x is rounded automatically
+    print "$x $y";                      # prints "1235000 1234567"
+
+    print $x->accuracy();       # prints "4"
+    print $y->accuracy();       # also prints "4", since
+                                #   class accuracy is 4
+
+    Math::BigInt->accuracy(5);  # set class accuracy to 5
+    print $x->accuracy();       # prints "4", since instance
+                                #   accuracy is 4
+    print $y->accuracy();       # prints "5", since no instance
+                                #   accuracy, and class accuracy is 5
+
+Note: Each class has it's own globals separated from Math::BigInt, but it is
+possible to subclass Math::BigInt and make the globals of the subclass aliases
+to the ones from Math::BigInt.
+
+=item precision()
+
+    Math::BigInt->precision(-2);     # set class precision
+    $x->precision(-2);               # set instance precision
+
+    $P = Math::BigInt->precision();  # get class precision
+    $P = $x->precision();            # get instance precision
+
+Set or get the precision, i.e., the place to round relative to the decimal
+point. The precision must be a integer. Setting the precision to $P means that
+each number is rounded up or down, depending on the rounding mode, to the
+nearest multiple of 10**$P. If the precision is set to C<undef>, no rounding is
+done.
+
+You might want to use L</accuracy()> instead. With L</accuracy()> you set the
+number of digits each result should have, with L</precision()> you set the
+place where to round.
+
+Please see the section about L</ACCURACY and PRECISION> for further details.
+
+    $y = Math::BigInt->new(1234567);    # $y is not rounded
+    Math::BigInt->precision(4);         # set class precision to 4
+    $x = Math::BigInt->new(1234567);    # $x is rounded automatically
+    print $x;                           # prints "1230000"
+
+Note: Each class has its own globals separated from Math::BigInt, but it is
+possible to subclass Math::BigInt and make the globals of the subclass aliases
+to the ones from Math::BigInt.
+
+=item div_scale()
+
+Set/get the fallback accuracy. This is the accuracy used when neither accuracy
+nor precision is set explicitly. It is used when a computation might otherwise
+attempt to return an infinite number of digits.
+
+=item round_mode()
+
+Set/get the rounding mode.
+
+=item upgrade()
+
+Set/get the class for upgrading. When a computation might result in a
+non-integer, the operands are upgraded to this class. This is used for instance
+by L<bignum>. The default is C<undef>, thus the following operation creates
+a Math::BigInt, not a Math::BigFloat:
+
+    my $i = Math::BigInt->new(123);
+    my $f = Math::BigFloat->new('123.1');
+
+    print $i + $f, "\n";                # prints 246
+
+=item downgrade()
+
+Set/get the class for downgrading. The default is C<undef>. Downgrading is not
+done by Math::BigInt.
+
+=item modify()
+
+    $x->modify('bpowd');
+
+This method returns 0 if the object can be modified with the given operation,
+or 1 if not.
+
+This is used for instance by L<Math::BigInt::Constant>.
+
 =item config()
 
     use Data::Dumper;
@@ -3843,289 +4469,293 @@ appropriate information.
 
 The following values can be set by passing C<config()> a reference to a hash:
 
-        trap_inf trap_nan
-        upgrade downgrade precision accuracy round_mode div_scale
+        accuracy precision round_mode div_scale
+        upgrade downgrade trap_inf trap_nan
 
 Example:
 
-        $new_cfg = Math::BigInt->config(
-            { trap_inf => 1, precision => 5 }
-        );
+    $new_cfg = Math::BigInt->config(
+        { trap_inf => 1, precision => 5 }
+    );
 
-=item accuracy()
+=back
 
-    $x->accuracy(5);         # local for $x
-    CLASS->accuracy(5);      # global for all members of CLASS
-                             # Note: This also applies to new()!
+=head2 Constructor methods
 
-    $A = $x->accuracy();     # read out accuracy that affects $x
-    $A = CLASS->accuracy();  # read out global accuracy
+=over
 
-Set or get the global or local accuracy, aka how many significant digits the
-results have. If you set a global accuracy, then this also applies to new()!
+=item new()
 
-Warning! The accuracy I<sticks>, e.g. once you created a number under the
-influence of C<< CLASS->accuracy($A) >>, all results from math operations with
-that number will also be rounded.
+    $x = Math::BigInt->new($str,$A,$P,$R);
 
-In most cases, you should probably round the results explicitly using one of
-L</round()>, L</bround()> or L</bfround()> or by passing the desired accuracy
-to the math operation as additional parameter:
+Creates a new Math::BigInt object from a scalar or another Math::BigInt object.
+The input is accepted as decimal, hexadecimal (with leading '0x') or binary
+(with leading '0b').
 
-    my $x = Math::BigInt->new(30000);
-    my $y = Math::BigInt->new(7);
-    print scalar $x->copy()->bdiv($y, 2);               # print 4300
-    print scalar $x->copy()->bdiv($y)->bround(2);       # print 4300
+See L</Input> for more info on accepted input formats.
 
-Please see the section about L</ACCURACY and PRECISION> for further details.
+=item from_hex()
 
-Value must be greater than zero. Pass an undef value to disable it:
-
-    $x->accuracy(undef);
-    Math::BigInt->accuracy(undef);
-
-Returns the current accuracy. For C<< $x->accuracy() >> it will return either
-the local accuracy, or if not defined, the global. This means the return value
-represents the accuracy that will be in effect for $x:
-
-    $y = Math::BigInt->new(1234567);       # unrounded
-    print Math::BigInt->accuracy(4),"\n";  # set 4, print 4
-    $x = Math::BigInt->new(123456);        # $x will be automatic-
-                                           # ally rounded!
-    print "$x $y\n";                       # '123500 1234567'
-    print $x->accuracy(),"\n";             # will be 4
-    print $y->accuracy(),"\n";             # also 4, since
-                                           # global is 4
-    print Math::BigInt->accuracy(5),"\n";  # set to 5, print 5
-    print $x->accuracy(),"\n";             # still 4
-    print $y->accuracy(),"\n";             # 5, since global is 5
-
-Note: Works also for subclasses like Math::BigFloat. Each class has it's own
-globals separated from Math::BigInt, but it is possible to subclass
-Math::BigInt and make the globals of the subclass aliases to the ones from
-Math::BigInt.
+    $x = Math::BigInt->from_hex("0xcafe");    # input is hexadecimal
 
-=item precision()
+Interpret input as a hexadecimal string. A "0x" or "x" prefix is optional. A
+single underscore character may be placed right after the prefix, if present,
+or between any two digits. If the input is invalid, a NaN is returned.
 
-    $x->precision(-2);          # local for $x, round at the second
-                                # digit right of the dot
-    $x->precision(2);           # ditto, round at the second digit
-                                # left of the dot
+=item from_oct()
 
-    CLASS->precision(5);        # Global for all members of CLASS
-                                # This also applies to new()!
-    CLASS->precision(-5);       # ditto
+    $x = Math::BigInt->from_oct("0775");      # input is octal
 
-    $P = CLASS->precision();    # read out global precision
-    $P = $x->precision();       # read out precision that affects $x
+Interpret the input as an octal string and return the corresponding value. A
+"0" (zero) prefix is optional. A single underscore character may be placed
+right after the prefix, if present, or between any two digits. If the input is
+invalid, a NaN is returned.
 
-Note: You probably want to use L</accuracy()> instead. With L</accuracy()> you
-set the number of digits each result should have, with L</precision()> you
-set the place where to round!
+=item from_bin()
 
-C<precision()> sets or gets the global or local precision, aka at which digit
-before or after the dot to round all results. A set global precision also
-applies to all newly created numbers!
+    $x = Math::BigInt->from_bin("0b10011");   # input is binary
 
-In Math::BigInt, passing a negative number precision has no effect since no
-numbers have digits after the dot. In L<Math::BigFloat>, it will round all
-results to P digits after the dot.
+Interpret the input as a binary string. A "0b" or "b" prefix is optional. A
+single underscore character may be placed right after the prefix, if present,
+or between any two digits. If the input is invalid, a NaN is returned.
 
-Please see the section about L</ACCURACY and PRECISION> for further details.
+=item bzero()
 
-Pass an undef value to disable it:
+    $x = Math::BigInt->bzero();
+    $x->bzero();
 
-    $x->precision(undef);
-    Math::BigInt->precision(undef);
+Returns a new Math::BigInt object representing zero. If used as an instance
+method, assigns the value to the invocand.
 
-Returns the current precision. For C<< $x->precision() >> it will return either
-the local precision of $x, or if not defined, the global. This means the return
-value represents the prevision that will be in effect for $x:
+=item bone()
 
-    $y = Math::BigInt->new(1234567);        # unrounded
-    print Math::BigInt->precision(4),"\n";  # set 4, print 4
-    $x = Math::BigInt->new(123456);  # will be automatically rounded
-    print $x;                               # print "120000"!
+    $x = Math::BigInt->bone();          # +1
+    $x = Math::BigInt->bone("+");       # +1
+    $x = Math::BigInt->bone("-");       # -1
+    $x->bone();                         # +1
+    $x->bone("+");                      # +1
+    $x->bone('-');                      # -1
 
-Note: Works also for subclasses like L<Math::BigFloat>. Each class has its
-own globals separated from Math::BigInt, but it is possible to subclass
-Math::BigInt and make the globals of the subclass aliases to the ones from
-Math::BigInt.
+Creates a new Math::BigInt object representing one. The optional argument is
+either '-' or '+', indicating whether you want plus one or minus one. If used
+as an instance method, assigns the value to the invocand.
 
-=item brsft()
+=item binf()
 
-    $x->brsft($y,$n);
+    $x = Math::BigInt->binf($sign);
 
-Shifts $x right by $y in base $n. Default is base 2, used are usually 10 and
-2, but others work, too.
+Creates a new Math::BigInt object representing infinity. The optional argument
+is either '-' or '+', indicating whether you want infinity or minus infinity.
+If used as an instance method, assigns the value to the invocand.
 
-Right shifting usually amounts to dividing $x by $n ** $y and truncating the
-result:
+    $x->binf();
+    $x->binf('-');
 
+=item bnan()
 
-    $x = Math::BigInt->new(10);
-    $x->brsft(1);                       # same as $x >> 1: 5
-    $x = Math::BigInt->new(1234);
-    $x->brsft(2,10);                    # result 12
+    $x = Math::BigInt->bnan();
 
-There is one exception, and that is base 2 with negative $x:
+Creates a new Math::BigInt object representing NaN (Not A Number). If used as
+an instance method, assigns the value to the invocand.
 
+    $x->bnan();
 
-    $x = Math::BigInt->new(-5);
-    print $x->brsft(1);
+=item bpi()
 
-This will print -3, not -2 (as it would if you divide -5 by 2 and truncate the
-result).
+    $x = Math::BigInt->bpi(100);        # 3
+    $x->bpi(100);                       # 3
 
-=item new()
+Creates a new Math::BigInt object representing PI. If used as an instance
+method, assigns the value to the invocand. With Math::BigInt this always
+returns 3.
 
-    $x = Math::BigInt->new($str,$A,$P,$R);
+If upgrading is in effect, returns PI, rounded to N digits with the current
+rounding mode:
 
-Creates a new BigInt object from a scalar or another BigInt object. The
-input is accepted as decimal, hex (with leading '0x') or binary (with leading
-'0b').
+    use Math::BigFloat;
+    use Math::BigInt upgrade => "Math::BigFloat";
+    print Math::BigInt->bpi(3), "\n";           # 3.14
+    print Math::BigInt->bpi(100), "\n";         # 3.1415....
 
-See L</Input> for more info on accepted input formats.
+=item copy()
 
-=item from_oct()
+    $x->copy();         # make a true copy of $x (unlike $y = $x)
 
-    $x = Math::BigInt->from_oct("0775");      # input is octal
+=item as_int()
 
-Interpret the input as an octal string and return the corresponding value. A
-"0" (zero) prefix is optional. A single underscore character may be placed
-right after the prefix, if present, or between any two digits. If the input is
-invalid, a NaN is returned.
+=item as_number()
 
-=item from_hex()
+These methods are called when Math::BigInt encounters an object it doesn't know
+how to handle. For instance, assume $x is a Math::BigInt, or subclass thereof,
+and $y is defined, but not a Math::BigInt, or subclass thereof. If you do
 
-    $x = Math::BigInt->from_hex("0xcafe");    # input is hexadecimal
+    $x -> badd($y);
 
-Interpret input as a hexadecimal string. A "0x" or "x" prefix is optional. A
-single underscore character may be placed right after the prefix, if present,
-or between any two digits. If the input is invalid, a NaN is returned.
+$y needs to be converted into an object that $x can deal with. This is done by
+first checking if $y is something that $x might be upgraded to. If that is the
+case, no further attempts are made. The next is to see if $y supports the
+method C<as_int()>. If it does, C<as_int()> is called, but if it doesn't, the
+next thing is to see if $y supports the method C<as_number()>. If it does,
+C<as_number()> is called. The method C<as_int()> (and C<as_number()>) is
+expected to return either an object that has the same class as $x, a subclass
+thereof, or a string that C<ref($x)-E<gt>new()> can parse to create an object.
 
-=item from_bin()
+C<as_number()> is an alias to C<as_int()>. C<as_number> was introduced in
+v1.22, while C<as_int()> was introduced in v1.68.
 
-    $x = Math::BigInt->from_bin("0b10011");   # input is binary
+In Math::BigInt, C<as_int()> has the same effect as C<copy()>.
 
-Interpret the input as a binary string. A "0b" or "b" prefix is optional. A
-single underscore character may be placed right after the prefix, if present,
-or between any two digits. If the input is invalid, a NaN is returned.
+=back
 
-=item bnan()
+=head2 Boolean methods
 
-    $x = Math::BigInt->bnan();
+None of these methods modify the invocand object.
 
-Creates a new BigInt object representing NaN (Not A Number).
-If used on an object, it will set it to NaN:
+=over
 
-    $x->bnan();
+=item is_zero()
 
-=item bzero()
+    $x->is_zero();              # true if $x is 0
 
-    $x = Math::BigInt->bzero();
+Returns true if the invocand is zero and false otherwise.
 
-Creates a new BigInt object representing zero.
-If used on an object, it will set it to zero:
+=item is_one( [ SIGN ])
 
-    $x->bzero();
+    $x->is_one();               # true if $x is +1
+    $x->is_one("+");            # ditto
+    $x->is_one("-");            # true if $x is -1
 
-=item binf()
+Returns true if the invocand is one and false otherwise.
 
-    $x = Math::BigInt->binf($sign);
+=item is_finite()
 
-Creates a new BigInt object representing infinity. The optional argument is
-either '-' or '+', indicating whether you want infinity or minus infinity.
-If used on an object, it will set it to infinity:
+    $x->is_finite();    # true if $x is not +inf, -inf or NaN
 
-    $x->binf();
-    $x->binf('-');
+Returns true if the invocand is a finite number, i.e., it is neither +inf,
+-inf, nor NaN.
 
-=item bone()
+=item is_inf( [ SIGN ] )
 
-    $x = Math::BigInt->binf($sign);
+    $x->is_inf();               # true if $x is +inf
+    $x->is_inf("+");            # ditto
+    $x->is_inf("-");            # true if $x is -inf
 
-Creates a new BigInt object representing one. The optional argument is
-either '-' or '+', indicating whether you want one or minus one.
-If used on an object, it will set it to one:
+Returns true if the invocand is infinite and false otherwise.
 
-    $x->bone();         # +1
-    $x->bone('-');              # -1
+=item is_nan()
 
-=item is_one()/is_zero()/is_nan()/is_inf()
+    $x->is_nan();               # true if $x is NaN
 
-    $x->is_zero();              # true if arg is +0
-    $x->is_nan();               # true if arg is NaN
-    $x->is_one();               # true if arg is +1
-    $x->is_one('-');            # true if arg is -1
-    $x->is_inf();               # true if +inf
-    $x->is_inf('-');            # true if -inf (sign is default '+')
+=item is_positive()
 
-These methods all test the BigInt for being one specific value and return
-true or false depending on the input. These are faster than doing something
-like:
+=item is_pos()
 
-    if ($x == 0)
+    $x->is_positive();          # true if > 0
+    $x->is_pos();               # ditto
 
-=item is_pos()/is_neg()/is_positive()/is_negative()
+Returns true if the invocand is positive and false otherwise. A C<NaN> is
+neither positive nor negative.
 
-    $x->is_pos();                       # true if > 0
-    $x->is_neg();                       # true if < 0
+=item is_negative()
 
-The methods return true if the argument is positive or negative, respectively.
-C<NaN> is neither positive nor negative, while C<+inf> counts as positive, and
-C<-inf> is negative. A C<zero> is neither positive nor negative.
+=item is_neg()
 
-These methods are only testing the sign, and not the value.
+    $x->is_negative();          # true if < 0
+    $x->is_neg();               # ditto
 
-C<is_positive()> and C<is_negative()> are aliases to C<is_pos()> and
-C<is_neg()>, respectively. C<is_positive()> and C<is_negative()> were
-introduced in v1.36, while C<is_pos()> and C<is_neg()> were only introduced
-in v1.68.
+Returns true if the invocand is negative and false otherwise. A C<NaN> is
+neither positive nor negative.
 
-=item is_odd()/is_even()/is_int()
+=item is_odd()
 
     $x->is_odd();               # true if odd, false for even
-    $x->is_even();              # true if even, false for odd
-    $x->is_int();               # true if $x is an integer
 
-The return true when the argument satisfies the condition. C<NaN>, C<+inf>,
+Returns true if the invocand is odd and false otherwise. C<NaN>, C<+inf>, and
+C<-inf> are neither odd nor even.
+
+=item is_even()
+
+    $x->is_even();              # true if $x is even
+
+Returns true if the invocand is even and false otherwise. C<NaN>, C<+inf>,
 C<-inf> are not integers and are neither odd nor even.
 
-In BigInt, all numbers except C<NaN>, C<+inf> and C<-inf> are integers.
+=item is_int()
+
+    $x->is_int();               # true if $x is an integer
+
+Returns true if the invocand is an integer and false otherwise. C<NaN>,
+C<+inf>, C<-inf> are not integers.
+
+=back
+
+=head2 Comparison methods
+
+None of these methods modify the invocand object. Note that a C<NaN> is neither
+less than, greater than, or equal to anything else, even a C<NaN>.
+
+=over
 
 =item bcmp()
 
     $x->bcmp($y);
 
-Compares $x with $y and takes the sign into account.
-Returns -1, 0, 1 or undef.
+Returns -1, 0, 1 depending on whether $x is less than, equal to, or grater than
+$y. Returns undef if any operand is a NaN.
 
 =item bacmp()
 
     $x->bacmp($y);
 
-Compares $x with $y while ignoring their sign. Returns -1, 0, 1 or undef.
+Returns -1, 0, 1 depending on whether the absolute value of $x is less than,
+equal to, or grater than the absolute value of $y. Returns undef if any operand
+is a NaN.
 
-=item sign()
+=item beq()
 
-    $x->sign();
+    $x -> beq($y);
 
-Return the sign, of $x, meaning either C<+>, C<->, C<-inf>, C<+inf> or NaN.
+Returns true if and only if $x is equal to $y, and false otherwise.
 
-If you want $x to have a certain sign, use one of the following methods:
+=item bne()
 
-    $x->babs();                 # '+'
-    $x->babs()->bneg();         # '-'
-    $x->bnan();                 # 'NaN'
-    $x->binf();                 # '+inf'
-    $x->binf('-');              # '-inf'
+    $x -> bne($y);
+
+Returns true if and only if $x is not equal to $y, and false otherwise.
+
+=item blt()
+
+    $x -> blt($y);
+
+Returns true if and only if $x is equal to $y, and false otherwise.
+
+=item ble()
+
+    $x -> ble($y);
+
+Returns true if and only if $x is less than or equal to $y, and false
+otherwise.
+
+=item bgt()
+
+    $x -> bgt($y);
+
+Returns true if and only if $x is greater than $y, and false otherwise.
+
+=item bge()
+
+    $x -> bge($y);
+
+Returns true if and only if $x is greater than or equal to $y, and false
+otherwise.
+
+=back
 
-=item digit()
+=head2 Arithmetic methods
 
-    $x->digit($n);       # return the nth digit, counting from right
+These methods modify the invocand object and returns it.
 
-If C<$n> is negative, returns the digit counting from left.
+=over
 
 =item bneg()
 
@@ -4153,15 +4783,8 @@ number is negative, zero, or positive, respectively. Does not modify NaNs.
 
     $x->bnorm();                        # normalize (no-op)
 
-=item bnot()
-
-    $x->bnot();
-
-Two's complement (bitwise not). This is equivalent to
-
-    $x->binc()->bneg();
-
-but faster.
+Normalize the number. This is a no-op and is provided only for backwards
+compatibility.
 
 =item binc()
 
@@ -4195,18 +4818,57 @@ This method was added in v1.87 of Math::BigInt (June 2007).
 
     $x->bdiv($y);               # divide, set $x to quotient
 
-Returns $x divided by $y. In list context, does floored division (F-division),
-where the quotient is the greatest integer less than or equal to the quotient
-of the two operands. Consequently, the remainder is either zero or has the same
-sign as the second operand. In scalar context, only the quotient is returned.
+Divides $x by $y by doing floored division (F-division), where the quotient is
+the floored (rounded towards negative infinity) quotient of the two operands.
+In list context, returns the quotient and the remainder. The remainder is
+either zero or has the same sign as the second operand. In scalar context, only
+the quotient is returned.
+
+The quotient is always the greatest integer less than or equal to the
+real-valued quotient of the two operands, and the remainder (when it is
+non-zero) always has the same sign as the second operand; so, for example,
+
+      1 /  4  => ( 0,  1)
+      1 / -4  => (-1, -3)
+     -3 /  4  => (-1,  1)
+     -3 / -4  => ( 0, -3)
+    -11 /  2  => (-5,  1)
+     11 / -2  => (-5, -1)
+
+The behavior of the overloaded operator % agrees with the behavior of Perl's
+built-in % operator (as documented in the perlop manpage), and the equation
+
+    $x == ($x / $y) * $y + ($x % $y)
+
+holds true for any finite $x and finite, non-zero $y.
+
+Perl's "use integer" might change the behaviour of % and / for scalars. This is
+because under 'use integer' Perl does what the underlying C library thinks is
+right, and this varies. However, "use integer" does not change the way things
+are done with Math::BigInt objects.
+
+=item btdiv()
+
+    $x->btdiv($y);              # divide, set $x to quotient
+
+Divides $x by $y by doing truncated division (T-division), where quotient is
+the truncated (rouneded towards zero) quotient of the two operands. In list
+context, returns the quotient and the remainder. The remainder is either zero
+or has the same sign as the first operand. In scalar context, only the quotient
+is returned.
 
 =item bmod()
 
     $x->bmod($y);               # modulus (x % y)
 
-Returns $x modulo $y. When $x is finite, and $y is finite and non-zero, the
-result is identical to the remainder after floored division (F-division), i.e.,
-identical to the result from Perl's % operator.
+Returns $x modulo $y, i.e., the remainder after floored division (F-division).
+This method is like Perl's % operator. See L</bdiv()>.
+
+=item btmod()
+
+    $x->btmod($y);              # modulus
+
+Returns the remainer after truncated division (T-division). See L</btdiv()>.
 
 =item bmodinv()
 
@@ -4249,19 +4911,31 @@ is exactly equivalent to
 
 =item bpow()
 
-    $x->bpow($y);                     # power of arguments (x ** y)
+    $x->bpow($y);               # power of arguments (x ** y)
+
+C<bpow()> (and the rounding functions) now modifies the first argument and
+returns it, unlike the old code which left it alone and only returned the
+result. This is to be consistent with C<badd()> etc. The first three modifies
+$x, the last one won't:
+
+    print bpow($x,$i),"\n";         # modify $x
+    print $x->bpow($i),"\n";        # ditto
+    print $x **= $i,"\n";           # the same
+    print $x ** $i,"\n";            # leave $x alone
+
+The form C<$x **= $y> is faster than C<$x = $x ** $y;>, though.
 
 =item blog()
 
-    $x->blog($base, $accuracy);   # logarithm of x to the base $base
+    $x->blog($base, $accuracy);         # logarithm of x to the base $base
 
 If C<$base> is not defined, Euler's number (e) is used:
 
-    print $x->blog(undef, 100);       # log(x) to 100 digits
+    print $x->blog(undef, 100);         # log(x) to 100 digits
 
 =item bexp()
 
-    $x->bexp($accuracy);              # calculate e ** X
+    $x->bexp($accuracy);                # calculate e ** X
 
 Calculates the expression C<e ** $x> where C<e> is Euler's number.
 
@@ -4271,31 +4945,26 @@ See also L</blog()>.
 
 =item bnok()
 
-    $x->bnok($y);         # x over y (binomial coefficient n over k)
+    $x->bnok($y);               # x over y (binomial coefficient n over k)
 
 Calculates the binomial coefficient n over k, also called the "choose"
 function. The result is equivalent to:
 
-        ( n )      n!
-        | - |  = -------
-        ( k )    k!(n-k)!
+    ( n )      n!
+    | - |  = -------
+    ( k )    k!(n-k)!
 
 This method was added in v1.84 of Math::BigInt (April 2007).
 
-=item bpi()
-
-    print Math::BigInt->bpi(100), "\n";         # 3
+=item bsin()
 
-Returns PI truncated to an integer, with the argument being ignored. This means
-under BigInt this always returns C<3>.
+    my $x = Math::BigInt->new(1);
+    print $x->bsin(100), "\n";
 
-If upgrading is in effect, returns PI, rounded to N digits with the
-current rounding mode:
+Calculate the sine of $x, modifying $x in place.
 
-    use Math::BigFloat;
-    use Math::BigInt upgrade => Math::BigFloat;
-    print Math::BigInt->bpi(3), "\n";           # 3.14
-    print Math::BigInt->bpi(100), "\n";         # 3.1415....
+In Math::BigInt, unless upgrading is in effect, the result is truncated to an
+integer.
 
 This method was added in v1.87 of Math::BigInt (June 2007).
 
@@ -4304,21 +4973,21 @@ This method was added in v1.87 of Math::BigInt (June 2007).
     my $x = Math::BigInt->new(1);
     print $x->bcos(100), "\n";
 
-Calculate the cosinus of $x, modifying $x in place.
+Calculate the cosine of $x, modifying $x in place.
 
-In BigInt, unless upgrading is in effect, the result is truncated to an
+In Math::BigInt, unless upgrading is in effect, the result is truncated to an
 integer.
 
 This method was added in v1.87 of Math::BigInt (June 2007).
 
-=item bsin()
+=item batan()
 
-    my $x = Math::BigInt->new(1);
-    print $x->bsin(100), "\n";
+    my $x = Math::BigFloat->new(0.5);
+    print $x->batan(100), "\n";
 
-Calculate the sinus of $x, modifying $x in place.
+Calculate the arcus tangens of $x, modifying $x in place.
 
-In BigInt, unless upgrading is in effect, the result is truncated to an
+In Math::BigInt, unless upgrading is in effect, the result is truncated to an
 integer.
 
 This method was added in v1.87 of Math::BigInt (June 2007).
@@ -4331,32 +5000,61 @@ This method was added in v1.87 of Math::BigInt (June 2007).
 
 Calculate the arcus tangens of C<$y> divided by C<$x>, modifying $y in place.
 
-In BigInt, unless upgrading is in effect, the result is truncated to an
+In Math::BigInt, unless upgrading is in effect, the result is truncated to an
 integer.
 
 This method was added in v1.87 of Math::BigInt (June 2007).
 
-=item batan()
+=item bsqrt()
 
-    my $x = Math::BigFloat->new(0.5);
-    print $x->batan(100), "\n";
+    $x->bsqrt();                # calculate square-root
 
-Calculate the arcus tangens of $x, modifying $x in place.
+C<bsqrt()> returns the square root truncated to an integer.
 
-In BigInt, unless upgrading is in effect, the result is truncated to an
-integer.
+If you want a better approximation of the square root, then use:
 
-This method was added in v1.87 of Math::BigInt (June 2007).
+    $x = Math::BigFloat->new(12);
+    Math::BigFloat->precision(0);
+    Math::BigFloat->round_mode('even');
+    print $x->copy->bsqrt(),"\n";           # 4
 
-=item blsft()
+    Math::BigFloat->precision(2);
+    print $x->bsqrt(),"\n";                 # 3.46
+    print $x->bsqrt(3),"\n";                # 3.464
+
+=item broot()
+
+    $x->broot($N);
+
+Calculates the N'th root of C<$x>.
+
+=item bfac()
 
-    $x->blsft($y);              # left shift in base 2
-    $x->blsft($y,$n);           # left shift, in base $n (like 10)
+    $x->bfac();                 # factorial of $x (1*2*3*4*..*$x)
 
 =item brsft()
 
-    $x->brsft($y);              # right shift in base 2
-    $x->brsft($y,$n);           # right shift, in base $n (like 10)
+    $x->brsft($n);              # right shift $n places in base 2
+    $x->brsft($n, $b);          # right shift $n places in base $b
+
+The latter is equivalent to
+
+    $x -> bdiv($b -> copy() -> bpow($n))
+
+=item blsft()
+
+    $x->blsft($n);              # left shift $n places in base 2
+    $x->blsft($n, $b);          # left shift $n places in base $b
+
+The latter is equivalent to
+
+    $x -> bmul($b -> copy() -> bpow($n))
+
+=back
+
+=head2 Bitwise methods
+
+=over
 
 =item band()
 
@@ -4374,19 +5072,15 @@ This method was added in v1.87 of Math::BigInt (June 2007).
 
     $x->bnot();                 # bitwise not (two's complement)
 
-=item bsqrt()
-
-    $x->bsqrt();                # calculate square-root
-
-=item broot()
+Two's complement (bitwise not). This is equivalent to, but faster than,
 
-    $x->broot($N);
+    $x->binc()->bneg();
 
-Calculates the N'th root of C<$x>.
+=back
 
-=item bfac()
+=head2 Rounding methods
 
-    $x->bfac();                 # factorial of $x (1*2*3*4*..$x)
+=over
 
 =item round()
 
@@ -4399,178 +5093,264 @@ C<$round_mode>.
 
     $x->bround($N);               # accuracy: preserve $N digits
 
+Rounds $x to an accuracy of $N digits.
+
 =item bfround()
 
     $x->bfround($N);
 
-If N is > 0, rounds to the Nth digit from the left. If N < 0, rounds to
-the Nth digit after the dot. Since BigInts are integers, the case N < 0
-is a no-op for them.
+Rounds to a multiple of 10**$N. Examples:
 
-Examples:
+    Input            N          Result
 
-        Input           N               Result
-        ===================================================
-        123456.123456   3               123500
-        123456.123456   2               123450
-        123456.123456   -2              123456.12
-        123456.123456   -3              123456.123
+    123456.123456    3          123500
+    123456.123456    2          123450
+    123456.123456   -2          123456.12
+    123456.123456   -3          123456.123
 
 =item bfloor()
 
     $x->bfloor();
 
-Round $x towards minus infinity (i.e., set $x to the largest integer less than
-or equal to $x). This is a no-op in BigInt, but changes $x in BigFloat, if $x
-is not an integer.
+Round $x towards minus infinity, i.e., set $x to the largest integer less than
+or equal to $x.
 
 =item bceil()
 
     $x->bceil();
 
-Round $x towards plus infinity (i.e., set $x to the smallest integer greater
-than or equal to $x). This is a no-op in BigInt, but changes $x in BigFloat, if
-$x is not an integer.
+Round $x towards plus infinity, i.e., set $x to the smallest integer greater
+than or equal to $x).
 
 =item bint()
 
     $x->bint();
 
-Round $x towards zero. This is a no-op in BigInt, but changes $x in BigFloat,
-if $x is not an integer.
+Round $x towards zero.
+
+=back
+
+=head2 Other mathematical methods
+
+=over
 
 =item bgcd()
 
-    bgcd(@values);           # greatest common divisor (no OO style)
+    $x -> bgcd($y);             # GCD of $x and $y
+    $x -> bgcd($y, $z, ...);    # GCD of $x, $y, $z, ...
+
+Returns the greatest common divisor (GCD).
 
 =item blcm()
 
-    blcm(@values);           # lowest common multiple (no OO style)
+    $x -> blcm($y);             # LCM of $x and $y
+    $x -> blcm($y, $z, ...);    # LCM of $x, $y, $z, ...
+
+Returns the least common multiple (LCM).
+
+=back
+
+=head2 Object property methods
+
+=over
+
+=item sign()
+
+    $x->sign();
+
+Return the sign, of $x, meaning either C<+>, C<->, C<-inf>, C<+inf> or NaN.
+
+If you want $x to have a certain sign, use one of the following methods:
+
+    $x->babs();                 # '+'
+    $x->babs()->bneg();         # '-'
+    $x->bnan();                 # 'NaN'
+    $x->binf();                 # '+inf'
+    $x->binf('-');              # '-inf'
+
+=item digit()
+
+    $x->digit($n);       # return the nth digit, counting from right
+
+If C<$n> is negative, returns the digit counting from left.
 
 =item length()
 
     $x->length();
-    ($xl,$fl) = $x->length();
+    ($xl, $fl) = $x->length();
 
-Returns the number of digits in the decimal representation of the number.
-In list context, returns the length of the integer and fraction part. For
-BigInt's, the length of the fraction part will always be 0.
+Returns the number of digits in the decimal representation of the number. In
+list context, returns the length of the integer and fraction part. For
+Math::BigInt objects, the length of the fraction part is always 0.
 
-=item exponent()
+The following probably doesn't do what you expect:
 
-    $x->exponent();
+    $c = Math::BigInt->new(123);
+    print $c->length(),"\n";                # prints 30
+
+It prints both the number of digits in the number and in the fraction part
+since print calls C<length()> in list context. Use something like:
 
-Return the exponent of $x as BigInt.
+    print scalar $c->length(),"\n";         # prints 3
 
 =item mantissa()
 
     $x->mantissa();
 
-Return the signed mantissa of $x as BigInt.
+Return the signed mantissa of $x as a Math::BigInt.
+
+=item exponent()
+
+    $x->exponent();
+
+Return the exponent of $x as a Math::BigInt.
 
 =item parts()
 
-    $x->parts();        # return (mantissa,exponent) as BigInt
+    $x->parts();
 
-=item copy()
+Returns the significand (mantissa) and the exponent as integers. In
+Math::BigFloat, both are returned as Math::BigInt objects.
 
-    $x->copy();         # make a true copy of $x (unlike $y = $x;)
+=item sparts()
 
-=item as_int()
+Returns the significand (mantissa) and the exponent as integers. In scalar
+context, only the significand is returned. The significand is the integer with
+the smallest absolute value. The output of C<sparts()> corresponds to the
+output from C<bsstr()>.
 
-=item as_number()
+In Math::BigInt, this method is identical to C<parts()>.
 
-These methods are called when Math::BigInt encounters an object it doesn't know
-how to handle. For instance, assume $x is a Math::BigInt, or subclass thereof,
-and $y is defined, but not a Math::BigInt, or subclass thereof. If you do
+=item nparts()
 
-    $x -> badd($y);
+Returns the significand (mantissa) and exponent corresponding to normalized
+notation. In scalar context, only the significand is returned. For finite
+non-zero numbers, the significand's absolute value is greater than or equal to
+1 and less than 10. The output of C<nparts()> corresponds to the output from
+C<bnstr()>. In Math::BigInt, if the significand can not be represented as an
+integer, upgrading is performed or NaN is returned.
 
-$y needs to be converted into an object that $x can deal with. This is done by
-first checking if $y is something that $x might be upgraded to. If that is the
-case, no further attempts are made. The next is to see if $y supports the
-method C<as_int()>. If it does, C<as_int()> is called, but if it doesn't, the
-next thing is to see if $y supports the method C<as_number()>. If it does,
-C<as_number()> is called. The method C<as_int()> (and C<as_number()>) is
-expected to return either an object that has the same class as $x, a subclass
-thereof, or a string that C<ref($x)-E<gt>new()> can parse to create an object.
+=item eparts()
 
-C<as_number()> is an alias to C<as_int()>. C<as_number> was introduced in
-v1.22, while C<as_int()> was introduced in v1.68.
+Returns the significand (mantissa) and exponent corresponding to engineering
+notation. In scalar context, only the significand is returned. For finite
+non-zero numbers, the significand's absolute value is greater than or equal to
+1 and less than 1000, and the exponent is a multiple of 3. The output of
+C<eparts()> corresponds to the output from C<bestr()>. In Math::BigInt, if the
+significand can not be represented as an integer, upgrading is performed or NaN
+is returned.
 
-In Math::BigInt, C<as_int()> has the same effect as C<copy()>.
+=item dparts()
 
-=item bstr()
+Returns the integer part and the fraction part. If the fraction part can not be
+represented as an integer, upgrading is performed or NaN is returned. The
+output of C<dparts()> corresponds to the output from C<bdstr()>.
+
+=back
+
+=head2 String conversion methods
 
-    $x->bstr();
+=over
+
+=item bstr()
 
-Returns a normalized string representation of C<$x>.
+Returns a string representing the number using decimal notation. In
+Math::BigFloat, the output is zero padded according to the current accuracy or
+precision, if any of those are defined.
 
 =item bsstr()
 
-    $x->bsstr();     # normalized string in scientific notation
+Returns a string representing the number using scientific notation where both
+the significand (mantissa) and the exponent are integers. The output
+corresponds to the output from C<sparts()>.
 
-=item as_hex()
+      123 is returned as "123e+0"
+     1230 is returned as "123e+1"
+    12300 is returned as "123e+2"
+    12000 is returned as "12e+3"
+    10000 is returned as "1e+4"
 
-    $x->as_hex();    # as signed hexadecimal string with prefixed 0x
+=item bnstr()
 
-=item as_bin()
+Returns a string representing the number using normalized notation, the most
+common variant of scientific notation. For finite non-zero numbers, the
+absolute value of the significand is less than or equal to 1 and less than 10.
+The output corresponds to the output from C<nparts()>.
 
-    $x->as_bin();    # as signed binary string with prefixed 0b
+      123 is returned as "1.23e+2"
+     1230 is returned as "1.23e+3"
+    12300 is returned as "1.23e+4"
+    12000 is returned as "1.2e+4"
+    10000 is returned as "1e+4"
 
-=item as_oct()
+=item bestr()
 
-    $x->as_oct();    # as signed octal string with prefixed 0
+Returns a string representing the number using engineering notation. For finite
+non-zero numbers, the absolute value of the significand is less than or equal
+to 1 and less than 1000, and the exponent is a multiple of 3. The output
+corresponds to the output from C<eparts()>.
 
-=item numify()
+      123 is returned as "123e+0"
+     1230 is returned as "1.23e+3"
+    12300 is returned as "12.3e+3"
+    12000 is returned as "12e+3"
+    10000 is returned as "10e+3"
 
-        print $x->numify();
+=item bdstr()
 
-This returns a normal Perl scalar from $x. It is used automatically
-whenever a scalar is needed, for instance in array index operations.
+Returns a string representing the number using decimal notation. The output
+corresponds to the output from C<dparts()>.
 
-This loses precision, to avoid this use L</as_int()> instead.
+      123 is returned as "123"
+     1230 is returned as "1230"
+    12300 is returned as "12300"
+    12000 is returned as "12000"
+    10000 is returned as "10000"
 
-=item modify()
+=item as_hex()
 
-    $x->modify('bpowd');
+    $x->as_hex();
 
-This method returns 0 if the object can be modified with the given
-operation, or 1 if not.
+Returns a string representing the number using hexadecimal notation. The output
+is prefixed by "0x".
 
-This is used for instance by L<Math::BigInt::Constant>.
+=item as_bin()
 
-=item upgrade()/downgrade()
+    $x->as_bin();
 
-Set/get the class for downgrade/upgrade operations. Thuis is used
-for instance by L<bignum>. The defaults are '', thus the following
-operation will create a BigInt, not a BigFloat:
+Returns a string representing the number using binary notation. The output is
+prefixed by "0b".
 
-        my $i = Math::BigInt->new(123);
-        my $f = Math::BigFloat->new('123.1');
+=item as_oct()
 
-        print $i + $f,"\n";                     # print 246
+    $x->as_oct();
 
-=item div_scale()
+Returns a string representing the number using octal notation. The output is
+prefixed by "0".
 
-Set/get the number of digits for the default precision in divide
-operations.
+=back
 
-=item round_mode()
+=head2 Other conversion methods
 
-Set/get the current round mode.
+=over
+
+=item numify()
+
+    print $x->numify();
+
+Returns a Perl scalar from $x. It is used automatically whenever a scalar is
+needed, for instance in array index operations.
 
 =back
 
 =head1 ACCURACY and PRECISION
 
-Since version v1.33, Math::BigInt and Math::BigFloat have full support for
-accuracy and precision based rounding, both automatically after every
-operation, as well as manually.
+Math::BigInt and Math::BigFloat have full support for accuracy and precision
+based rounding, both automatically after every operation, as well as manually.
 
-This section describes the accuracy/precision handling in Math::Big* as it
-used to be and as it is now, complete with an explanation of all terms and
-abbreviations.
+This section describes the accuracy/precision handling in Math::BigInt and
+Math::BigFloat as it used to be and as it is now, complete with an explanation
+of all terms and abbreviations.
 
 Not yet implemented things (but with correct description) are marked with '!',
 things that need to be answered are marked with '?'.
@@ -4579,49 +5359,48 @@ In the next paragraph follows a short description of terms used here (because
 these may differ from terms used by others people or documentation).
 
 During the rest of this document, the shortcuts A (for accuracy), P (for
-precision), F (fallback) and R (rounding mode) will be used.
+precision), F (fallback) and R (rounding mode) are be used.
 
 =head2 Precision P
 
-A fixed number of digits before (positive) or after (negative)
-the decimal point. For example, 123.45 has a precision of -2. 0 means an
-integer like 123 (or 120). A precision of 2 means two digits to the left
-of the decimal point are zero, so 123 with P = 1 becomes 120. Note that
-numbers with zeros before the decimal point may have different precisions,
-because 1200 can have p = 0, 1 or 2 (depending on what the initial value
-was). It could also have p < 0, when the digits after the decimal point
-are zero.
-
-The string output (of floating point numbers) will be padded with zeros:
-
-        Initial value   P       A       Result          String
-        ------------------------------------------------------------
-        1234.01         -3              1000            1000
-        1234            -2              1200            1200
-        1234.5          -1              1230            1230
-        1234.001        1               1234            1234.0
-        1234.01         0               1234            1234
-        1234.01         2               1234.01         1234.01
-        1234.01         5               1234.01         1234.01000
-
-For BigInts, no padding occurs.
+Precision is a fixed number of digits before (positive) or after (negative) the
+decimal point. For example, 123.45 has a precision of -2. 0 means an integer
+like 123 (or 120). A precision of 2 means at least two digits to the left of
+the decimal point are zero, so 123 with P = 1 becomes 120. Note that numbers
+with zeros before the decimal point may have different precisions, because 1200
+can have P = 0, 1 or 2 (depending on what the initial value was). It could also
+have p < 0, when the digits after the decimal point are zero.
+
+The string output (of floating point numbers) is padded with zeros:
+
+    Initial value    P      A       Result          String
+    ------------------------------------------------------------
+    1234.01         -3              1000            1000
+    1234            -2              1200            1200
+    1234.5          -1              1230            1230
+    1234.001         1              1234            1234.0
+    1234.01          0              1234            1234
+    1234.01          2              1234.01         1234.01
+    1234.01          5              1234.01         1234.01000
+
+For Math::BigInt objects, no padding occurs.
 
 =head2 Accuracy A
 
-Number of significant digits. Leading zeros are not counted. A
-number may have an accuracy greater than the non-zero digits
-when there are zeros in it or trailing zeros. For example, 123.456 has
-A of 6, 10203 has 5, 123.0506 has 7, 123.450000 has 8 and 0.000123 has 3.
+Number of significant digits. Leading zeros are not counted. A number may have
+an accuracy greater than the non-zero digits when there are zeros in it or
+trailing zeros. For example, 123.456 has A of 6, 10203 has 5, 123.0506 has 7,
+123.45000 has 8 and 0.000123 has 3.
 
-The string output (of floating point numbers) will be padded with zeros:
+The string output (of floating point numbers) is padded with zeros:
 
-        Initial value   P       A       Result          String
-        ------------------------------------------------------------
-        1234.01                 3       1230            1230
-        1234.01                 6       1234.01         1234.01
-        1234.1                  8       1234.1          1234.1000
+    Initial value    P      A       Result          String
+    ------------------------------------------------------------
+    1234.01                 3       1230            1230
+    1234.01                 6       1234.01         1234.01
+    1234.1                  8       1234.1          1234.1000
 
-For BigInts, no padding occurs.
+For Math::BigInt objects, no padding occurs.
 
 =head2 Fallback F
 
@@ -4630,74 +5409,67 @@ dividing numbers.
 
 =head2 Rounding mode R
 
-When rounding a number, different 'styles' or 'kinds'
-of rounding are possible. (Note that random rounding, as in
-Math::Round, is not implemented.)
+When rounding a number, different 'styles' or 'kinds' of rounding are possible.
+(Note that random rounding, as in Math::Round, is not implemented.)
 
 =over
 
 =item 'trunc'
 
-truncation invariably removes all digits following the
-rounding place, replacing them with zeros. Thus, 987.65 rounded
-to tens (P=1) becomes 980, and rounded to the fourth sigdig
-becomes 987.6 (A=4). 123.456 rounded to the second place after the
-decimal point (P=-2) becomes 123.46.
-
-All other implemented styles of rounding attempt to round to the
-"nearest digit." If the digit D immediately to the right of the
-rounding place (skipping the decimal point) is greater than 5, the
-number is incremented at the rounding place (possibly causing a
-cascade of incrementation): e.g. when rounding to units, 0.9 rounds
-to 1, and -19.9 rounds to -20. If D < 5, the number is similarly
-truncated at the rounding place: e.g. when rounding to units, 0.4
+truncation invariably removes all digits following the rounding place,
+replacing them with zeros. Thus, 987.65 rounded to tens (P = 1) becomes 980,
+and rounded to the fourth sigdig becomes 987.6 (A = 4). 123.456 rounded to the
+second place after the decimal point (P = -2) becomes 123.46.
+
+All other implemented styles of rounding attempt to round to the "nearest
+digit." If the digit D immediately to the right of the rounding place (skipping
+the decimal point) is greater than 5, the number is incremented at the rounding
+place (possibly causing a cascade of incrementation): e.g. when rounding to
+units, 0.9 rounds to 1, and -19.9 rounds to -20. If D < 5, the number is
+similarly truncated at the rounding place: e.g. when rounding to units, 0.4
 rounds to 0, and -19.4 rounds to -19.
 
-However the results of other styles of rounding differ if the
-digit immediately to the right of the rounding place (skipping the
-decimal point) is 5 and if there are no digits, or no digits other
-than 0, after that 5. In such cases:
+However the results of other styles of rounding differ if the digit immediately
+to the right of the rounding place (skipping the decimal point) is 5 and if
+there are no digits, or no digits other than 0, after that 5. In such cases:
 
 =item 'even'
 
-rounds the digit at the rounding place to 0, 2, 4, 6, or 8
-if it is not already. E.g., when rounding to the first sigdig, 0.45
-becomes 0.4, -0.55 becomes -0.6, but 0.4501 becomes 0.5.
+rounds the digit at the rounding place to 0, 2, 4, 6, or 8 if it is not
+already. E.g., when rounding to the first sigdig, 0.45 becomes 0.4, -0.55
+becomes -0.6, but 0.4501 becomes 0.5.
 
 =item 'odd'
 
-rounds the digit at the rounding place to 1, 3, 5, 7, or 9 if
-it is not already. E.g., when rounding to the first sigdig, 0.45
-becomes 0.5, -0.55 becomes -0.5, but 0.5501 becomes 0.6.
+rounds the digit at the rounding place to 1, 3, 5, 7, or 9 if it is not
+already. E.g., when rounding to the first sigdig, 0.45 becomes 0.5, -0.55
+becomes -0.5, but 0.5501 becomes 0.6.
 
 =item '+inf'
 
-round to plus infinity, i.e. always round up. E.g., when
-rounding to the first sigdig, 0.45 becomes 0.5, -0.55 becomes -0.5,
-and 0.4501 also becomes 0.5.
+round to plus infinity, i.e. always round up. E.g., when rounding to the first
+sigdig, 0.45 becomes 0.5, -0.55 becomes -0.5, and 0.4501 also becomes 0.5.
 
 =item '-inf'
 
-round to minus infinity, i.e. always round down. E.g., when
-rounding to the first sigdig, 0.45 becomes 0.4, -0.55 becomes -0.6,
-but 0.4501 becomes 0.5.
+round to minus infinity, i.e. always round down. E.g., when rounding to the
+first sigdig, 0.45 becomes 0.4, -0.55 becomes -0.6, but 0.4501 becomes 0.5.
 
 =item 'zero'
 
-round to zero, i.e. positive numbers down, negative ones up.
-E.g., when rounding to the first sigdig, 0.45 becomes 0.4, -0.55
-becomes -0.5, but 0.4501 becomes 0.5.
+round to zero, i.e. positive numbers down, negative ones up. E.g., when
+rounding to the first sigdig, 0.45 becomes 0.4, -0.55 becomes -0.5, but 0.4501
+becomes 0.5.
 
 =item 'common'
 
-round up if the digit immediately to the right of the rounding place
-is 5 or greater, otherwise round down. E.g., 0.15 becomes 0.2 and
-0.149 becomes 0.1.
+round up if the digit immediately to the right of the rounding place is 5 or
+greater, otherwise round down. E.g., 0.15 becomes 0.2 and 0.149 becomes 0.1.
 
 =back
 
-The handling of A & P in MBI/MBF (the old core code shipped with Perl
-versions <= 5.7.2) is like this:
+The handling of A & P in MBI/MBF (the old core code shipped with Perl versions
+<= 5.7.2) is like this:
 
 =over
 
@@ -4714,7 +5486,7 @@ versions <= 5.7.2) is like this:
     + other operations simply create the same number (bneg etc), or
       more (bmul) of digits
     + rounding/truncating is only done when explicitly calling one
-      of bround or bfround, and never for BigInt (not implemented)
+      of bround or bfround, and never for Math::BigInt (not implemented)
   * bsqrt() simply hands its accuracy argument over to bdiv.
   * the documentation and the comment in the code indicate two
     different ways on how bdiv() determines the maximum number
@@ -4800,10 +5572,10 @@ This is how it works now:
 
   * If A or P are enabled/defined, they are used to round the result of each
     operation according to the rules below
-  * Negative P is ignored in Math::BigInt, since BigInts never have digits
-    after the decimal point
+  * Negative P is ignored in Math::BigInt, since Math::BigInt objects never
+    have digits after the decimal point
   * Math::BigFloat uses Math::BigInt internally, but setting A or P inside
-    Math::BigInt as globals does not tamper with the parts of a BigFloat.
+    Math::BigInt as globals does not tamper with the parts of a Math::BigFloat.
     A flag is used to mark all Math::BigFloat numbers as 'never round'.
 
 =item Precedence
@@ -4925,53 +5697,33 @@ This is how it works now:
 
 =head1 Infinity and Not a Number
 
-While BigInt has extensive handling of inf and NaN, certain quirks remain.
+While Math::BigInt has extensive handling of inf and NaN, certain quirks
+remain.
 
 =over
 
 =item oct()/hex()
 
-These perl routines currently (as of Perl v.5.8.6) cannot handle passed
-inf.
+These perl routines currently (as of Perl v.5.8.6) cannot handle passed inf.
 
-        te@linux:~> perl -wle 'print 2 ** 3333'
-        Inf
-        te@linux:~> perl -wle 'print 2 ** 3333 == 2 ** 3333'
-        1
-        te@linux:~> perl -wle 'print oct(2 ** 3333)'
-        0
-        te@linux:~> perl -wle 'print hex(2 ** 3333)'
-        Illegal hexadecimal digit 'I' ignored at -e line 1.
-        0
+    te@linux:~> perl -wle 'print 2 ** 3333'
+    Inf
+    te@linux:~> perl -wle 'print 2 ** 3333 == 2 ** 3333'
+    1
+    te@linux:~> perl -wle 'print oct(2 ** 3333)'
+    0
+    te@linux:~> perl -wle 'print hex(2 ** 3333)'
+    Illegal hexadecimal digit 'I' ignored at -e line 1.
+    0
 
 The same problems occur if you pass them Math::BigInt->binf() objects. Since
-overloading these routines is not possible, this cannot be fixed from BigInt.
-
-=item ==, !=, <, >, <=, >= with NaNs
-
-BigInt's bcmp() routine currently returns undef to signal that a NaN was
-involved in a comparison. However, the overload code turns that into
-either 1 or '' and thus operations like C<< NaN != NaN >> might return
-wrong values.
-
-=item log(-inf)
-
-C<< log(-inf) >> is highly weird. Since log(-x)=pi*i+log(x), then
-log(-inf)=pi*i+inf. However, since the imaginary part is finite, the real
-infinity "overshadows" it, so the number might as well just be infinity.
-However, the result is a complex number, and since BigInt/BigFloat can only
-have real numbers as results, the result is NaN.
-
-=item exp(), cos(), sin(), atan2()
-
-These all might have problems handling infinity right.
+overloading these routines is not possible, this cannot be fixed from
+Math::BigInt.
 
 =back
 
 =head1 INTERNALS
 
-The actual numbers are stored as unsigned big integers (with separate sign).
-
 You should neither care about nor depend on the internal representation; it
 might change without notice. Use B<ONLY> method calls like C<< $x->sign(); >>
 instead relying on the internal representation.
@@ -4981,35 +5733,34 @@ instead relying on the internal representation.
 Math with the numbers is done (by default) by a module called
 C<Math::BigInt::Calc>. This is equivalent to saying:
 
-        use Math::BigInt try => 'Calc';
+    use Math::BigInt try => 'Calc';
 
 You can change this backend library by using:
 
-        use Math::BigInt try => 'GMP';
+    use Math::BigInt try => 'GMP';
 
-B<Note>: General purpose packages should not be explicit about the library
-to use; let the script author decide which is best.
+B<Note>: General purpose packages should not be explicit about the library to
+use; let the script author decide which is best.
 
-If your script works with huge numbers and Calc is too slow for them,
-you can also for the loading of one of these libraries and if none
-of them can be used, the code will die:
+If your script works with huge numbers and Calc is too slow for them, you can
+also for the loading of one of these libraries and if none of them can be used,
+the code dies:
 
-        use Math::BigInt only => 'GMP,Pari';
+    use Math::BigInt only => 'GMP,Pari';
 
 The following would first try to find Math::BigInt::Foo, then
 Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:
 
-        use Math::BigInt try => 'Foo,Math::BigInt::Bar';
+    use Math::BigInt try => 'Foo,Math::BigInt::Bar';
 
-The library that is loaded last will be used. Note that this can be
-overwritten at any time by loading a different library, and numbers
-constructed with different libraries cannot be used in math operations
-together.
+The library that is loaded last is used. Note that this can be overwritten at
+any time by loading a different library, and numbers constructed with different
+libraries cannot be used in math operations together.
 
 =head3 What library to use?
 
-B<Note>: General purpose packages should not be explicit about the library
-to use; let the script author decide which is best.
+B<Note>: General purpose packages should not be explicit about the library to
+use; let the script author decide which is best.
 
 L<Math::BigInt::GMP> and L<Math::BigInt::Pari> are in cases involving big
 numbers much faster than Calc, however it is slower when dealing with very
@@ -5031,30 +5782,8 @@ The sign is either '+', '-', 'NaN', '+inf' or '-inf'.
 
 A sign of 'NaN' is used to represent the result when input arguments are not
 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 mantissa(), exponent() and parts()
-
-C<mantissa()> and C<exponent()> return the said parts of the BigInt such
-that:
-
-        $m = $x->mantissa();
-        $e = $x->exponent();
-        $y = $m * ( 10 ** $e );
-        print "ok\n" if $x == $y;
-
-C<< ($m,$e) = $x->parts() >> is just a shortcut that gives you both of them
-in one go. Both the returned mantissa and exponent have a sign.
-
-Currently, for BigInts C<$e> is always 0, except +inf and -inf, where it is
-C<+inf>; and for NaN, where it is C<NaN>; and for C<$x == 0>, where it is C<1>
-(to be compatible with Math::BigFloat's internal representation of a zero as
-C<0E1>).
-
-C<$m> is currently just a copy of the original number. The relation between
-C<$e> and C<$m> will stay always the same, though their real values might
-change.
+minus infinity. You get '+inf' when dividing a positive number by 0, and '-inf'
+when dividing any negative number by 0.
 
 =head1 EXAMPLES
 
@@ -5064,18 +5793,18 @@ change.
 
   $x = Math::BigInt->bstr("1234")       # string "1234"
   $x = "$x";                            # same as bstr()
-  $x = Math::BigInt->bneg("1234");      # BigInt "-1234"
-  $x = Math::BigInt->babs("-12345");    # BigInt "12345"
-  $x = Math::BigInt->bnorm("-0.00");    # BigInt "0"
-  $x = bigint(1) + bigint(2);           # BigInt "3"
-  $x = bigint(1) + "2";                 # ditto (auto-BigIntify of "2")
-  $x = bigint(1);                       # BigInt "1"
-  $x = $x + 5 / 2;                      # BigInt "3"
-  $x = $x ** 3;                         # BigInt "27"
-  $x *= 2;                              # BigInt "54"
-  $x = Math::BigInt->new(0);            # BigInt "0"
-  $x--;                                 # BigInt "-1"
-  $x = Math::BigInt->badd(4,5)          # BigInt "9"
+  $x = Math::BigInt->bneg("1234");      # Math::BigInt "-1234"
+  $x = Math::BigInt->babs("-12345");    # Math::BigInt "12345"
+  $x = Math::BigInt->bnorm("-0.00");    # Math::BigInt "0"
+  $x = bigint(1) + bigint(2);           # Math::BigInt "3"
+  $x = bigint(1) + "2";                 # ditto (auto-Math::BigIntify of "2")
+  $x = bigint(1);                       # Math::BigInt "1"
+  $x = $x + 5 / 2;                      # Math::BigInt "3"
+  $x = $x ** 3;                         # Math::BigInt "27"
+  $x *= 2;                              # Math::BigInt "54"
+  $x = Math::BigInt->new(0);            # Math::BigInt "0"
+  $x--;                                 # Math::BigInt "-1"
+  $x = Math::BigInt->badd(4,5)          # Math::BigInt "9"
   print $x->bsstr();                    # 9e+0
 
 Examples for rounding:
@@ -5110,67 +5839,67 @@ Examples for converting:
 =head1 Autocreating constants
 
 After C<use Math::BigInt ':constant'> all the B<integer> decimal, hexadecimal
-and binary constants in the given scope are converted to C<Math::BigInt>.
-This conversion happens at compile time.
+and binary constants in the given scope are converted to C<Math::BigInt>. This
+conversion happens at compile time.
 
 In particular,
 
   perl -MMath::BigInt=:constant -e 'print 2**100,"\n"'
 
 prints the integer value of C<2**100>. Note that without conversion of
-constants the expression 2**100 will be calculated as perl scalar.
+constants the expression 2**100 is calculated using Perl scalars.
 
-Please note that strings and floating point constants are not affected,
-so that
+Please note that strings and floating point constants are not affected, so that
 
-        use Math::BigInt qw/:constant/;
+    use Math::BigInt qw/:constant/;
 
-        $x = 1234567890123456789012345678901234567890
-                + 123456789123456789;
-        $y = '1234567890123456789012345678901234567890'
-                + '123456789123456789';
+    $x = 1234567890123456789012345678901234567890
+            + 123456789123456789;
+    $y = '1234567890123456789012345678901234567890'
+            + '123456789123456789';
 
-do not work. You need an explicit Math::BigInt->new() around one of the
-operands. You should also quote large constants to protect loss of precision:
+does not give you what you expect. You need an explicit Math::BigInt->new()
+around one of the operands. You should also quote large constants to protect
+loss of precision:
 
-        use Math::BigInt;
+    use Math::BigInt;
 
-        $x = Math::BigInt->new('1234567889123456789123456789123456789');
+    $x = Math::BigInt->new('1234567889123456789123456789123456789');
 
 Without the quotes Perl would convert the large number to a floating point
-constant at compile time and then hand the result to BigInt, which results in
-an truncated result or a NaN.
+constant at compile time and then hand the result to Math::BigInt, which
+results in an truncated result or a NaN.
 
 This also applies to integers that look like floating point constants:
 
-        use Math::BigInt ':constant';
+    use Math::BigInt ':constant';
 
-        print ref(123e2),"\n";
-        print ref(123.2e2),"\n";
+    print ref(123e2),"\n";
+    print ref(123.2e2),"\n";
 
-will print nothing but newlines. Use either L<bignum> or L<Math::BigFloat>
-to get this to work.
+prints nothing but newlines. Use either L<bignum> or L<Math::BigFloat> to get
+this to work.
 
 =head1 PERFORMANCE
 
 Using the form $x += $y; etc over $x = $x + $y is faster, since a copy of $x
 must be made in the second case. For long numbers, the copy can eat up to 20%
 of the work (in the case of addition/subtraction, less for
-multiplication/division). If $y is very small compared to $x, the form
-$x += $y is MUCH faster than $x = $x + $y since making the copy of $x takes
-more time then the actual addition.
+multiplication/division). If $y is very small compared to $x, the form $x += $y
+is MUCH faster than $x = $x + $y since making the copy of $x takes more time
+then the actual addition.
 
 With a technique called copy-on-write, the cost of copying with overload could
 be minimized or even completely avoided. A test implementation of COW did show
-performance gains for overloaded math, but introduced a performance loss due
-to a constant overhead for all other operations. So Math::BigInt does currently
+performance gains for overloaded math, but introduced a performance loss due to
+a constant overhead for all other operations. So Math::BigInt does currently
 not COW.
 
 The rewritten version of this module (vs. v0.01) is slower on certain
 operations, like C<new()>, C<bstr()> and C<numify()>. The reason are that it
 does now more work and handles much more cases. The time spent in these
-operations is usually gained in the other math operations so that code on
-the average should get (much) faster. If they don't, please contact the author.
+operations is usually gained in the other math operations so that code on the
+average should get (much) faster. If they don't, please contact the author.
 
 Some operations may be slower for small numbers, but are significantly faster
 for big numbers. Other operations are now constant (O(1), like C<bneg()>,
@@ -5199,9 +5928,8 @@ work, as long as a few simple rules are followed:
 =item *
 
 The public API must remain consistent, i.e. if a sub-class is overloading
-addition, the sub-class must use the same name, in this case badd(). The
-reason for this is that Math::BigInt is optimized to call the object methods
-directly.
+addition, the sub-class must use the same name, in this case badd(). The reason
+for this is that Math::BigInt is optimized to call the object methods directly.
 
 =item *
 
@@ -5212,41 +5940,41 @@ additional keys can be added, like C<< $x->{_custom} >>.
 
 Accessor functions are available for all existing object hash keys and should
 be used instead of directly accessing the internal hash keys. The reason for
-this is that Math::BigInt itself has a pluggable interface which permits it
-to support different storage methods.
+this is that Math::BigInt itself has a pluggable interface which permits it to
+support different storage methods.
 
 =back
 
 More complex sub-classes may have to replicate more of the logic internal of
-Math::BigInt if they need to change more basic behaviors. A subclass that
-needs to merely change the output only needs to overload C<bstr()>.
+Math::BigInt if they need to change more basic behaviors. A subclass that needs
+to merely change the output only needs to overload C<bstr()>.
 
 All other object methods and overloaded functions can be directly inherited
 from the parent class.
 
-At the very minimum, any subclass will need to provide its own C<new()> and can
+At the very minimum, any subclass needs to provide its own C<new()> and can
 store additional hash keys in the object. There are also some package globals
 that must be defined, e.g.:
 
-  # Globals
-  $accuracy = undef;
-  $precision = -2;       # round to 2 decimal places
-  $round_mode = 'even';
-  $div_scale = 40;
+    # Globals
+    $accuracy = undef;
+    $precision = -2;       # round to 2 decimal places
+    $round_mode = 'even';
+    $div_scale = 40;
 
 Additionally, you might want to provide the following two globals to allow
 auto-upgrading and auto-downgrading to work correctly:
 
-  $upgrade = undef;
-  $downgrade = undef;
+    $upgrade = undef;
+    $downgrade = undef;
 
 This allows Math::BigInt to correctly retrieve package globals from the
-subclass, like C<$SubClass::precision>.  See t/Math/BigInt/Subclass.pm or
+subclass, like C<$SubClass::precision>. See t/Math/BigInt/Subclass.pm or
 t/Math/BigFloat/SubClass.pm completely functional subclass examples.
 
 Don't forget to
 
-        use overload;
+    use overload;
 
 in your subclass to automatically inherit the overloading from the parent. If
 you like, you can change part of the overloading, look at Math::String for an
@@ -5256,62 +5984,43 @@ example.
 
 When used like this:
 
-        use Math::BigInt upgrade => 'Foo::Bar';
+    use Math::BigInt upgrade => 'Foo::Bar';
 
-certain operations will 'upgrade' their calculation and thus the result to
-the class Foo::Bar. Usually this is used in conjunction with Math::BigFloat:
+certain operations 'upgrade' their calculation and thus the result to the class
+Foo::Bar. Usually this is used in conjunction with Math::BigFloat:
 
-        use Math::BigInt upgrade => 'Math::BigFloat';
+    use Math::BigInt upgrade => 'Math::BigFloat';
 
 As a shortcut, you can use the module L<bignum>:
 
-        use bignum;
+    use bignum;
 
 Also good for one-liners:
 
-        perl -Mbignum -le 'print 2 ** 255'
+    perl -Mbignum -le 'print 2 ** 255'
 
-This makes it possible to mix arguments of different classes (as in 2.5 + 2)
-as well es preserve accuracy (as in sqrt(3)).
+This makes it possible to mix arguments of different classes (as in 2.5 + 2) as
+well es preserve accuracy (as in sqrt(3)).
 
 Beware: This feature is not fully implemented yet.
 
 =head2 Auto-upgrade
 
-The following methods upgrade themselves unconditionally; that is if upgrade
-is in effect, they will always hand up their work:
-
-=over
-
-=item bsqrt()
-
-=item div()
-
-=item blog()
-
-=item bexp()
-
-=item bpi()
-
-=item bcos()
-
-=item bsin()
-
-=item batan2()
+The following methods upgrade themselves unconditionally; that is if upgrade is
+in effect, they always hands up their work:
 
-=item batan()
-
-=back
+    div bsqrt blog bexp bpi bsin bcos batan batan2
 
-All other methods upgrade themselves only when one (or all) of their
-arguments are of the class mentioned in $upgrade.
+All other methods upgrade themselves only when one (or all) of their arguments
+are of the class mentioned in $upgrade.
 
 =head1 EXPORTS
 
-C<Math::BigInt> exports nothing by default, but can export the following methods:
+C<Math::BigInt> exports nothing by default, but can export the following
+methods:
 
-        bgcd
-        blcm
+    bgcd
+    blcm
 
 =head1 CAVEATS
 
@@ -5320,242 +6029,120 @@ known to be troublesome:
 
 =over
 
-=item bstr(), bsstr() and 'cmp'
+=item Comparing numbers as strings
 
-Both C<bstr()> and C<bsstr()> as well as automated stringify via overload now
-drop the leading '+'. The old code would return '+3', the new returns '3'.
-This is to be consistent with Perl and to make C<cmp> (especially with
-overloading) to work as you expect. It also solves problems with C<Test.pm>
-and L<Test::More>, which stringify arguments before comparing them.
+Both C<bstr()> and C<bsstr()> as well as stringify via overload drop the
+leading '+'. This is to be consistent with Perl and to make C<cmp> (especially
+with overloading) to work as you expect. It also solves problems with
+C<Test.pm> and L<Test::More>, which stringify arguments before comparing them.
 
 Mark Biggar said, when asked about to drop the '+' altogether, or make only
 C<cmp> work:
 
-        I agree (with the first alternative), don't add the '+' on positive
-        numbers.  It's not as important anymore with the new internal
-        form for numbers.  It made doing things like abs and neg easier,
-        but those have to be done differently now anyway.
+    I agree (with the first alternative), don't add the '+' on positive
+    numbers.  It's not as important anymore with the new internal form
+    for numbers.  It made doing things like abs and neg easier, but
+    those have to be done differently now anyway.
 
-So, the following examples will now work all as expected:
+So, the following examples now works as expected:
 
-        use Test::More tests => 1;
-        use Math::BigInt;
+    use Test::More tests => 1;
+    use Math::BigInt;
 
-        my $x = Math::BigInt -> new(3*3);
-        my $y = Math::BigInt -> new(3*3);
+    my $x = Math::BigInt -> new(3*3);
+    my $y = Math::BigInt -> new(3*3);
 
-        is ($x,3*3, 'multiplication');
-        print "$x eq 9" if $x eq $y;
-        print "$x eq 9" if $x eq '9';
-        print "$x eq 9" if $x eq 3*3;
+    is($x,3*3, 'multiplication');
+    print "$x eq 9" if $x eq $y;
+    print "$x eq 9" if $x eq '9';
+    print "$x eq 9" if $x eq 3*3;
 
 Additionally, the following still works:
 
-        print "$x == 9" if $x == $y;
-        print "$x == 9" if $x == 9;
-        print "$x == 9" if $x == 3*3;
+    print "$x == 9" if $x == $y;
+    print "$x == 9" if $x == 9;
+    print "$x == 9" if $x == 3*3;
 
 There is now a C<bsstr()> method to get the string in scientific notation aka
 C<1e+2> instead of C<100>. Be advised that overloaded 'eq' always uses bstr()
-for comparison, but Perl will represent some numbers as 100 and others
-as 1e+308. If in doubt, convert both arguments to Math::BigInt before
-comparing them as strings:
+for comparison, but Perl represents some numbers as 100 and others as 1e+308.
+If in doubt, convert both arguments to Math::BigInt before comparing them as
+strings:
 
-        use Test::More tests => 3;
-        use Math::BigInt;
+    use Test::More tests => 3;
+    use Math::BigInt;
 
-        $x = Math::BigInt->new('1e56'); $y = 1e56;
-        is ($x,$y);                     # will fail
-        is ($x->bsstr(),$y);            # okay
-        $y = Math::BigInt->new($y);
-        is ($x,$y);                     # okay
+    $x = Math::BigInt->new('1e56'); $y = 1e56;
+    is($x,$y);                     # fails
+    is($x->bsstr(),$y);            # okay
+    $y = Math::BigInt->new($y);
+    is($x,$y);                     # okay
 
-Alternatively, simply use C<< <=> >> for comparisons, this will get it
-always right. There is not yet a way to get a number automatically represented
-as a string that matches exactly the way Perl represents it.
+Alternatively, simply use C<< <=> >> for comparisons, this always gets it
+right. There is not yet a way to get a number automatically represented as a
+string that matches exactly the way Perl represents it.
 
 See also the section about L<Infinity and Not a Number> for problems in
 comparing NaNs.
 
 =item int()
 
-C<int()> will return (at least for Perl v5.7.1 and up) another BigInt, not a
+C<int()> returns (at least for Perl v5.7.1 and up) another Math::BigInt, not a
 Perl scalar:
 
-        $x = Math::BigInt->new(123);
-        $y = int($x);                           # BigInt 123
-        $x = Math::BigFloat->new(123.45);
-        $y = int($x);                           # BigInt 123
-
-In all Perl versions you can use C<as_number()> or C<as_int> for the same
-effect:
-
-        $x = Math::BigFloat->new(123.45);
-        $y = $x->as_number();                   # BigInt 123
-        $y = $x->as_int();                      # ditto
-
-This also works for other subclasses, like Math::String.
+    $x = Math::BigInt->new(123);
+    $y = int($x);                           # 123 as a Math::BigInt
+    $x = Math::BigFloat->new(123.45);
+    $y = int($x);                           # 123 as a Math::BigFloat
 
 If you want a real Perl scalar, use C<numify()>:
 
-        $y = $x->numify();                      # 123 as scalar
-
-This is seldom necessary, though, because this is done automatically, like
-when you access an array:
-
-        $z = $array[$x];                        # does work automatically
-
-=item length()
-
-The following will probably not do what you expect:
-
-        $c = Math::BigInt->new(123);
-        print $c->length(),"\n";                # prints 30
-
-It prints both the number of digits in the number and in the fraction part
-since print calls C<length()> in list context. Use something like:
-
-        print scalar $c->length(),"\n";         # prints 3
-
-=item bdiv()
-
-The following will probably not do what you expect:
-
-        print $c->bdiv(10000),"\n";
-
-It prints both quotient and remainder since print calls C<bdiv()> in list
-context. Also, C<bdiv()> will modify $c, so be careful. You probably want
-to use
-
-        print $c / 10000,"\n";
+    $y = $x->numify();                      # 123 as a scalar
 
-or, if you want to  modify $c instead,
+This is seldom necessary, though, because this is done automatically, like when
+you access an array:
 
-        print scalar $c->bdiv(10000),"\n";
-
-The quotient is always the greatest integer less than or equal to the
-real-valued quotient of the two operands, and the remainder (when it is
-non-zero) always has the same sign as the second operand; so, for
-example,
-
-          1 / 4  => ( 0, 1)
-          1 / -4 => (-1,-3)
-         -3 / 4  => (-1, 1)
-         -3 / -4 => ( 0,-3)
-        -11 / 2  => (-5,1)
-         11 /-2  => (-5,-1)
-
-As a consequence, the behavior of the operator % agrees with the
-behavior of Perl's built-in % operator (as documented in the perlop
-manpage), and the equation
-
-        $x == ($x / $y) * $y + ($x % $y)
-
-holds true for any $x and $y, which justifies calling the two return
-values of bdiv() the quotient and remainder. The only exception to this rule
-are when $y == 0 and $x is negative, then the remainder will also be
-negative. See below under "infinity handling" for the reasoning behind this.
-
-Perl's 'use integer;' changes the behaviour of % and / for scalars, but will
-not change BigInt's way to do things. This is because under 'use integer' Perl
-will do what the underlying C thinks is right and this is different for each
-system. If you need BigInt's behaving exactly like Perl's 'use integer', bug
-the author to implement it ;)
-
-=item infinity handling
-
-Here are some examples that explain the reasons why certain results occur while
-handling infinity:
-
-The following table shows the result of the division and the remainder, so that
-the equation above holds true. Some "ordinary" cases are strewn in to show more
-clearly the reasoning:
-
-        A /  B  =   C,     R so that C *    B +    R =    A
-     =========================================================
-        5 /   8 =   0,     5         0 *    8 +    5 =    5
-        0 /   8 =   0,     0         0 *    8 +    0 =    0
-        0 / inf =   0,     0         0 *  inf +    0 =    0
-        0 /-inf =   0,     0         0 * -inf +    0 =    0
-        5 / inf =   0,     5         0 *  inf +    5 =    5
-        5 /-inf =   0,     5         0 * -inf +    5 =    5
-        -5/ inf =   0,    -5         0 *  inf +   -5 =   -5
-        -5/-inf =   0,    -5         0 * -inf +   -5 =   -5
-       inf/   5 =  inf,    0       inf *    5 +    0 =  inf
-      -inf/   5 = -inf,    0      -inf *    5 +    0 = -inf
-       inf/  -5 = -inf,    0      -inf *   -5 +    0 =  inf
-      -inf/  -5 =  inf,    0       inf *   -5 +    0 = -inf
-         5/   5 =    1,    0         1 *    5 +    0 =    5
-        -5/  -5 =    1,    0         1 *   -5 +    0 =   -5
-       inf/ inf =    1,    0         1 *  inf +    0 =  inf
-      -inf/-inf =    1,    0         1 * -inf +    0 = -inf
-       inf/-inf =   -1,    0        -1 * -inf +    0 =  inf
-      -inf/ inf =   -1,    0         1 * -inf +    0 = -inf
-         8/   0 =  inf,    8       inf *    0 +    8 =    8
-       inf/   0 =  inf,  inf       inf *    0 +  inf =  inf
-         0/   0 =  NaN
-
-These cases below violate the "remainder has the sign of the second of the two
-arguments", since they wouldn't match up otherwise.
-
-        A /  B  =   C,     R so that C *    B +    R =    A
-     ========================================================
-      -inf/   0 = -inf, -inf      -inf *    0 +  inf = -inf
-        -8/   0 = -inf,   -8      -inf *    0 +    8 = -8
+    $z = $array[$x];                        # does work automatically
 
 =item Modifying and =
 
 Beware of:
 
-        $x = Math::BigFloat->new(5);
-        $y = $x;
+    $x = Math::BigFloat->new(5);
+    $y = $x;
 
-It will not do what you think, e.g. making a copy of $x. Instead it just makes
-a second reference to the B<same> object and stores it in $y. Thus anything
-that modifies $x (except overloaded operators) will modify $y, and vice versa.
-Or in other words, C<=> is only safe if you modify your BigInts only via
-overloaded math. As soon as you use a method call it breaks:
+This makes a second reference to the B<same> object and stores it in $y. Thus
+anything that modifies $x (except overloaded operators) also modifies $y, and
+vice versa. Or in other words, C<=> is only safe if you modify your
+Math::BigInt objects only via overloaded math. As soon as you use a method call
+it breaks:
 
-        $x->bmul(2);
-        print "$x, $y\n";       # prints '10, 10'
+    $x->bmul(2);
+    print "$x, $y\n";       # prints '10, 10'
 
 If you want a true copy of $x, use:
 
-        $y = $x->copy();
+    $y = $x->copy();
 
-You can also chain the calls like this, this will make first a copy and then
+You can also chain the calls like this, this first makes a copy and then
 multiply it by 2:
 
-        $y = $x->copy()->bmul(2);
+    $y = $x->copy()->bmul(2);
 
 See also the documentation for overload.pm regarding C<=>.
 
-=item bpow
-
-C<bpow()> (and the rounding functions) now modifies the first argument and
-returns it, unlike the old code which left it alone and only returned the
-result. This is to be consistent with C<badd()> etc. The first three will
-modify $x, the last one won't:
-
-        print bpow($x,$i),"\n";         # modify $x
-        print $x->bpow($i),"\n";        # ditto
-        print $x **= $i,"\n";           # the same
-        print $x ** $i,"\n";            # leave $x alone
-
-The form C<$x **= $y> is faster than C<$x = $x ** $y;>, though.
-
 =item Overloading -$x
 
 The following:
 
-        $x = -$x;
+    $x = -$x;
 
 is slower than
 
-        $x->bneg();
+    $x->bneg();
 
 since overload calls C<sub($x,0,1);> instead of C<neg($x)>. The first variant
-needs to preserve $x since it does not know that it later will get overwritten.
+needs to preserve $x since it does not know that it later gets overwritten.
 This makes a copy of $x and takes O(N), but $x->bneg() is O(1).
 
 =item Mixing different object types
@@ -5564,80 +6151,58 @@ With overloaded operators, it is the first (dominating) operand that determines
 which method is called. Here are some examples showing what actually gets
 called in various cases.
 
-        use Math::BigInt;
-        use Math::BigFloat;
-
-        $mbf  = Math::BigFloat->new(5);
-        $mbi2 = Math::BigInt->new(5);
-        $mbi  = Math::BigInt->new(2);
-                                        # what actually gets called:
-        $float = $mbf + $mbi;           # $mbf->badd($mbi)
-        $float = $mbf / $mbi;           # $mbf->bdiv($mbi)
-        $integer = $mbi + $mbf;         # $mbi->badd($mbf)
-        $integer = $mbi2 / $mbi;        # $mbi2->bdiv($mbi)
-        $integer = $mbi2 / $mbf;        # $mbi2->bdiv($mbf)
-
-For instance, Math::BigInt->bdiv() will always return a Math::BigInt, regardless of
+    use Math::BigInt;
+    use Math::BigFloat;
+
+    $mbf  = Math::BigFloat->new(5);
+    $mbi2 = Math::BigInt->new(5);
+    $mbi  = Math::BigInt->new(2);
+                                    # what actually gets called:
+    $float = $mbf + $mbi;           # $mbf->badd($mbi)
+    $float = $mbf / $mbi;           # $mbf->bdiv($mbi)
+    $integer = $mbi + $mbf;         # $mbi->badd($mbf)
+    $integer = $mbi2 / $mbi;        # $mbi2->bdiv($mbi)
+    $integer = $mbi2 / $mbf;        # $mbi2->bdiv($mbf)
+
+For instance, Math::BigInt->bdiv() always returns a Math::BigInt, regardless of
 whether the second operant is a Math::BigFloat. To get a Math::BigFloat you
 either need to call the operation manually, make sure each operand already is a
 Math::BigFloat, or cast to that type via Math::BigFloat->new():
 
-        $float = Math::BigFloat->new($mbi2) / $mbi;     # = 2.5
+    $float = Math::BigFloat->new($mbi2) / $mbi;     # = 2.5
 
 Beware of casting the entire expression, as this would cast the
 result, at which point it is too late:
 
-        $float = Math::BigFloat->new($mbi2 / $mbi);     # = 2
+    $float = Math::BigFloat->new($mbi2 / $mbi);     # = 2
 
 Beware also of the order of more complicated expressions like:
 
-        $integer = ($mbi2 + $mbi) / $mbf;               # int / float => int
-        $integer = $mbi2 / Math::BigFloat->new($mbi);   # ditto
+    $integer = ($mbi2 + $mbi) / $mbf;               # int / float => int
+    $integer = $mbi2 / Math::BigFloat->new($mbi);   # ditto
 
 If in doubt, break the expression into simpler terms, or cast all operands
 to the desired resulting type.
 
 Scalar values are a bit different, since:
 
-        $float = 2 + $mbf;
-        $float = $mbf + 2;
+    $float = 2 + $mbf;
+    $float = $mbf + 2;
 
-will both result in the proper type due to the way the overloaded math works.
+both result in the proper type due to the way the overloaded math works.
 
 This section also applies to other overloaded math packages, like Math::String.
 
 One solution to you problem might be autoupgrading|upgrading. See the
 pragmas L<bignum>, L<bigint> and L<bigrat> for an easy way to do this.
 
-=item bsqrt()
-
-C<bsqrt()> works only good if the result is a big integer, e.g. the square
-root of 144 is 12, but from 12 the square root is 3, regardless of rounding
-mode. The reason is that the result is always truncated to an integer.
-
-If you want a better approximation of the square root, then use:
-
-        $x = Math::BigFloat->new(12);
-        Math::BigFloat->precision(0);
-        Math::BigFloat->round_mode('even');
-        print $x->copy->bsqrt(),"\n";           # 4
-
-        Math::BigFloat->precision(2);
-        print $x->bsqrt(),"\n";                 # 3.46
-        print $x->bsqrt(3),"\n";                # 3.464
-
-=item brsft()
-
-For negative numbers in base see also L<brsft|/brsft()>.
-
 =back
 
 =head1 BUGS
 
 Please report any bugs or feature requests to
 C<bug-math-bigint at rt.cpan.org>, or through the web interface at
-L<https://rt.cpan.org/Ticket/Create.html?Queue=Math-BigInt>
-(requires login).
+L<https://rt.cpan.org/Ticket/Create.html?Queue=Math-BigInt> (requires login).
 We will be notified, and then you'll automatically be notified of progress on
 your bug as I make changes.
 
index 1a7e4af..4be50f4 100644 (file)
@@ -4,7 +4,7 @@ use 5.006001;
 use strict;
 use warnings;
 
-our $VERSION = '1.999715';
+our $VERSION = '1.999726';
 $VERSION = eval $VERSION;
 
 # Package to store unsigned big integers in decimal and do math with them
@@ -33,83 +33,82 @@ $VERSION = eval $VERSION;
 
 # announce that we are compatible with MBI v1.83 and up
 sub api_version () { 2; }
+
 # constants for easier life
-my ($BASE,$BASE_LEN,$RBASE,$MAX_VAL);
-my ($AND_BITS,$XOR_BITS,$OR_BITS);
-my ($AND_MASK,$XOR_MASK,$OR_MASK);
-
-sub _base_len 
-  {
-  # Set/get the BASE_LEN and assorted other, connected values.
-  # Used only by the testsuite, the set variant is used only by the BEGIN
-  # block below:
-  shift;
-
-  my ($b, $int) = @_;
-  if (defined $b)
-    {
-    # avoid redefinitions
-    undef &_mul;
-    undef &_div;
-
-    if ($] >= 5.008 && $int && $b > 7)
-      {
-      $BASE_LEN = $b;
-      *_mul = \&_mul_use_div_64;
-      *_div = \&_div_use_div_64;
-      $BASE = int("1e".$BASE_LEN);
-      $MAX_VAL = $BASE-1;
-      return $BASE_LEN unless wantarray;
-      return ($BASE_LEN, $BASE, $AND_BITS, $XOR_BITS, $OR_BITS, $BASE_LEN, $MAX_VAL,);
-      }
-
-    # find whether we can use mul or div in mul()/div()
-    $BASE_LEN = $b+1;
-    my $caught = 0;
-    while (--$BASE_LEN > 5)
-      {
-      $BASE = int("1e".$BASE_LEN);
-      $RBASE = abs('1e-'.$BASE_LEN);                   # see USE_MUL
-      $caught = 0;
-      $caught += 1 if (int($BASE * $RBASE) != 1);      # should be 1
-      $caught += 2 if (int($BASE / $BASE) != 1);       # should be 1
-      last if $caught != 3;
-      }
-    $BASE = int("1e".$BASE_LEN);
-    $RBASE = abs('1e-'.$BASE_LEN);                     # see USE_MUL
-    $MAX_VAL = $BASE-1;
-   
-    # ($caught & 1) != 0 => cannot use MUL
-    # ($caught & 2) != 0 => cannot use DIV
-    if ($caught == 2)                          # 2
-      {
-      # must USE_MUL since we cannot use DIV
-      *_mul = \&_mul_use_mul;
-      *_div = \&_div_use_mul;
-      }
-    else                                       # 0 or 1
-      {
-      # can USE_DIV instead
-      *_mul = \&_mul_use_div;
-      *_div = \&_div_use_div;
-      }
-    }
-  return $BASE_LEN unless wantarray;
-  return ($BASE_LEN, $BASE, $AND_BITS, $XOR_BITS, $OR_BITS, $BASE_LEN, $MAX_VAL);
-  }
+my ($BASE, $BASE_LEN, $RBASE, $MAX_VAL);
+my ($AND_BITS, $XOR_BITS, $OR_BITS);
+my ($AND_MASK, $XOR_MASK, $OR_MASK);
+
+sub _base_len {
+    # Set/get the BASE_LEN and assorted other, related values.
+    # Used only by the testsuite, the set variant is used only by the BEGIN
+    # block below:
+    shift;
+
+    my ($b, $int) = @_;
+    if (defined $b) {
+        # avoid redefinitions
+        undef &_mul;
+        undef &_div;
+
+        if ($] >= 5.008 && $int && $b > 7) {
+            $BASE_LEN = $b;
+            *_mul = \&_mul_use_div_64;
+            *_div = \&_div_use_div_64;
+            $BASE = int("1e" . $BASE_LEN);
+            $MAX_VAL = $BASE-1;
+            return $BASE_LEN unless wantarray;
+            return ($BASE_LEN, $BASE, $AND_BITS, $XOR_BITS, $OR_BITS, $BASE_LEN, $MAX_VAL);
+        }
+
+        # find whether we can use mul or div in mul()/div()
+        $BASE_LEN = $b + 1;
+        my $caught = 0;
+        while (--$BASE_LEN > 5) {
+            $BASE = int("1e" . $BASE_LEN);
+            $RBASE = abs('1e-' . $BASE_LEN); # see USE_MUL
+            $caught = 0;
+            $caught += 1 if (int($BASE * $RBASE) != 1); # should be 1
+            $caught += 2 if (int($BASE / $BASE) != 1);  # should be 1
+            last if $caught != 3;
+        }
+        $BASE = int("1e" . $BASE_LEN);
+        $RBASE = abs('1e-' . $BASE_LEN); # see USE_MUL
+        $MAX_VAL = $BASE-1;
+
+        # ($caught & 1) != 0 => cannot use MUL
+        # ($caught & 2) != 0 => cannot use DIV
+        if ($caught == 2)       # 2
+        {
+            # must USE_MUL since we cannot use DIV
+            *_mul = \&_mul_use_mul;
+            *_div = \&_div_use_mul;
+        } else                  # 0 or 1
+        {
+            # can USE_DIV instead
+            *_mul = \&_mul_use_div;
+            *_div = \&_div_use_div;
+        }
+    }
+    return $BASE_LEN unless wantarray;
+    return ($BASE_LEN, $BASE, $AND_BITS, $XOR_BITS, $OR_BITS, $BASE_LEN, $MAX_VAL);
+}
 
 sub _new {
     # Given a string representing an integer, returns a reference to an array
     # of integers, where each integer represents a chunk of the original input
-    # integer. Assumes normalized value as input.
+    # integer.
 
     my ($proto, $str) = @_;
+    #unless ($str =~ /^([1-9]\d*|0)\z/) {
+    #    require Carp;
+    #    Carp::croak("Invalid input string '$str'");
+    #}
 
     my $input_len = length($str) - 1;
 
     # Shortcut for small numbers.
-    return [ int($str) ] if $input_len < $BASE_LEN;
+    return [ $str ] if $input_len < $BASE_LEN;
 
     my $format = "a" . (($input_len % $BASE_LEN) + 1);
     $format .= $] < 5.008 ? "a$BASE_LEN" x int($input_len / $BASE_LEN)
@@ -118,126 +117,127 @@ sub _new {
     [ reverse(map { 0 + $_ } unpack($format, $str)) ];
 }
 
-BEGIN
-  {
-  # from Daniel Pfeiffer: determine largest group of digits that is precisely
-  # multipliable with itself plus carry
-  # Test now changed to expect the proper pattern, not a result off by 1 or 2
-  my ($e, $num) = 3;   # lowest value we will use is 3+1-1 = 3
-  do {
-      $num = '9' x ++$e;
-      $num *= $num + 1;
-  } while $num =~ /9{$e}0{$e}/;                # must be a certain pattern
-  $e--;                                # last test failed, so retract one step
-  # the limits below brush the problems with the test above under the rug:
-  # the test should be able to find the proper $e automatically
-  $e = 5 if $^O =~ /^uts/;     # UTS get's some special treatment
-  $e = 5 if $^O =~ /^unicos/;  # unicos is also problematic (6 seems to work
-                               # there, but we play safe)
-
-  my $int = 0;
-  if ($e > 7)
-    {
+BEGIN {
+    # from Daniel Pfeiffer: determine largest group of digits that is precisely
+    # multipliable with itself plus carry
+    # Test now changed to expect the proper pattern, not a result off by 1 or 2
+    my ($e, $num) = 3;          # lowest value we will use is 3+1-1 = 3
+    do {
+        $num = '9' x ++$e;
+        $num *= $num + 1;
+    } while $num =~ /9{$e}0{$e}/; # must be a certain pattern
+    $e--;                         # last test failed, so retract one step
+    # the limits below brush the problems with the test above under the rug:
+    # the test should be able to find the proper $e automatically
+    $e = 5 if $^O =~ /^uts/;    # UTS get's some special treatment
+    $e = 5 if $^O =~ /^unicos/; # unicos is also problematic (6 seems to work
+    # there, but we play safe)
+
+    my $int = 0;
+    if ($e > 7) {
+        use integer;
+        my $e1 = 7;
+        $num = 7;
+        do {
+            $num = ('9' x ++$e1) + 0;
+            $num *= $num + 1;
+        } while ("$num" =~ /9{$e1}0{$e1}/); # must be a certain pattern
+        $e1--;                  # last test failed, so retract one step
+        if ($e1 > 7) {
+            $int = 1;
+            $e = $e1;
+        }
+    }
+
+    __PACKAGE__ -> _base_len($e, $int); # set and store
+
     use integer;
-    my $e1 = 7;
-    $num = 7;
-    do 
-      {
-      $num = ('9' x ++$e1) + 0;
-      $num *= $num + 1;
-      } while ("$num" =~ /9{$e1}0{$e1}/);      # must be a certain pattern
-    $e1--;                                     # last test failed, so retract one step
-    if ($e1 > 7)
-      { 
-      $int = 1; $e = $e1; 
-      }
-    }
-  __PACKAGE__->_base_len($e,$int);     # set and store
-
-  use integer;
-  # find out how many bits _and, _or and _xor can take (old default = 16)
-  # I don't think anybody has yet 128 bit scalars, so let's play safe.
-  local $^W = 0;       # don't warn about 'nonportable number'
-  $AND_BITS = 15; $XOR_BITS = 15; $OR_BITS = 15;
-
-  # find max bits, we will not go higher than numberofbits that fit into $BASE
-  # to make _and etc simpler (and faster for smaller, slower for large numbers)
-  my $max = 16;
-  while (2 ** $max < $BASE) { $max++; }
-  {
-    no integer;
-    $max = 16 if $] < 5.006;   # older Perls might not take >16 too well
-  }
-  my ($x,$y,$z);
-  do {
-    $AND_BITS++;
-    $x = CORE::oct('0b' . '1' x $AND_BITS); $y = $x & $x;
-    $z = (2 ** $AND_BITS) - 1;
+    # find out how many bits _and, _or and _xor can take (old default = 16)
+    # I don't think anybody has yet 128 bit scalars, so let's play safe.
+    local $^W = 0;              # don't warn about 'nonportable number'
+    $AND_BITS = 15;
+    $XOR_BITS = 15;
+    $OR_BITS  = 15;
+
+    # find max bits, we will not go higher than numberofbits that fit into $BASE
+    # to make _and etc simpler (and faster for smaller, slower for large numbers)
+    my $max = 16;
+    while (2 ** $max < $BASE) {
+        $max++;
+    }
+    {
+        no integer;
+        $max = 16 if $] < 5.006; # older Perls might not take >16 too well
+    }
+    my ($x, $y, $z);
+
+    do {
+        $AND_BITS++;
+        $x = CORE::oct('0b' . '1' x $AND_BITS);
+        $y = $x & $x;
+        $z = (2 ** $AND_BITS) - 1;
     } while ($AND_BITS < $max && $x == $z && $y == $x);
-  $AND_BITS --;                                                # retreat one step
-  do {
-    $XOR_BITS++;
-    $x = CORE::oct('0b' . '1' x $XOR_BITS); $y = $x ^ 0;
-    $z = (2 ** $XOR_BITS) - 1;
+    $AND_BITS --;               # retreat one step
+
+    do {
+        $XOR_BITS++;
+        $x = CORE::oct('0b' . '1' x $XOR_BITS);
+        $y = $x ^ 0;
+        $z = (2 ** $XOR_BITS) - 1;
     } while ($XOR_BITS < $max && $x == $z && $y == $x);
-  $XOR_BITS --;                                                # retreat one step
-  do {
-    $OR_BITS++;
-    $x = CORE::oct('0b' . '1' x $OR_BITS); $y = $x | $x;
-    $z = (2 ** $OR_BITS) - 1;
+    $XOR_BITS --;               # retreat one step
+
+    do {
+        $OR_BITS++;
+        $x = CORE::oct('0b' . '1' x $OR_BITS);
+        $y = $x | $x;
+        $z = (2 ** $OR_BITS) -  1;
     } while ($OR_BITS < $max && $x == $z && $y == $x);
-  $OR_BITS --;                                         # retreat one step
-  
-  $AND_MASK = __PACKAGE__->_new( ( 2 ** $AND_BITS ));
-  $XOR_MASK = __PACKAGE__->_new( ( 2 ** $XOR_BITS ));
-  $OR_MASK = __PACKAGE__->_new( ( 2 ** $OR_BITS ));
+    $OR_BITS--;                # retreat one step
 
-  # We can compute the approximate length no faster than the real length:
-  *_alen = \&_len;
-  }
+    $AND_MASK = __PACKAGE__->_new(( 2 ** $AND_BITS ));
+    $XOR_MASK = __PACKAGE__->_new(( 2 ** $XOR_BITS ));
+    $OR_MASK  = __PACKAGE__->_new(( 2 ** $OR_BITS  ));
+
+    # We can compute the approximate length no faster than the real length:
+    *_alen = \&_len;
+}
 
 ###############################################################################
 
-sub _zero
-  {
-  # create a zero
-  [ 0 ];
-  }
-
-sub _one
-  {
-  # create a one
-  [ 1 ];
-  }
-
-sub _two
-  {
-  # create a two (used internally for shifting)
-  [ 2 ];
-  }
-
-sub _ten
-  {
-  # create a 10 (used internally for shifting)
-  [ 10 ];
-  }
-
-sub _1ex
-  {
-  # create a 1Ex
-  my $rem = $_[1] % $BASE_LEN;         # remainder
-  my $parts = $_[1] / $BASE_LEN;       # parts
-
-  # 000000, 000000, 100 
-  [ (0) x $parts, '1' . ('0' x $rem) ];
-  }
-
-sub _copy
-  {
-  # make a true copy
-  [ @{$_[1]} ];
-  }
+sub _zero {
+    # create a zero
+    [ 0 ];
+}
+
+sub _one {
+    # create a one
+    [ 1 ];
+}
+
+sub _two {
+    # create a two (used internally for shifting)
+    [ 2 ];
+}
+
+sub _ten {
+    # create a 10 (used internally for shifting)
+    [ 10 ];
+}
+
+sub _1ex {
+    # create a 1Ex
+    my $rem   = $_[1] % $BASE_LEN;      # remainder
+    my $parts = $_[1] / $BASE_LEN;      # parts
+
+    # 000000, 000000, 100
+    [ (0) x $parts, '1' . ('0' x $rem) ];
+}
+
+sub _copy {
+    # make a true copy
+    [ @{$_[1]} ];
+}
 
 # catch and throw away
 sub import { }
@@ -250,9 +250,9 @@ sub _str {
     # format is always normalized, i.e., no leading zeros.
 
     my $ary = $_[1];
-    my $idx = $#$ary;             # index of last element
+    my $idx = $#$ary;           # index of last element
 
-    if ($idx < 0) {               # should not happen
+    if ($idx < 0) {             # should not happen
         require Carp;
         Carp::croak("$_[1] has no elements");
     }
@@ -261,8 +261,8 @@ sub _str {
     my $ret = int($ary->[$idx]);
     if ($idx > 0) {
         $idx--;
-        # Interestingly, the pre-padd method uses more time
-        # the old grep variant takes longer (14 vs. 10 sec)
+        # Interestingly, the pre-padd method uses more time.
+        # The old grep variant takes longer (14 vs. 10 sec).
         my $z = '0' x ($BASE_LEN - 1);
         while ($idx >= 0) {
             $ret .= substr($z . $ary->[$idx], -$BASE_LEN);
@@ -272,12 +272,11 @@ sub _str {
     $ret;
 }
 
-sub _num
-  {
+sub _num {
     # Make a Perl scalar number (int/float) from a BigInt object.
     my $x = $_[1];
 
-    return 0 + $x->[0] if scalar @$x == 1;      # below $BASE
+    return $x->[0] if @$x == 1;         # below $BASE
 
     # Start with the most significant element and work towards the least
     # significant element. Avoid multiplying "inf" (which happens if the number
@@ -290,7 +289,7 @@ sub _num
         $num += $x -> [$i];
     }
     return $num;
-  }
+}
 
 ##############################################################################
 # actual math code
@@ -304,9 +303,13 @@ sub _add {
 
     my ($c, $x, $y) = @_;
 
-    return $x if @$y == 1 && $y->[0] == 0;      # $x + 0 => $x
-    if (@$x == 1 && $x->[0] == 0) {             # 0 + $y => $y->copy
-        # Twice as slow as $x = [ @$y ], but necessary to modify $x in-place.
+    # $x + 0 => $x
+
+    return $x if @$y == 1 && $y->[0] == 0;
+
+    # 0 + $y => $y->copy
+
+    if (@$x == 1 && $x->[0] == 0) {
         @$x = @$y;
         return $x;
     }
@@ -334,10 +337,10 @@ sub _inc {
     my ($c, $x) = @_;
 
     for my $i (@$x) {
-        return $x if ($i += 1) < $BASE;                # early out
-        $i = 0;                                        # overflow, next
+        return $x if ($i += 1) < $BASE; # early out
+        $i = 0;                         # overflow, next
     }
-    push @$x, 1 if $x->[-1] == 0;              # last overflowed, so extend
+    push @$x, 1 if $x->[-1] == 0;       # last overflowed, so extend
     $x;
 }
 
@@ -346,12 +349,12 @@ sub _dec {
     # Sub 1 from $x, modify $x in place
     my ($c, $x) = @_;
 
-    my $MAX = $BASE - 1;                       # since MAX_VAL based on BASE
+    my $MAX = $BASE - 1;                # since MAX_VAL based on BASE
     for my $i (@$x) {
-        last if ($i -= 1) >= 0;                        # early out
-        $i = $MAX;                             # underflow, next
+        last if ($i -= 1) >= 0;         # early out
+        $i = $MAX;                      # underflow, next
     }
-    pop @$x if $x->[-1] == 0 && @$x > 1;       # last underflowed (but leave 0)
+    pop @$x if $x->[-1] == 0 && @$x > 1; # last underflowed (but leave 0)
     $x;
 }
 
@@ -386,783 +389,706 @@ sub _sub {
     __strip_zeros($sy);
 }
 
-sub _mul_use_mul
-  {
-  # (ref to int_num_array, ref to int_num_array)
-  # multiply two numbers in internal representation
-  # modifies first arg, second need not be different from first
-  my ($c,$xv,$yv) = @_;
+sub _mul_use_mul {
+    # (ref to int_num_array, ref to int_num_array)
+    # multiply two numbers in internal representation
+    # modifies first arg, second need not be different from first
+    my ($c, $xv, $yv) = @_;
+
+    if (@$yv == 1) {
+        # shortcut for two very short numbers (improved by Nathan Zook)
+        # works also if xv and yv are the same reference, and handles also $x == 0
+        if (@$xv == 1) {
+            if (($xv->[0] *= $yv->[0]) >= $BASE) {
+                $xv->[0] = $xv->[0] - ($xv->[1] = int($xv->[0] * $RBASE)) * $BASE;
+            }
+            ;
+            return $xv;
+        }
+        # $x * 0 => 0
+        if ($yv->[0] == 0) {
+            @$xv = (0);
+            return $xv;
+        }
+        # multiply a large number a by a single element one, so speed up
+        my $y = $yv->[0];
+        my $car = 0;
+        foreach my $i (@$xv) {
+            $i = $i * $y + $car;
+            $car = int($i * $RBASE);
+            $i -= $car * $BASE;
+        }
+        push @$xv, $car if $car != 0;
+        return $xv;
+    }
+    # shortcut for result $x == 0 => result = 0
+    return $xv if @$xv == 1 && $xv->[0] == 0;
+
+    # since multiplying $x with $x fails, make copy in this case
+    $yv = [ @$xv ] if $xv == $yv; # same references?
+
+    my @prod = ();
+    my ($prod, $car, $cty, $xi, $yi);
+
+    for $xi (@$xv) {
+        $car = 0;
+        $cty = 0;
+
+        # slow variant
+        #    for $yi (@$yv)
+        #      {
+        #      $prod = $xi * $yi + ($prod[$cty] || 0) + $car;
+        #      $prod[$cty++] =
+        #       $prod - ($car = int($prod * RBASE)) * $BASE;  # see USE_MUL
+        #      }
+        #    $prod[$cty] += $car if $car; # need really to check for 0?
+        #    $xi = shift @prod;
+
+        # faster variant
+        # looping through this if $xi == 0 is silly - so optimize it away!
+        $xi = (shift @prod || 0), next if $xi == 0;
+        for $yi (@$yv) {
+            $prod = $xi * $yi + ($prod[$cty] || 0) + $car;
+            ##     this is actually a tad slower
+            ##        $prod = $prod[$cty]; $prod += ($car + $xi * $yi);     # no ||0 here
+            $prod[$cty++] =
+              $prod - ($car = int($prod * $RBASE)) * $BASE; # see USE_MUL
+        }
+        $prod[$cty] += $car if $car; # need really to check for 0?
+        $xi = shift @prod || 0;      # || 0 makes v5.005_3 happy
+    }
+    push @$xv, @prod;
+    # can't have leading zeros
+    #  __strip_zeros($xv);
+    $xv;
+}
 
-  if (@$yv == 1)
-    {
-    # shortcut for two very short numbers (improved by Nathan Zook)
-    # works also if xv and yv are the same reference, and handles also $x == 0
-    if (@$xv == 1)
-      {
-      if (($xv->[0] *= $yv->[0]) >= $BASE)
-         {
-         $xv->[0] = $xv->[0] - ($xv->[1] = int($xv->[0] * $RBASE)) * $BASE;
-         };
-      return $xv;
-      }
-    # $x * 0 => 0
-    if ($yv->[0] == 0)
-      {
-      @$xv = (0);
-      return $xv;
-      }
-    # multiply a large number a by a single element one, so speed up
-    my $y = $yv->[0]; my $car = 0;
-    foreach my $i (@$xv)
-      {
-      $i = $i * $y + $car; $car = int($i * $RBASE); $i -= $car * $BASE;
-      }
-    push @$xv, $car if $car != 0;
-    return $xv;
-    }
-  # shortcut for result $x == 0 => result = 0
-  return $xv if ( ((@$xv == 1) && ($xv->[0] == 0)) ); 
-
-  # since multiplying $x with $x fails, make copy in this case
-  $yv = [@$xv] if $xv == $yv;  # same references?
-
-  my @prod = (); my ($prod,$car,$cty,$xi,$yi);
-
-  for $xi (@$xv)
-    {
-    $car = 0; $cty = 0;
-
-    # slow variant
-#    for $yi (@$yv)
-#      {
-#      $prod = $xi * $yi + ($prod[$cty] || 0) + $car;
-#      $prod[$cty++] =
-#       $prod - ($car = int($prod * RBASE)) * $BASE;  # see USE_MUL
-#      }
-#    $prod[$cty] += $car if $car; # need really to check for 0?
-#    $xi = shift @prod;
-
-    # faster variant
-    # looping through this if $xi == 0 is silly - so optimize it away!
-    $xi = (shift @prod || 0), next if $xi == 0;
-    for $yi (@$yv)
-      {
-      $prod = $xi * $yi + ($prod[$cty] || 0) + $car;
-##     this is actually a tad slower
-##        $prod = $prod[$cty]; $prod += ($car + $xi * $yi);    # no ||0 here
-      $prod[$cty++] =
-       $prod - ($car = int($prod * $RBASE)) * $BASE;  # see USE_MUL
-      }
-    $prod[$cty] += $car if $car; # need really to check for 0?
-    $xi = shift @prod || 0;    # || 0 makes v5.005_3 happy
-    }
-  push @$xv, @prod;
-  # can't have leading zeros
-#  __strip_zeros($xv);
-  $xv;
-  }                                                                             
-
-sub _mul_use_div_64
-  {
-  # (ref to int_num_array, ref to int_num_array)
-  # multiply two numbers in internal representation
-  # modifies first arg, second need not be different from first
-  # works for 64 bit integer with "use integer"
-  my ($c,$xv,$yv) = @_;
-
-  use integer;
-  if (@$yv == 1)
-    {
-    # shortcut for two small numbers, also handles $x == 0
-    if (@$xv == 1)
-      {
-      # shortcut for two very short numbers (improved by Nathan Zook)
-      # works also if xv and yv are the same reference, and handles also $x == 0
-      if (($xv->[0] *= $yv->[0]) >= $BASE)
-          {
-          $xv->[0] =
-              $xv->[0] - ($xv->[1] = $xv->[0] / $BASE) * $BASE;
-          };
-      return $xv;
-      }
-    # $x * 0 => 0
-    if ($yv->[0] == 0)
-      {
-      @$xv = (0);
-      return $xv;
-      }
-    # multiply a large number a by a single element one, so speed up
-    my $y = $yv->[0]; my $car = 0;
-    foreach my $i (@$xv)
-      {
-      #$i = $i * $y + $car; $car = $i / $BASE; $i -= $car * $BASE;
-      $i = $i * $y + $car; $i -= ($car = $i / $BASE) * $BASE;
-      }
-    push @$xv, $car if $car != 0;
-    return $xv;
-    }
-  # shortcut for result $x == 0 => result = 0
-  return $xv if ( ((@$xv == 1) && ($xv->[0] == 0)) ); 
-
-  # since multiplying $x with $x fails, make copy in this case
-  $yv = [@$xv] if $xv == $yv;  # same references?
-
-  my @prod = (); my ($prod,$car,$cty,$xi,$yi);
-  for $xi (@$xv)
-    {
-    $car = 0; $cty = 0;
-    # looping through this if $xi == 0 is silly - so optimize it away!
-    $xi = (shift @prod || 0), next if $xi == 0;
-    for $yi (@$yv)
-      {
-      $prod = $xi * $yi + ($prod[$cty] || 0) + $car;
-      $prod[$cty++] = $prod - ($car = $prod / $BASE) * $BASE;
-      }
-    $prod[$cty] += $car if $car; # need really to check for 0?
-    $xi = shift @prod || 0;    # || 0 makes v5.005_3 happy
-    }
-  push @$xv, @prod;
-  $xv;
-  }                                                                             
-
-sub _mul_use_div
-  {
-  # (ref to int_num_array, ref to int_num_array)
-  # multiply two numbers in internal representation
-  # modifies first arg, second need not be different from first
-  my ($c,$xv,$yv) = @_;
-
-  if (@$yv == 1)
-    {
-    # shortcut for two small numbers, also handles $x == 0
-    if (@$xv == 1)
-      {
-      # shortcut for two very short numbers (improved by Nathan Zook)
-      # works also if xv and yv are the same reference, and handles also $x == 0
-      if (($xv->[0] *= $yv->[0]) >= $BASE)
-          {
-          $xv->[0] =
-              $xv->[0] - ($xv->[1] = int($xv->[0] / $BASE)) * $BASE;
-          };
-      return $xv;
-      }
-    # $x * 0 => 0
-    if ($yv->[0] == 0)
-      {
-      @$xv = (0);
-      return $xv;
-      }
-    # multiply a large number a by a single element one, so speed up
-    my $y = $yv->[0]; my $car = 0;
-    foreach my $i (@$xv)
-      {
-      $i = $i * $y + $car; $car = int($i / $BASE); $i -= $car * $BASE;
-      # This (together with use integer;) does not work on 32-bit Perls
-      #$i = $i * $y + $car; $i -= ($car = $i / $BASE) * $BASE;
-      }
-    push @$xv, $car if $car != 0;
-    return $xv;
-    }
-  # shortcut for result $x == 0 => result = 0
-  return $xv if ( ((@$xv == 1) && ($xv->[0] == 0)) ); 
-
-  # since multiplying $x with $x fails, make copy in this case
-  $yv = [@$xv] if $xv == $yv;  # same references?
-
-  my @prod = (); my ($prod,$car,$cty,$xi,$yi);
-  for $xi (@$xv)
-    {
-    $car = 0; $cty = 0;
-    # looping through this if $xi == 0 is silly - so optimize it away!
-    $xi = (shift @prod || 0), next if $xi == 0;
-    for $yi (@$yv)
-      {
-      $prod = $xi * $yi + ($prod[$cty] || 0) + $car;
-      $prod[$cty++] = $prod - ($car = int($prod / $BASE)) * $BASE;
-      }
-    $prod[$cty] += $car if $car; # need really to check for 0?
-    $xi = shift @prod || 0;    # || 0 makes v5.005_3 happy
-    }
-  push @$xv, @prod;
-  # can't have leading zeros
-#  __strip_zeros($xv);
-  $xv;
-  }                                                                             
-
-sub _div_use_mul
-  {
-  # ref to array, ref to array, modify first array and return remainder if 
-  # in list context
-
-  # see comments in _div_use_div() for more explanations
-
-  my ($c,$x,$yorg) = @_;
-  
-  # the general div algorithm here is about O(N*N) and thus quite slow, so
-  # we first check for some special cases and use shortcuts to handle them.
-
-  # This works, because we store the numbers in a chunked format where each
-  # element contains 5..7 digits (depending on system).
-
-  # if both numbers have only one element:
-  if (@$x == 1 && @$yorg == 1)
-    {
-    # shortcut, $yorg and $x are two small numbers
-    if (wantarray)
-      {
-      my $r = [ $x->[0] % $yorg->[0] ];
-      $x->[0] = int($x->[0] / $yorg->[0]);
-      return ($x,$r); 
-      }
-    else
-      {
-      $x->[0] = int($x->[0] / $yorg->[0]);
-      return $x; 
-      }
-    }
-
-  # if x has more than one, but y has only one element:
-  if (@$yorg == 1)
-    {
-    my $rem;
-    $rem = _mod($c,[ @$x ],$yorg) if wantarray;
-
-    # shortcut, $y is < $BASE
-    my $j = scalar @$x; my $r = 0; 
-    my $y = $yorg->[0]; my $b;
-    while ($j-- > 0)
-      {
-      $b = $r * $BASE + $x->[$j];
-      $x->[$j] = int($b/$y);
-      $r = $b % $y;
-      }
-    pop @$x if @$x > 1 && $x->[-1] == 0;       # splice up a leading zero 
-    return ($x,$rem) if wantarray;
-    return $x;
+sub _mul_use_div_64 {
+    # (ref to int_num_array, ref to int_num_array)
+    # multiply two numbers in internal representation
+    # modifies first arg, second need not be different from first
+    # works for 64 bit integer with "use integer"
+    my ($c, $xv, $yv) = @_;
+
+    use integer;
+    if (@$yv == 1) {
+        # shortcut for two small numbers, also handles $x == 0
+        if (@$xv == 1) {
+            # shortcut for two very short numbers (improved by Nathan Zook)
+            # works also if xv and yv are the same reference, and handles also $x == 0
+            if (($xv->[0] *= $yv->[0]) >= $BASE) {
+                $xv->[0] =
+                  $xv->[0] - ($xv->[1] = $xv->[0] / $BASE) * $BASE;
+            }
+            return $xv;
+        }
+        # $x * 0 => 0
+        if ($yv->[0] == 0) {
+            @$xv = (0);
+            return $xv;
+        }
+        # multiply a large number a by a single element one, so speed up
+        my $y = $yv->[0];
+        my $car = 0;
+        foreach my $i (@$xv) {
+            #$i = $i * $y + $car; $car = $i / $BASE; $i -= $car * $BASE;
+            $i = $i * $y + $car;
+            $i -= ($car = $i / $BASE) * $BASE;
+        }
+        push @$xv, $car if $car != 0;
+        return $xv;
+    }
+    # shortcut for result $x == 0 => result = 0
+    return $xv if ( ((@$xv == 1) && ($xv->[0] == 0)) );
+
+    # since multiplying $x with $x fails, make copy in this case
+    $yv = [ @$xv ] if $xv == $yv; # same references?
+
+    my @prod = ();
+    my ($prod, $car, $cty, $xi, $yi);
+    for $xi (@$xv) {
+        $car = 0;
+        $cty = 0;
+        # looping through this if $xi == 0 is silly - so optimize it away!
+        $xi = (shift @prod || 0), next if $xi == 0;
+        for $yi (@$yv) {
+            $prod = $xi * $yi + ($prod[$cty] || 0) + $car;
+            $prod[$cty++] = $prod - ($car = $prod / $BASE) * $BASE;
+        }
+        $prod[$cty] += $car if $car; # need really to check for 0?
+        $xi = shift @prod || 0;      # || 0 makes v5.005_3 happy
     }
+    push @$xv, @prod;
+    $xv;
+}
 
-  # now x and y have more than one element
+sub _mul_use_div {
+    # (ref to int_num_array, ref to int_num_array)
+    # multiply two numbers in internal representation
+    # modifies first arg, second need not be different from first
+    my ($c, $xv, $yv) = @_;
+
+    if (@$yv == 1) {
+        # shortcut for two small numbers, also handles $x == 0
+        if (@$xv == 1) {
+            # shortcut for two very short numbers (improved by Nathan Zook)
+            # works also if xv and yv are the same reference, and handles also $x == 0
+            if (($xv->[0] *= $yv->[0]) >= $BASE) {
+                $xv->[0] =
+                  $xv->[0] - ($xv->[1] = int($xv->[0] / $BASE)) * $BASE;
+            }
+            ;
+            return $xv;
+        }
+        # $x * 0 => 0
+        if ($yv->[0] == 0) {
+            @$xv = (0);
+            return $xv;
+        }
+        # multiply a large number a by a single element one, so speed up
+        my $y = $yv->[0];
+        my $car = 0;
+        foreach my $i (@$xv) {
+            $i = $i * $y + $car;
+            $car = int($i / $BASE);
+            $i -= $car * $BASE;
+            # This (together with use integer;) does not work on 32-bit Perls
+            #$i = $i * $y + $car; $i -= ($car = $i / $BASE) * $BASE;
+        }
+        push @$xv, $car if $car != 0;
+        return $xv;
+    }
+    # shortcut for result $x == 0 => result = 0
+    return $xv if ( ((@$xv == 1) && ($xv->[0] == 0)) );
+
+    # since multiplying $x with $x fails, make copy in this case
+    $yv = [ @$xv ] if $xv == $yv; # same references?
+
+    my @prod = ();
+    my ($prod, $car, $cty, $xi, $yi);
+    for $xi (@$xv) {
+        $car = 0;
+        $cty = 0;
+        # looping through this if $xi == 0 is silly - so optimize it away!
+        $xi = (shift @prod || 0), next if $xi == 0;
+        for $yi (@$yv) {
+            $prod = $xi * $yi + ($prod[$cty] || 0) + $car;
+            $prod[$cty++] = $prod - ($car = int($prod / $BASE)) * $BASE;
+        }
+        $prod[$cty] += $car if $car; # need really to check for 0?
+        $xi = shift @prod || 0;      # || 0 makes v5.005_3 happy
+    }
+    push @$xv, @prod;
+    # can't have leading zeros
+    #  __strip_zeros($xv);
+    $xv;
+}
 
-  # check whether y has more elements than x, if yet, the result will be 0
-  if (@$yorg > @$x)
-    {
-    my $rem;
-    $rem = [@$x] if wantarray;                  # make copy
-    splice (@$x,1);                             # keep ref to original array
-    $x->[0] = 0;                                # set to 0
-    return ($x,$rem) if wantarray;              # including remainder?
-    return $x;                                 # only x, which is [0] now
-    }
-  # check whether the numbers have the same number of elements, in that case
-  # the result will fit into one element and can be computed efficiently
-  if (@$yorg == @$x)
-    {
-    my $rem;
-    # if $yorg has more digits than $x (it's leading element is longer than
-    # the one from $x), the result will also be 0:
-    if (length(int($yorg->[-1])) > length(int($x->[-1])))
-      {
-      $rem = [@$x] if wantarray;               # make copy
-      splice (@$x,1);                          # keep ref to org array
-      $x->[0] = 0;                             # set to 0
-      return ($x,$rem) if wantarray;           # including remainder?
-      return $x;
-      }
-    # now calculate $x / $yorg
-    if (length(int($yorg->[-1])) == length(int($x->[-1])))
-      {
-      # same length, so make full compare
-
-      my $a = 0; my $j = scalar @$x - 1;
-      # manual way (abort if unequal, good for early ne)
-      while ($j >= 0)
-        {
-        last if ($a = $x->[$j] - $yorg->[$j]); $j--;
+sub _div_use_mul {
+    # ref to array, ref to array, modify first array and return remainder if
+    # in list context
+
+    # see comments in _div_use_div() for more explanations
+
+    my ($c, $x, $yorg) = @_;
+
+    # the general div algorithm here is about O(N*N) and thus quite slow, so
+    # we first check for some special cases and use shortcuts to handle them.
+
+    # This works, because we store the numbers in a chunked format where each
+    # element contains 5..7 digits (depending on system).
+
+    # if both numbers have only one element:
+    if (@$x == 1 && @$yorg == 1) {
+        # shortcut, $yorg and $x are two small numbers
+        if (wantarray) {
+            my $r = [ $x->[0] % $yorg->[0] ];
+            $x->[0] = int($x->[0] / $yorg->[0]);
+            return ($x, $r);
+        } else {
+            $x->[0] = int($x->[0] / $yorg->[0]);
+            return $x;
         }
-      # $a contains the result of the compare between X and Y
-      # a < 0: x < y, a == 0: x == y, a > 0: x > y
-      if ($a <= 0)
-        {
-        $rem = [ 0 ];                   # a = 0 => x == y => rem 0
-        $rem = [@$x] if $a != 0;        # a < 0 => x < y => rem = x
-        splice(@$x,1);                  # keep single element
-        $x->[0] = 0;                    # if $a < 0
-        $x->[0] = 1 if $a == 0;         # $x == $y
-        return ($x,$rem) if wantarray;
+    }
+
+    # if x has more than one, but y has only one element:
+    if (@$yorg == 1) {
+        my $rem;
+        $rem = _mod($c, [ @$x ], $yorg) if wantarray;
+
+        # shortcut, $y is < $BASE
+        my $j = @$x;
+        my $r = 0;
+        my $y = $yorg->[0];
+        my $b;
+        while ($j-- > 0) {
+            $b = $r * $BASE + $x->[$j];
+            $x->[$j] = int($b/$y);
+            $r = $b % $y;
+        }
+        pop @$x if @$x > 1 && $x->[-1] == 0; # splice up a leading zero
+        return ($x, $rem) if wantarray;
         return $x;
+    }
+
+    # now x and y have more than one element
+
+    # check whether y has more elements than x, if yet, the result will be 0
+    if (@$yorg > @$x) {
+        my $rem;
+        $rem = [ @$x ] if wantarray;    # make copy
+        @$x = 0;                        # set to 0
+        return ($x, $rem) if wantarray; # including remainder?
+        return $x;                      # only x, which is [0] now
+    }
+    # check whether the numbers have the same number of elements, in that case
+    # the result will fit into one element and can be computed efficiently
+    if (@$yorg == @$x) {
+        my $rem;
+        # if $yorg has more digits than $x (it's leading element is longer than
+        # the one from $x), the result will also be 0:
+        if (length(int($yorg->[-1])) > length(int($x->[-1]))) {
+            $rem = [ @$x ] if wantarray;        # make copy
+            @$x = 0;                            # set to 0
+            return ($x, $rem) if wantarray;     # including remainder?
+            return $x;
+        }
+        # now calculate $x / $yorg
+        if (length(int($yorg->[-1])) == length(int($x->[-1]))) {
+            # same length, so make full compare
+
+            my $a = 0;
+            my $j = @$x - 1;
+            # manual way (abort if unequal, good for early ne)
+            while ($j >= 0) {
+                last if ($a = $x->[$j] - $yorg->[$j]);
+                $j--;
+            }
+            # $a contains the result of the compare between X and Y
+            # a < 0: x < y, a == 0: x == y, a > 0: x > y
+            if ($a <= 0) {
+                $rem = [ 0 ];              # a = 0 => x == y => rem 0
+                $rem = [ @$x ] if $a != 0; # a < 0 => x < y => rem = x
+                @$x = 0;             # if $a < 0
+                $x->[0] = 1 if $a == 0;  # $x == $y
+                return ($x, $rem) if wantarray;
+                return $x;
+            }
+            # $x >= $y, so proceed normally
         }
-      # $x >= $y, so proceed normally
-      }
     }
 
-  # all other cases:
+    # all other cases:
 
-  my $y = [ @$yorg ];                          # always make copy to preserve
+    my $y = [ @$yorg ];         # always make copy to preserve
 
-  my ($car,$bar,$prd,$dd,$xi,$yi,@q,$v2,$v1,@d,$tmp,$q,$u2,$u1,$u0);
+    my ($car, $bar, $prd, $dd, $xi, $yi, @q, $v2, $v1, @d, $tmp, $q, $u2, $u1, $u0);
 
-  $car = $bar = $prd = 0;
-  if (($dd = int($BASE/($y->[-1]+1))) != 1) 
-    {
-    for $xi (@$x) 
-      {
-      $xi = $xi * $dd + $car;
-      $xi -= ($car = int($xi * $RBASE)) * $BASE;       # see USE_MUL
-      }
-    push(@$x, $car); $car = 0;
-    for $yi (@$y) 
-      {
-      $yi = $yi * $dd + $car;
-      $yi -= ($car = int($yi * $RBASE)) * $BASE;       # see USE_MUL
-      }
-    }
-  else 
-    {
-    push(@$x, 0);
+    $car = $bar = $prd = 0;
+    if (($dd = int($BASE / ($y->[-1] + 1))) != 1) {
+        for $xi (@$x) {
+            $xi = $xi * $dd + $car;
+            $xi -= ($car = int($xi * $RBASE)) * $BASE; # see USE_MUL
+        }
+        push(@$x, $car);
+        $car = 0;
+        for $yi (@$y) {
+            $yi = $yi * $dd + $car;
+            $yi -= ($car = int($yi * $RBASE)) * $BASE; # see USE_MUL
+        }
+    } else {
+        push(@$x, 0);
+    }
+    @q = ();
+    ($v2, $v1) = @$y[-2, -1];
+    $v2 = 0 unless $v2;
+    while ($#$x > $#$y) {
+        ($u2, $u1, $u0) = @$x[-3 .. -1];
+        $u2 = 0 unless $u2;
+        #warn "oups v1 is 0, u0: $u0 $y->[-2] $y->[-1] l ",scalar @$y,"\n"
+        # if $v1 == 0;
+        $q = (($u0 == $v1) ? $MAX_VAL : int(($u0 * $BASE + $u1) / $v1));
+        --$q while ($v2 * $q > ($u0 * $BASE + $u1 - $q * $v1) * $BASE + $u2);
+        if ($q) {
+            ($car, $bar) = (0, 0);
+            for ($yi = 0, $xi = $#$x - $#$y-1; $yi <= $#$y; ++$yi, ++$xi) {
+                $prd = $q * $y->[$yi] + $car;
+                $prd -= ($car = int($prd * $RBASE)) * $BASE; # see USE_MUL
+                $x->[$xi] += $BASE if ($bar = (($x->[$xi] -= $prd + $bar) < 0));
+            }
+            if ($x->[-1] < $car + $bar) {
+                $car = 0;
+                --$q;
+                for ($yi = 0, $xi = $#$x - $#$y-1; $yi <= $#$y; ++$yi, ++$xi) {
+                    $x->[$xi] -= $BASE
+                      if ($car = (($x->[$xi] += $y->[$yi] + $car) >= $BASE));
+                }
+            }
+        }
+        pop(@$x);
+        unshift(@q, $q);
+    }
+    if (wantarray) {
+        @d = ();
+        if ($dd != 1) {
+            $car = 0;
+            for $xi (reverse @$x) {
+                $prd = $car * $BASE + $xi;
+                $car = $prd - ($tmp = int($prd / $dd)) * $dd; # see USE_MUL
+                unshift(@d, $tmp);
+            }
+        } else {
+            @d = @$x;
+        }
+        @$x = @q;
+        my $d = \@d;
+        __strip_zeros($x);
+        __strip_zeros($d);
+        return ($x, $d);
     }
-  @q = (); ($v2,$v1) = @$y[-2,-1];
-  $v2 = 0 unless $v2;
-  while ($#$x > $#$y) 
-    {
-    ($u2,$u1,$u0) = @$x[-3..-1];
-    $u2 = 0 unless $u2;
-    #warn "oups v1 is 0, u0: $u0 $y->[-2] $y->[-1] l ",scalar @$y,"\n"
-    # if $v1 == 0;
-    $q = (($u0 == $v1) ? $MAX_VAL : int(($u0*$BASE+$u1)/$v1));
-    --$q while ($v2*$q > ($u0*$BASE+$u1-$q*$v1)*$BASE+$u2);
-    if ($q)
-      {
-      ($car, $bar) = (0,0);
-      for ($yi = 0, $xi = $#$x-$#$y-1; $yi <= $#$y; ++$yi,++$xi) 
-        {
-        $prd = $q * $y->[$yi] + $car;
-        $prd -= ($car = int($prd * $RBASE)) * $BASE;   # see USE_MUL
-       $x->[$xi] += $BASE if ($bar = (($x->[$xi] -= $prd + $bar) < 0));
-       }
-      if ($x->[-1] < $car + $bar) 
-        {
-        $car = 0; --$q;
-       for ($yi = 0, $xi = $#$x-$#$y-1; $yi <= $#$y; ++$yi,++$xi) 
-          {
-         $x->[$xi] -= $BASE
-          if ($car = (($x->[$xi] += $y->[$yi] + $car) >= $BASE));
-         }
-       }   
-      }
-    pop(@$x);
-    unshift(@q, $q);
-    }
-  if (wantarray) 
-    {
-    @d = ();
-    if ($dd != 1)  
-      {
-      $car = 0; 
-      for $xi (reverse @$x) 
-        {
-        $prd = $car * $BASE + $xi;
-        $car = $prd - ($tmp = int($prd / $dd)) * $dd; # see USE_MUL
-        unshift(@d, $tmp);
-        }
-      }
-    else 
-      {
-      @d = @$x;
-      }
     @$x = @q;
-    my $d = \@d; 
     __strip_zeros($x);
-    __strip_zeros($d);
-    return ($x,$d);
-    }
-  @$x = @q;
-  __strip_zeros($x);
-  $x;
-  }
-
-sub _div_use_div_64
-  {
-  # ref to array, ref to array, modify first array and return remainder if 
-  # in list context
-  # This version works on 64 bit integers
-  my ($c,$x,$yorg) = @_;
-
-  use integer;
-  # the general div algorithm here is about O(N*N) and thus quite slow, so
-  # we first check for some special cases and use shortcuts to handle them.
-
-  # This works, because we store the numbers in a chunked format where each
-  # element contains 5..7 digits (depending on system).
-
-  # if both numbers have only one element:
-  if (@$x == 1 && @$yorg == 1)
-    {
-    # shortcut, $yorg and $x are two small numbers
-    if (wantarray)
-      {
-      my $r = [ $x->[0] % $yorg->[0] ];
-      $x->[0] = int($x->[0] / $yorg->[0]);
-      return ($x,$r); 
-      }
-    else
-      {
-      $x->[0] = int($x->[0] / $yorg->[0]);
-      return $x; 
-      }
-    }
-  # if x has more than one, but y has only one element:
-  if (@$yorg == 1)
-    {
-    my $rem;
-    $rem = _mod($c,[ @$x ],$yorg) if wantarray;
-
-    # shortcut, $y is < $BASE
-    my $j = scalar @$x; my $r = 0; 
-    my $y = $yorg->[0]; my $b;
-    while ($j-- > 0)
-      {
-      $b = $r * $BASE + $x->[$j];
-      $x->[$j] = int($b/$y);
-      $r = $b % $y;
-      }
-    pop @$x if @$x > 1 && $x->[-1] == 0;       # splice up a leading zero 
-    return ($x,$rem) if wantarray;
-    return $x;
+    $x;
+}
+
+sub _div_use_div_64 {
+    # ref to array, ref to array, modify first array and return remainder if
+    # in list context
+    # This version works on 64 bit integers
+    my ($c, $x, $yorg) = @_;
+
+    use integer;
+    # the general div algorithm here is about O(N*N) and thus quite slow, so
+    # we first check for some special cases and use shortcuts to handle them.
+
+    # This works, because we store the numbers in a chunked format where each
+    # element contains 5..7 digits (depending on system).
+
+    # if both numbers have only one element:
+    if (@$x == 1 && @$yorg == 1) {
+        # shortcut, $yorg and $x are two small numbers
+        if (wantarray) {
+            my $r = [ $x->[0] % $yorg->[0] ];
+            $x->[0] = int($x->[0] / $yorg->[0]);
+            return ($x, $r);
+        } else {
+            $x->[0] = int($x->[0] / $yorg->[0]);
+            return $x;
+        }
     }
-  # now x and y have more than one element
+    # if x has more than one, but y has only one element:
+    if (@$yorg == 1) {
+        my $rem;
+        $rem = _mod($c, [ @$x ], $yorg) if wantarray;
 
-  # check whether y has more elements than x, if yet, the result will be 0
-  if (@$yorg > @$x)
-    {
-    my $rem;
-    $rem = [@$x] if wantarray;                 # make copy
-    splice (@$x,1);                            # keep ref to original array
-    $x->[0] = 0;                               # set to 0
-    return ($x,$rem) if wantarray;             # including remainder?
-    return $x;                                 # only x, which is [0] now
-    }
-  # check whether the numbers have the same number of elements, in that case
-  # the result will fit into one element and can be computed efficiently
-  if (@$yorg == @$x)
-    {
-    my $rem;
-    # if $yorg has more digits than $x (it's leading element is longer than
-    # the one from $x), the result will also be 0:
-    if (length(int($yorg->[-1])) > length(int($x->[-1])))
-      {
-      $rem = [@$x] if wantarray;               # make copy
-      splice (@$x,1);                          # keep ref to org array
-      $x->[0] = 0;                             # set to 0
-      return ($x,$rem) if wantarray;           # including remainder?
-      return $x;
-      }
-    # now calculate $x / $yorg
-
-    if (length(int($yorg->[-1])) == length(int($x->[-1])))
-      {
-      # same length, so make full compare
-
-      my $a = 0; my $j = scalar @$x - 1;
-      # manual way (abort if unequal, good for early ne)
-      while ($j >= 0)
-        {
-        last if ($a = $x->[$j] - $yorg->[$j]); $j--;
+        # shortcut, $y is < $BASE
+        my $j = @$x;
+        my $r = 0;
+        my $y = $yorg->[0];
+        my $b;
+        while ($j-- > 0) {
+            $b = $r * $BASE + $x->[$j];
+            $x->[$j] = int($b/$y);
+            $r = $b % $y;
         }
-      # $a contains the result of the compare between X and Y
-      # a < 0: x < y, a == 0: x == y, a > 0: x > y
-      if ($a <= 0)
-        {
-        $rem = [ 0 ];                  # a = 0 => x == y => rem 0
-        $rem = [@$x] if $a != 0;       # a < 0 => x < y => rem = x
-        splice(@$x,1);                 # keep single element
-        $x->[0] = 0;                   # if $a < 0
-        $x->[0] = 1 if $a == 0;        # $x == $y
-        return ($x,$rem) if wantarray; # including remainder?
+        pop @$x if @$x > 1 && $x->[-1] == 0; # splice up a leading zero
+        return ($x, $rem) if wantarray;
         return $x;
+    }
+    # now x and y have more than one element
+
+    # check whether y has more elements than x, if yet, the result will be 0
+    if (@$yorg > @$x) {
+        my $rem;
+        $rem = [ @$x ] if wantarray;    # make copy
+        @$x = 0;                        # set to 0
+        return ($x, $rem) if wantarray; # including remainder?
+        return $x;                      # only x, which is [0] now
+    }
+    # check whether the numbers have the same number of elements, in that case
+    # the result will fit into one element and can be computed efficiently
+    if (@$yorg == @$x) {
+        my $rem;
+        # if $yorg has more digits than $x (it's leading element is longer than
+        # the one from $x), the result will also be 0:
+        if (length(int($yorg->[-1])) > length(int($x->[-1]))) {
+            $rem = [ @$x ] if wantarray;     # make copy
+            @$x = 0;                          # set to 0
+            return ($x, $rem) if wantarray; # including remainder?
+            return $x;
         }
-      # $x >= $y, so proceed normally
+        # now calculate $x / $yorg
+
+        if (length(int($yorg->[-1])) == length(int($x->[-1]))) {
+            # same length, so make full compare
+
+            my $a = 0;
+            my $j = @$x - 1;
+            # manual way (abort if unequal, good for early ne)
+            while ($j >= 0) {
+                last if ($a = $x->[$j] - $yorg->[$j]);
+                $j--;
+            }
+            # $a contains the result of the compare between X and Y
+            # a < 0: x < y, a == 0: x == y, a > 0: x > y
+            if ($a <= 0) {
+                $rem = [ 0 ];                  # a = 0 => x == y => rem 0
+                $rem = [ @$x ] if $a != 0;       # a < 0 => x < y => rem = x
+                @$x = 0;                       # if $a < 0
+                $x->[0] = 1 if $a == 0;        # $x == $y
+                return ($x, $rem) if wantarray; # including remainder?
+                return $x;
+            }
+            # $x >= $y, so proceed normally
 
-      }
+        }
     }
 
-  # all other cases:
-
-  my $y = [ @$yorg ];                          # always make copy to preserve
-  my ($car,$bar,$prd,$dd,$xi,$yi,@q,$v2,$v1,@d,$tmp,$q,$u2,$u1,$u0);
+    # all other cases:
 
-  $car = $bar = $prd = 0;
-  if (($dd = int($BASE/($y->[-1]+1))) != 1) 
-    {
-    for $xi (@$x) 
-      {
-      $xi = $xi * $dd + $car;
-      $xi -= ($car = int($xi / $BASE)) * $BASE;
-      }
-    push(@$x, $car); $car = 0;
-    for $yi (@$y) 
-      {
-      $yi = $yi * $dd + $car;
-      $yi -= ($car = int($yi / $BASE)) * $BASE;
-      }
-    }
-  else 
-    {
-    push(@$x, 0);
-    }
+    my $y = [ @$yorg ];         # always make copy to preserve
 
-  # @q will accumulate the final result, $q contains the current computed
-  # part of the final result
+    my ($car, $bar, $prd, $dd, $xi, $yi, @q, $v2, $v1, @d, $tmp, $q, $u2, $u1, $u0);
 
-  @q = (); ($v2,$v1) = @$y[-2,-1];
-  $v2 = 0 unless $v2;
-  while ($#$x > $#$y) 
-    {
-    ($u2,$u1,$u0) = @$x[-3..-1];
-    $u2 = 0 unless $u2;
-    #warn "oups v1 is 0, u0: $u0 $y->[-2] $y->[-1] l ",scalar @$y,"\n"
-    # if $v1 == 0;
-    $q = (($u0 == $v1) ? $MAX_VAL : int(($u0*$BASE+$u1)/$v1));
-    --$q while ($v2*$q > ($u0*$BASE+$u1-$q*$v1)*$BASE+$u2);
-    if ($q)
-      {
-      ($car, $bar) = (0,0);
-      for ($yi = 0, $xi = $#$x-$#$y-1; $yi <= $#$y; ++$yi,++$xi) 
-        {
-        $prd = $q * $y->[$yi] + $car;
-        $prd -= ($car = int($prd / $BASE)) * $BASE;
-       $x->[$xi] += $BASE if ($bar = (($x->[$xi] -= $prd + $bar) < 0));
-       }
-      if ($x->[-1] < $car + $bar) 
-        {
-        $car = 0; --$q;
-       for ($yi = 0, $xi = $#$x-$#$y-1; $yi <= $#$y; ++$yi,++$xi) 
-          {
-         $x->[$xi] -= $BASE
-          if ($car = (($x->[$xi] += $y->[$yi] + $car) >= $BASE));
-         }
-       }   
-      }
-    pop(@$x); unshift(@q, $q);
-    }
-  if (wantarray) 
-    {
-    @d = ();
-    if ($dd != 1)  
-      {
-      $car = 0; 
-      for $xi (reverse @$x) 
-        {
-        $prd = $car * $BASE + $xi;
-        $car = $prd - ($tmp = int($prd / $dd)) * $dd;
-        unshift(@d, $tmp);
-        }
-      }
-    else 
-      {
-      @d = @$x;
-      }
+    $car = $bar = $prd = 0;
+    if (($dd = int($BASE / ($y->[-1] + 1))) != 1) {
+        for $xi (@$x) {
+            $xi = $xi * $dd + $car;
+            $xi -= ($car = int($xi / $BASE)) * $BASE;
+        }
+        push(@$x, $car);
+        $car = 0;
+        for $yi (@$y) {
+            $yi = $yi * $dd + $car;
+            $yi -= ($car = int($yi / $BASE)) * $BASE;
+        }
+    } else {
+        push(@$x, 0);
+    }
+
+    # @q will accumulate the final result, $q contains the current computed
+    # part of the final result
+
+    @q = ();
+    ($v2, $v1) = @$y[-2, -1];
+    $v2 = 0 unless $v2;
+    while ($#$x > $#$y) {
+        ($u2, $u1, $u0) = @$x[-3..-1];
+        $u2 = 0 unless $u2;
+        #warn "oups v1 is 0, u0: $u0 $y->[-2] $y->[-1] l ",scalar @$y,"\n"
+        # if $v1 == 0;
+        $q = (($u0 == $v1) ? $MAX_VAL : int(($u0 * $BASE + $u1) / $v1));
+        --$q while ($v2 * $q > ($u0 * $BASE +$ u1- $q*$v1) * $BASE + $u2);
+        if ($q) {
+            ($car, $bar) = (0, 0);
+            for ($yi = 0, $xi = $#$x - $#$y - 1; $yi <= $#$y; ++$yi, ++$xi) {
+                $prd = $q * $y->[$yi] + $car;
+                $prd -= ($car = int($prd / $BASE)) * $BASE;
+                $x->[$xi] += $BASE if ($bar = (($x->[$xi] -= $prd + $bar) < 0));
+            }
+            if ($x->[-1] < $car + $bar) {
+                $car = 0;
+                --$q;
+                for ($yi = 0, $xi = $#$x - $#$y - 1; $yi <= $#$y; ++$yi, ++$xi) {
+                    $x->[$xi] -= $BASE
+                      if ($car = (($x->[$xi] += $y->[$yi] + $car) >= $BASE));
+                }
+            }
+        }
+        pop(@$x);
+        unshift(@q, $q);
+    }
+    if (wantarray) {
+        @d = ();
+        if ($dd != 1) {
+            $car = 0;
+            for $xi (reverse @$x) {
+                $prd = $car * $BASE + $xi;
+                $car = $prd - ($tmp = int($prd / $dd)) * $dd;
+                unshift(@d, $tmp);
+            }
+        } else {
+            @d = @$x;
+        }
+        @$x = @q;
+        my $d = \@d;
+        __strip_zeros($x);
+        __strip_zeros($d);
+        return ($x, $d);
+    }
     @$x = @q;
-    my $d = \@d; 
     __strip_zeros($x);
-    __strip_zeros($d);
-    return ($x,$d);
-    }
-  @$x = @q;
-  __strip_zeros($x);
-  $x;
-  }
+    $x;
+}
 
-sub _div_use_div
-  {
-  # ref to array, ref to array, modify first array and return remainder if 
-  # in list context
-  my ($c,$x,$yorg) = @_;
+sub _div_use_div {
+    # ref to array, ref to array, modify first array and return remainder if
+    # in list context
+    my ($c, $x, $yorg) = @_;
 
-  # the general div algorithm here is about O(N*N) and thus quite slow, so
-  # we first check for some special cases and use shortcuts to handle them.
+    # the general div algorithm here is about O(N*N) and thus quite slow, so
+    # we first check for some special cases and use shortcuts to handle them.
 
-  # This works, because we store the numbers in a chunked format where each
-  # element contains 5..7 digits (depending on system).
+    # This works, because we store the numbers in a chunked format where each
+    # element contains 5..7 digits (depending on system).
 
-  # if both numbers have only one element:
-  if (@$x == 1 && @$yorg == 1)
-    {
-    # shortcut, $yorg and $x are two small numbers
-    if (wantarray)
-      {
-      my $r = [ $x->[0] % $yorg->[0] ];
-      $x->[0] = int($x->[0] / $yorg->[0]);
-      return ($x,$r); 
-      }
-    else
-      {
-      $x->[0] = int($x->[0] / $yorg->[0]);
-      return $x; 
-      }
-    }
-  # if x has more than one, but y has only one element:
-  if (@$yorg == 1)
-    {
-    my $rem;
-    $rem = _mod($c,[ @$x ],$yorg) if wantarray;
-
-    # shortcut, $y is < $BASE
-    my $j = scalar @$x; my $r = 0; 
-    my $y = $yorg->[0]; my $b;
-    while ($j-- > 0)
-      {
-      $b = $r * $BASE + $x->[$j];
-      $x->[$j] = int($b/$y);
-      $r = $b % $y;
-      }
-    pop @$x if @$x > 1 && $x->[-1] == 0;       # splice up a leading zero 
-    return ($x,$rem) if wantarray;
-    return $x;
+    # if both numbers have only one element:
+    if (@$x == 1 && @$yorg == 1) {
+        # shortcut, $yorg and $x are two small numbers
+        if (wantarray) {
+            my $r = [ $x->[0] % $yorg->[0] ];
+            $x->[0] = int($x->[0] / $yorg->[0]);
+            return ($x, $r);
+        } else {
+            $x->[0] = int($x->[0] / $yorg->[0]);
+            return $x;
+        }
     }
-  # now x and y have more than one element
+    # if x has more than one, but y has only one element:
+    if (@$yorg == 1) {
+        my $rem;
+        $rem = _mod($c, [ @$x ], $yorg) if wantarray;
 
-  # check whether y has more elements than x, if yet, the result will be 0
-  if (@$yorg > @$x)
-    {
-    my $rem;
-    $rem = [@$x] if wantarray;                 # make copy
-    splice (@$x,1);                            # keep ref to original array
-    $x->[0] = 0;                               # set to 0
-    return ($x,$rem) if wantarray;             # including remainder?
-    return $x;                                 # only x, which is [0] now
-    }
-  # check whether the numbers have the same number of elements, in that case
-  # the result will fit into one element and can be computed efficiently
-  if (@$yorg == @$x)
-    {
-    my $rem;
-    # if $yorg has more digits than $x (it's leading element is longer than
-    # the one from $x), the result will also be 0:
-    if (length(int($yorg->[-1])) > length(int($x->[-1])))
-      {
-      $rem = [@$x] if wantarray;               # make copy
-      splice (@$x,1);                          # keep ref to org array
-      $x->[0] = 0;                             # set to 0
-      return ($x,$rem) if wantarray;           # including remainder?
-      return $x;
-      }
-    # now calculate $x / $yorg
-
-    if (length(int($yorg->[-1])) == length(int($x->[-1])))
-      {
-      # same length, so make full compare
-
-      my $a = 0; my $j = scalar @$x - 1;
-      # manual way (abort if unequal, good for early ne)
-      while ($j >= 0)
-        {
-        last if ($a = $x->[$j] - $yorg->[$j]); $j--;
+        # shortcut, $y is < $BASE
+        my $j = @$x;
+        my $r = 0;
+        my $y = $yorg->[0];
+        my $b;
+        while ($j-- > 0) {
+            $b = $r * $BASE + $x->[$j];
+            $x->[$j] = int($b/$y);
+            $r = $b % $y;
         }
-      # $a contains the result of the compare between X and Y
-      # a < 0: x < y, a == 0: x == y, a > 0: x > y
-      if ($a <= 0)
-        {
-        $rem = [ 0 ];                  # a = 0 => x == y => rem 0
-        $rem = [@$x] if $a != 0;       # a < 0 => x < y => rem = x
-        splice(@$x,1);                 # keep single element
-        $x->[0] = 0;                   # if $a < 0
-        $x->[0] = 1 if $a == 0;        # $x == $y
-        return ($x,$rem) if wantarray; # including remainder?
+        pop @$x if @$x > 1 && $x->[-1] == 0; # splice up a leading zero
+        return ($x, $rem) if wantarray;
         return $x;
+    }
+    # now x and y have more than one element
+
+    # check whether y has more elements than x, if yet, the result will be 0
+    if (@$yorg > @$x) {
+        my $rem;
+        $rem = [ @$x ] if wantarray;    # make copy
+        @$x = 0;                        # set to 0
+        return ($x, $rem) if wantarray; # including remainder?
+        return $x;                      # only x, which is [0] now
+    }
+    # check whether the numbers have the same number of elements, in that case
+    # the result will fit into one element and can be computed efficiently
+    if (@$yorg == @$x) {
+        my $rem;
+        # if $yorg has more digits than $x (it's leading element is longer than
+        # the one from $x), the result will also be 0:
+        if (length(int($yorg->[-1])) > length(int($x->[-1]))) {
+            $rem = [ @$x ] if wantarray;        # make copy
+            @$x = 0;                            # set to 0
+            return ($x, $rem) if wantarray;     # including remainder?
+            return $x;
         }
-      # $x >= $y, so proceed normally
+        # now calculate $x / $yorg
+
+        if (length(int($yorg->[-1])) == length(int($x->[-1]))) {
+            # same length, so make full compare
+
+            my $a = 0;
+            my $j = @$x - 1;
+            # manual way (abort if unequal, good for early ne)
+            while ($j >= 0) {
+                last if ($a = $x->[$j] - $yorg->[$j]);
+                $j--;
+            }
+            # $a contains the result of the compare between X and Y
+            # a < 0: x < y, a == 0: x == y, a > 0: x > y
+            if ($a <= 0) {
+                $rem = [ 0 ];                   # a = 0 => x == y => rem 0
+                $rem = [ @$x ] if $a != 0;      # a < 0 => x < y => rem = x
+                @$x = 0;
+                $x->[0] = 0;                    # if $a < 0
+                $x->[0] = 1 if $a == 0;         # $x == $y
+                return ($x, $rem) if wantarray; # including remainder?
+                return $x;
+            }
+            # $x >= $y, so proceed normally
 
-      }
+        }
     }
 
-  # all other cases:
+    # all other cases:
 
-  my $y = [ @$yorg ];                          # always make copy to preserve
-  my ($car,$bar,$prd,$dd,$xi,$yi,@q,$v2,$v1,@d,$tmp,$q,$u2,$u1,$u0);
+    my $y = [ @$yorg ];         # always make copy to preserve
 
-  $car = $bar = $prd = 0;
-  if (($dd = int($BASE/($y->[-1]+1))) != 1) 
-    {
-    for $xi (@$x) 
-      {
-      $xi = $xi * $dd + $car;
-      $xi -= ($car = int($xi / $BASE)) * $BASE;
-      }
-    push(@$x, $car); $car = 0;
-    for $yi (@$y) 
-      {
-      $yi = $yi * $dd + $car;
-      $yi -= ($car = int($yi / $BASE)) * $BASE;
-      }
-    }
-  else 
-    {
-    push(@$x, 0);
-    }
+    my ($car, $bar, $prd, $dd, $xi, $yi, @q, $v2, $v1, @d, $tmp, $q, $u2, $u1, $u0);
 
-  # @q will accumulate the final result, $q contains the current computed
-  # part of the final result
-
-  @q = (); ($v2,$v1) = @$y[-2,-1];
-  $v2 = 0 unless $v2;
-  while ($#$x > $#$y) 
-    {
-    ($u2,$u1,$u0) = @$x[-3..-1];
-    $u2 = 0 unless $u2;
-    #warn "oups v1 is 0, u0: $u0 $y->[-2] $y->[-1] l ",scalar @$y,"\n"
-    # if $v1 == 0;
-    $q = (($u0 == $v1) ? $MAX_VAL : int(($u0*$BASE+$u1)/$v1));
-    --$q while ($v2*$q > ($u0*$BASE+$u1-$q*$v1)*$BASE+$u2);
-    if ($q)
-      {
-      ($car, $bar) = (0,0);
-      for ($yi = 0, $xi = $#$x-$#$y-1; $yi <= $#$y; ++$yi,++$xi) 
-        {
-        $prd = $q * $y->[$yi] + $car;
-        $prd -= ($car = int($prd / $BASE)) * $BASE;
-       $x->[$xi] += $BASE if ($bar = (($x->[$xi] -= $prd + $bar) < 0));
-       }
-      if ($x->[-1] < $car + $bar) 
-        {
-        $car = 0; --$q;
-       for ($yi = 0, $xi = $#$x-$#$y-1; $yi <= $#$y; ++$yi,++$xi) 
-          {
-         $x->[$xi] -= $BASE
-          if ($car = (($x->[$xi] += $y->[$yi] + $car) >= $BASE));
-         }
-       }   
-      }
-    pop(@$x); unshift(@q, $q);
-    }
-  if (wantarray) 
-    {
-    @d = ();
-    if ($dd != 1)  
-      {
-      $car = 0; 
-      for $xi (reverse @$x) 
-        {
-        $prd = $car * $BASE + $xi;
-        $car = $prd - ($tmp = int($prd / $dd)) * $dd;
-        unshift(@d, $tmp);
-        }
-      }
-    else 
-      {
-      @d = @$x;
-      }
+    $car = $bar = $prd = 0;
+    if (($dd = int($BASE / ($y->[-1] + 1))) != 1) {
+        for $xi (@$x) {
+            $xi = $xi * $dd + $car;
+            $xi -= ($car = int($xi / $BASE)) * $BASE;
+        }
+        push(@$x, $car);
+        $car = 0;
+        for $yi (@$y) {
+            $yi = $yi * $dd + $car;
+            $yi -= ($car = int($yi / $BASE)) * $BASE;
+        }
+    } else {
+        push(@$x, 0);
+    }
+
+    # @q will accumulate the final result, $q contains the current computed
+    # part of the final result
+
+    @q = ();
+    ($v2, $v1) = @$y[-2, -1];
+    $v2 = 0 unless $v2;
+    while ($#$x > $#$y) {
+        ($u2, $u1, $u0) = @$x[-3..-1];
+        $u2 = 0 unless $u2;
+        #warn "oups v1 is 0, u0: $u0 $y->[-2] $y->[-1] l ",scalar @$y,"\n"
+        # if $v1 == 0;
+        $q = (($u0 == $v1) ? $MAX_VAL : int(($u0 * $BASE + $u1) / $v1));
+        --$q while ($v2 * $q > ($u0 * $BASE + $u1 - $q * $v1) * $BASE + $u2);
+        if ($q) {
+            ($car, $bar) = (0, 0);
+            for ($yi = 0, $xi = $#$x - $#$y - 1; $yi <= $#$y; ++$yi, ++$xi) {
+                $prd = $q * $y->[$yi] + $car;
+                $prd -= ($car = int($prd / $BASE)) * $BASE;
+                $x->[$xi] += $BASE if ($bar = (($x->[$xi] -= $prd + $bar) < 0));
+            }
+            if ($x->[-1] < $car + $bar) {
+                $car = 0;
+                --$q;
+                for ($yi = 0, $xi = $#$x - $#$y - 1; $yi <= $#$y; ++$yi, ++$xi) {
+                    $x->[$xi] -= $BASE
+                      if ($car = (($x->[$xi] += $y->[$yi] + $car) >= $BASE));
+                }
+            }
+        }
+        pop(@$x);
+        unshift(@q, $q);
+    }
+    if (wantarray) {
+        @d = ();
+        if ($dd != 1) {
+            $car = 0;
+            for $xi (reverse @$x) {
+                $prd = $car * $BASE + $xi;
+                $car = $prd - ($tmp = int($prd / $dd)) * $dd;
+                unshift(@d, $tmp);
+            }
+        } else {
+            @d = @$x;
+        }
+        @$x = @q;
+        my $d = \@d;
+        __strip_zeros($x);
+        __strip_zeros($d);
+        return ($x, $d);
+    }
     @$x = @q;
-    my $d = \@d; 
     __strip_zeros($x);
-    __strip_zeros($d);
-    return ($x,$d);
-    }
-  @$x = @q;
-  __strip_zeros($x);
-  $x;
-  }
+    $x;
+}
 
 ##############################################################################
 # testing
@@ -1175,7 +1101,7 @@ sub _acmp {
 
     # shortcut for short numbers
     return (($cx->[0] <=> $cy->[0]) <=> 0)
-      if @$cx == @$cy && @$cx == 1;
+      if @$cx == 1 && @$cy == 1;
 
     # fast comp based on number of array elements (aka pseudo-length)
     my $lxy = (@$cx - @$cy)
@@ -1207,18 +1133,22 @@ sub _len {
 }
 
 sub _digit {
-    # Return the nth digit. Zero is rightmost, so _digit(123,0) gives 3.
+    # Return the nth digit. Zero is rightmost, so _digit(123, 0) gives 3.
     # Negative values count from the left, so _digit(123, -1) gives 1.
     my ($c, $x, $n) = @_;
 
     my $len = _len('', $x);
 
     $n += $len if $n < 0;               # -1 last, -2 second-to-last
+
+    # Math::BigInt::Calc returns 0 if N is out of range, but this is not done
+    # by the other backend libraries.
+
     return "0" if $n < 0 || $n >= $len; # return 0 for digits out of range
 
-    my $elem = int($n / $BASE_LEN);     # which array element
-    my $digit = $n % $BASE_LEN;         # which digit in this element
-    substr("$x->[$elem]", -$digit - 1, 1);
+    my $elem = int($n / $BASE_LEN);     # index of array element
+    my $digit = $n % $BASE_LEN;         # index of digit within the element
+    substr("0" x $BASE_LEN . "$x->[$elem]", -1 - $digit, 1);
 }
 
 sub _zeros {
@@ -1231,16 +1161,13 @@ sub _zeros {
     return 0 if @$x == 1 && $x->[0] == 0;
 
     my $zeros = 0;
-    my $elem;
-    foreach my $e (@$x) {
-        if ($e != 0) {
-            $elem = "$e";               # preserve x
-            $elem =~ s/.*?(0*$)/$1/;    # strip anything not zero
-            $zeros *= $BASE_LEN;        # elems * 5
-            $zeros += length($elem);    # count trailing zeros
+    foreach my $elem (@$x) {
+        if ($elem != 0) {
+            $elem =~ /[^0](0*)\z/;
+            $zeros += length($1);       # count trailing zeros
             last;                       # early out
         }
-        $zeros ++;                      # real else branch: 50% slower!
+        $zeros += $BASE_LEN;
     }
     $zeros;
 }
@@ -1249,7 +1176,7 @@ sub _zeros {
 # _is_* routines
 
 sub _is_zero {
-    # return true if arg is zero 
+    # return true if arg is zero
     @{$_[1]} == 1 && $_[1]->[0] == 0 ? 1 : 0;
 }
 
@@ -1269,25 +1196,22 @@ sub _is_one {
 }
 
 sub _is_two {
-    # return true if arg is two 
+    # return true if arg is two
     @{$_[1]} == 1 && $_[1]->[0] == 2 ? 1 : 0;
 }
 
 sub _is_ten {
-    # return true if arg is ten 
+    # return true if arg is ten
     @{$_[1]} == 1 && $_[1]->[0] == 10 ? 1 : 0;
 }
 
 sub __strip_zeros {
     # Internal normalization function that strips leading zeros from the array.
     # Args: ref to array
-    my $s = shift;
-
-    my $cnt = @$s;              # get count of parts
-    my $i = $cnt - 1;
-    push @$s, 0 if $i < 0;     # div might return empty results, so fix it
+    my $x = shift;
 
-    return $s if @$s == 1;     # early out
+    push @$x, 0 if @$x == 0;    # div might return empty results, so fix it
+    return $x if @$x == 1;      # early out
 
     #print "strip: cnt $cnt i $i\n";
     # '0', '3', '4', '0', '0',
@@ -1297,13 +1221,15 @@ sub __strip_zeros {
     # i = 3
     # => fcnt = cnt - i (5-2 => 3, cnt => 5-1 = 4, throw away from 4th pos)
     # >= 1: skip first part (this can be zero)
+
+    my $i = $#$x;
     while ($i > 0) {
-        last if $s->[$i] != 0;
+        last if $x->[$i] != 0;
         $i--;
     }
     $i++;
-    splice @$s, $i if $i < $cnt;        # $i cant be 0
-    $s;
+    splice(@$x, $i) if $i < @$x;
+    $x;
 }
 
 ###############################################################################
@@ -1313,30 +1239,37 @@ sub _check {
     # used by the test suite
     my $x = $_[1];
 
-    return "$x is not a reference" if !ref($x);
-
-    # are all parts are valid?
-    my $i = 0;
-    my $j = @$x;
-    my ($e, $try);
-    while ($i < $j) {
-        $e = $x->[$i]; $e = 'undef' unless defined $e;
-        $try = '=~ /^[\+]?[0-9]+\$/; '."($x, $e)";
-        last if $e !~ /^[+]?[0-9]+$/;
-        $try = '=~ /^[\+]?[0-9]+\$/; '."($x, $e) (stringify)";
-        last if "$e" !~ /^[+]?[0-9]+$/;
-        $try = '=~ /^[\+]?[0-9]+\$/; '."($x, $e) (cat-stringify)";
-        last if '' . "$e" !~ /^[+]?[0-9]+$/;
-        $try = ' < 0 || >= $BASE; '."($x, $e)";
-        last if $e <0 || $e >= $BASE;
-        # This test is disabled, since new/bnorm and certain ops (like early out
-        # in add/sub) are allowed/expected to leave '00000' in some elements.
-        #$try = '=~ /^00+/; '."($x, $e)";
-        #last if $e =~ /^00+/;
-        $i++;
-    }
-    return "Illegal part '$e' at pos $i (tested: $try)" if $i < $j;
-    0;
+    return "Undefined" unless defined $x;
+    return "$x is not a reference" unless ref($x);
+    return "Not an ARRAY reference" unless ref($x) eq 'ARRAY';
+
+    for (my $i = 0 ; $i <= $#$x ; ++ $i) {
+        my $e = $x -> [$i];
+
+        return "Element at index $i is undefined"
+          unless defined $e;
+
+        return "Element at index $i is a '" . ref($e) .
+          "', which is not a scalar"
+          unless ref($e) eq "";
+
+        return "Element at index $i is '$e', which does not look like an" .
+          " normal integer"
+            #unless $e =~ /^([1-9]\d*|0)\z/;
+            unless $e =~ /^\d+\z/;
+
+        return "Element at index $i is '$e', which is negative"
+          if $e < 0;
+
+        return "Element at index $i is '$e', which is not smaller than" .
+          " the base '$BASE'"
+            if $e >= $BASE;
+
+        return "Element at index $i (last element) is zero"
+          if $#$x > 0 && $i == $#$x && $e == 0;
+    }
+
+    return 0;
 }
 
 ###############################################################################
@@ -1355,7 +1288,7 @@ sub _mod {
     my $y = $yo->[0];
 
     # if both are single element arrays
-    if (scalar @$x == 1) {
+    if (@$x == 1) {
         $x->[0] %= $y;
         return $x;
     }
@@ -1372,7 +1305,7 @@ sub _mod {
         # simplified
         my $r = 0;
         foreach (@$x) {
-            $r = ($r + $_) % $y;        # not much faster, but heh...
+            $r = ($r + $_) % $y; # not much faster, but heh...
             #$r += $_ % $y; $r %= $y;
         }
         $r = 0 if $r == $y;
@@ -1393,7 +1326,7 @@ sub _mod {
         $r = 0 if $r == $y;
         $x->[0] = $r;
     }
-    @$x = $x->[0];             # keep one element of @$x
+    @$x = $x->[0];              # keep one element of @$x
     return $x;
 }
 
@@ -1405,29 +1338,29 @@ sub _rsft {
 
     if ($n != 10) {
         $n = _new($c, $n);
-        return _div($c, $x, _pow($c, $n, $y));
+        return scalar _div($c, $x, _pow($c, $n, $y));
     }
 
     # shortcut (faster) for shifting by 10)
     # multiples of $BASE_LEN
-    my $dst = 0;                                            # destination
-    my $src = _num($c, $y);                                 # as normal int
+    my $dst = 0;                # destination
+    my $src = _num($c, $y);     # as normal int
     my $xlen = (@$x - 1) * $BASE_LEN + length(int($x->[-1]));
     if ($src >= $xlen or ($src == $xlen and !defined $x->[1])) {
         # 12345 67890 shifted right by more than 10 digits => 0
-        splice(@$x, 1);                 # leave only one element
-        $x->[0] = 0;                    # set to zero
+        splice(@$x, 1);         # leave only one element
+        $x->[0] = 0;            # set to zero
         return $x;
     }
-    my $rem = $src % $BASE_LEN;         # remainder to shift
-    $src = int($src / $BASE_LEN);       # source
+    my $rem = $src % $BASE_LEN;   # remainder to shift
+    $src = int($src / $BASE_LEN); # source
     if ($rem == 0) {
-        splice(@$x, 0, $src);           # even faster, 38.4 => 39.3
+        splice(@$x, 0, $src);   # even faster, 38.4 => 39.3
     } else {
-        my $len = @$x - $src;           # elems to go
+        my $len = @$x - $src;   # elems to go
         my $vd;
         my $z = '0' x $BASE_LEN;
-        $x->[@$x] = 0;                  # avoid || 0 test inside loop
+        $x->[ @$x ] = 0;          # avoid || 0 test inside loop
         while ($dst < $len) {
             $vd = $z . $x->[$src];
             $vd = substr($vd, -$BASE_LEN, $BASE_LEN - $rem);
@@ -1437,47 +1370,58 @@ sub _rsft {
             $x->[$dst] = int($vd);
             $dst++;
         }
-        splice(@$x, $dst) if $dst > 0;          # kill left-over array elems
-        pop @$x if $x->[-1] == 0 && @$x > 1;    # kill last element if 0
-    }                                           # else rem == 0
+        splice(@$x, $dst) if $dst > 0;       # kill left-over array elems
+        pop @$x if $x->[-1] == 0 && @$x > 1; # kill last element if 0
+    }                                        # else rem == 0
     $x;
 }
 
 sub _lsft {
-    my ($c, $x, $y, $n) = @_;
-
-    if ($n != 10) {
-        $n = _new($c, $n);
-        return _mul($c, $x, _pow($c, $n, $y));
-    }
-
-    # shortcut (faster) for shifting by 10) since we are in base 10eX
-    # multiples of $BASE_LEN:
-    my $src = @$x;                              # source
-    my $len = _num($c, $y);                    # shift-len as normal int
-    my $rem = $len % $BASE_LEN;                        # remainder to shift
-    my $dst = $src + int($len / $BASE_LEN);     # destination
-    my $vd;                                     # further speedup
-    $x->[$src] = 0;                             # avoid first ||0 for speed
-    my $z = '0' x $BASE_LEN;
-    while ($src >= 0) {
-        $vd = $x->[$src];
-        $vd = $z . $vd;
-        $vd = substr($vd, -$BASE_LEN + $rem, $BASE_LEN - $rem);
-        $vd .= $src > 0 ? substr($z . $x->[$src - 1], -$BASE_LEN, $rem)
-                        : '0' x $rem;
-        $vd = substr($vd, -$BASE_LEN, $BASE_LEN) if length($vd) > $BASE_LEN;
-        $x->[$dst] = int($vd);
-        $dst--;
-        $src--;
-    }
-    # set lowest parts to 0
-    while ($dst >= 0) {
-        $x->[$dst--] = 0;
-    }
-    # fix spurious last zero element
-    splice @$x, -1 if $x->[-1] == 0;
-    $x;
+    my ($c, $x, $n, $b) = @_;
+
+    return $x if _is_zero($c, $x);
+
+    # Handle the special case when the base is a power of 10. Don't check
+    # whether log($b)/log(10) is an integer, because log(1000)/log(10) is not
+    # exactly 3.
+
+    my $log10 = sprintf "%.0f", log($b) / log(10);
+    if ($b == 10 ** $log10) {
+        $b = 10;
+        $n = _mul($c, $n, _new($c, $log10));
+
+        # shortcut (faster) for shifting by 10) since we are in base 10eX
+        # multiples of $BASE_LEN:
+        my $src = @$x;                      # source
+        my $len = _num($c, $n);             # shift-len as normal int
+        my $rem = $len % $BASE_LEN;         # remainder to shift
+        my $dst = $src + int($len / $BASE_LEN); # destination
+        my $vd;                                 # further speedup
+        $x->[$src] = 0;                         # avoid first ||0 for speed
+        my $z = '0' x $BASE_LEN;
+        while ($src >= 0) {
+            $vd = $x->[$src];
+            $vd = $z . $vd;
+            $vd = substr($vd, -$BASE_LEN + $rem, $BASE_LEN - $rem);
+            $vd .= $src > 0 ? substr($z . $x->[$src - 1], -$BASE_LEN, $rem)
+              : '0' x $rem;
+            $vd = substr($vd, -$BASE_LEN, $BASE_LEN) if length($vd) > $BASE_LEN;
+            $x->[$dst] = int($vd);
+            $dst--;
+            $src--;
+        }
+        # set lowest parts to 0
+        while ($dst >= 0) {
+            $x->[$dst--] = 0;
+        }
+        # fix spurious last zero element
+        splice @$x, -1 if $x->[-1] == 0;
+        return $x;
+    } else {
+        $b = _new($c, $b);
+        #print $c->_str($b);
+        return _mul($c, $x, _pow($c, $b, $n));
+    }
 }
 
 sub _pow {
@@ -1487,19 +1431,19 @@ sub _pow {
 
     if (@$cy == 1 && $cy->[0] == 0) {
         splice(@$cx, 1);
-        $cx->[0] = 1;                   # y == 0 => x => 1
+        $cx->[0] = 1;           # y == 0 => x => 1
         return $cx;
     }
 
-    if ((@$cx == 1 && $cx->[0] == 1) ||     #    x == 1
-        (@$cy == 1 && $cy->[0] == 1))       # or y == 1
+    if ((@$cx == 1 && $cx->[0] == 1) || #    x == 1
+        (@$cy == 1 && $cy->[0] == 1))   # or y == 1
     {
         return $cx;
     }
 
     if (@$cx == 1 && $cx->[0] == 0) {
         splice (@$cx, 1);
-        $cx->[0] = 0;                   # 0 ** y => 0 (if not y <= 0)
+        $cx->[0] = 0;           # 0 ** y => 0 (if not y <= 0)
         return $cx;
     }
 
@@ -1528,9 +1472,9 @@ sub _nok {
     # nok(n, n-k), to minimize the number if iterations in the loop.
 
     {
-        my $twok = _mul($c, _two($c), _copy($c, $k));   # 2 * k
-        if (_acmp($c, $twok, $n) > 0) {                 # if 2*k > n
-            $k = _sub($c, _copy($c, $n), $k);           # k = n - k
+        my $twok = _mul($c, _two($c), _copy($c, $k)); # 2 * k
+        if (_acmp($c, $twok, $n) > 0) {               # if 2*k > n
+            $k = _sub($c, _copy($c, $n), $k);         # k = n - k
         }
     }
 
@@ -1542,9 +1486,7 @@ sub _nok {
 
     if (_is_zero($c, $k)) {
         @$n = 1;
-    }
-
-    else {
+    } else {
 
         # Make a copy of the original n, since we'll be modifying n in-place.
 
@@ -1581,879 +1523,803 @@ sub _nok {
 }
 
 my @factorials = (
-  1,
-  1,
-  2,
-  2*3,
-  2*3*4,
-  2*3*4*5,
-  2*3*4*5*6,
-  2*3*4*5*6*7,
-);
-
-sub _fac
-  {
-  # factorial of $x
-  # ref to array, return ref to array
-  my ($c,$cx) = @_;
-
-  if ((@$cx == 1) && ($cx->[0] <= 7))
-    {
-    $cx->[0] = $factorials[$cx->[0]];          # 0 => 1, 1 => 1, 2 => 2 etc.
-    return $cx;
+                  1,
+                  1,
+                  2,
+                  2*3,
+                  2*3*4,
+                  2*3*4*5,
+                  2*3*4*5*6,
+                  2*3*4*5*6*7,
+                 );
+
+sub _fac {
+    # factorial of $x
+    # ref to array, return ref to array
+    my ($c, $cx) = @_;
+
+    if ((@$cx == 1) && ($cx->[0] <= 7)) {
+        $cx->[0] = $factorials[$cx->[0]]; # 0 => 1, 1 => 1, 2 => 2 etc.
+        return $cx;
     }
 
-  if ((@$cx == 1) &&           # we do this only if $x >= 12 and $x <= 7000
-      ($cx->[0] >= 12 && $cx->[0] < 7000))
-    {
+    if ((@$cx == 1) &&          # we do this only if $x >= 12 and $x <= 7000
+        ($cx->[0] >= 12 && $cx->[0] < 7000)) {
 
-  # Calculate (k-j) * (k-j+1) ... k .. (k+j-1) * (k + j)
-  # See http://blogten.blogspot.com/2007/01/calculating-n.html
-  # The above series can be expressed as factors:
-  #   k * k - (j - i) * 2
-  # We cache k*k, and calculate (j * j) as the sum of the first j odd integers
+        # Calculate (k-j) * (k-j+1) ... k .. (k+j-1) * (k + j)
+        # See http://blogten.blogspot.com/2007/01/calculating-n.html
+        # The above series can be expressed as factors:
+        #   k * k - (j - i) * 2
+        # We cache k*k, and calculate (j * j) as the sum of the first j odd integers
 
-  # This will not work when N exceeds the storage of a Perl scalar, however,
-  # in this case the algorithm would be way to slow to terminate, anyway.
+        # This will not work when N exceeds the storage of a Perl scalar, however,
+        # in this case the algorithm would be way too slow to terminate, anyway.
 
-  # As soon as the last element of $cx is 0, we split it up and remember
-  # how many zeors we got so far. The reason is that n! will accumulate
-  # zeros at the end rather fast.
-  my $zero_elements = 0;
+        # As soon as the last element of $cx is 0, we split it up and remember
+        # how many zeors we got so far. The reason is that n! will accumulate
+        # zeros at the end rather fast.
+        my $zero_elements = 0;
 
-  # If n is even, set n = n -1
-  my $k = _num($c,$cx); my $even = 1;
-  if (($k & 1) == 0)
-    {
-    $even = $k; $k --;
-    }
-  # set k to the center point
-  $k = ($k + 1) / 2;
-#  print "k $k even: $even\n";
-  # now calculate k * k
-  my $k2 = $k * $k;
-  my $odd = 1; my $sum = 1;
-  my $i = $k - 1;
-  # keep reference to x
-  my $new_x = _new($c, $k * $even);
-  @$cx = @$new_x;
-  if ($cx->[0] == 0)
-    {
-    $zero_elements ++; shift @$cx;
-    }
-#  print STDERR "x = ", _str($c,$cx),"\n";
-  my $BASE2 = int(sqrt($BASE))-1;
-  my $j = 1; 
-  while ($j <= $i)
-    {
-    my $m = ($k2 - $sum); $odd += 2; $sum += $odd; $j++;
-    while ($j <= $i && ($m < $BASE2) && (($k2 - $sum) < $BASE2))
-      {
-      $m *= ($k2 - $sum);
-      $odd += 2; $sum += $odd; $j++;
-#      print STDERR "\n k2 $k2 m $m sum $sum odd $odd\n"; sleep(1);
-      }
-    if ($m < $BASE)
-      {
-      _mul($c,$cx,[$m]);
-      }
-    else
-      {
-      _mul($c,$cx,$c->_new($m));
-      }
-    if ($cx->[0] == 0)
-      {
-      $zero_elements ++; shift @$cx;
-      }
-#    print STDERR "Calculate $k2 - $sum = $m (x = ", _str($c,$cx),")\n";
-    }
-  # multiply in the zeros again
-  unshift @$cx, (0) x $zero_elements; 
-  return $cx;
-  }
-
-  # go forward until $base is exceeded
-  # limit is either $x steps (steps == 100 means a result always too high) or
-  # $base.
-  my $steps = 100; $steps = $cx->[0] if @$cx == 1;
-  my $r = 2; my $cf = 3; my $step = 2; my $last = $r;
-  while ($r*$cf < $BASE && $step < $steps)
-    {
-    $last = $r; $r *= $cf++; $step++;
-    }
-  if ((@$cx == 1) && $step == $cx->[0])
-    {
-    # completely done, so keep reference to $x and return
-    $cx->[0] = $r;
-    return $cx;
-    }
-  
-  # now we must do the left over steps
-  my $n;                                       # steps still to do
-  if (scalar @$cx == 1)
-    {
-    $n = $cx->[0];
-    }
-  else
-    {
-    $n = _copy($c,$cx);
+        # If n is even, set n = n -1
+        my $k = _num($c, $cx);
+        my $even = 1;
+        if (($k & 1) == 0) {
+            $even = $k;
+            $k --;
+        }
+        # set k to the center point
+        $k = ($k + 1) / 2;
+        #  print "k $k even: $even\n";
+        # now calculate k * k
+        my $k2 = $k * $k;
+        my $odd = 1;
+        my $sum = 1;
+        my $i = $k - 1;
+        # keep reference to x
+        my $new_x = _new($c, $k * $even);
+        @$cx = @$new_x;
+        if ($cx->[0] == 0) {
+            $zero_elements ++;
+            shift @$cx;
+        }
+        #  print STDERR "x = ", _str($c, $cx), "\n";
+        my $BASE2 = int(sqrt($BASE))-1;
+        my $j = 1;
+        while ($j <= $i) {
+            my $m = ($k2 - $sum);
+            $odd += 2;
+            $sum += $odd;
+            $j++;
+            while ($j <= $i && ($m < $BASE2) && (($k2 - $sum) < $BASE2)) {
+                $m *= ($k2 - $sum);
+                $odd += 2;
+                $sum += $odd;
+                $j++;
+                #      print STDERR "\n k2 $k2 m $m sum $sum odd $odd\n"; sleep(1);
+            }
+            if ($m < $BASE) {
+                _mul($c, $cx, [$m]);
+            } else {
+                _mul($c, $cx, $c->_new($m));
+            }
+            if ($cx->[0] == 0) {
+                $zero_elements ++;
+                shift @$cx;
+            }
+            #    print STDERR "Calculate $k2 - $sum = $m (x = ", _str($c, $cx), ")\n";
+        }
+        # multiply in the zeros again
+        unshift @$cx, (0) x $zero_elements;
+        return $cx;
     }
 
-  # Set $cx to the last result below $BASE (but keep ref to $x)
-  $cx->[0] = $last; splice (@$cx,1);
-  # As soon as the last element of $cx is 0, we split it up and remember
-  # how many zeors we got so far. The reason is that n! will accumulate
-  # zeros at the end rather fast.
-  my $zero_elements = 0;
+    # go forward until $base is exceeded limit is either $x steps (steps == 100
+    # means a result always too high) or $base.
+    my $steps = 100;
+    $steps = $cx->[0] if @$cx == 1;
+    my $r = 2;
+    my $cf = 3;
+    my $step = 2;
+    my $last = $r;
+    while ($r * $cf < $BASE && $step < $steps) {
+        $last = $r;
+        $r *= $cf++;
+        $step++;
+    }
+    if ((@$cx == 1) && $step == $cx->[0]) {
+        # completely done, so keep reference to $x and return
+        $cx->[0] = $r;
+        return $cx;
+    }
 
-  # do left-over steps fit into a scalar?
-  if (ref $n eq 'ARRAY')
-    {
-    # No, so use slower inc() & cmp()
-    # ($n is at least $BASE here)
-    my $base_2 = int(sqrt($BASE)) - 1;
-    #print STDERR "base_2: $base_2\n"; 
-    while ($step < $base_2)
-      {
-      if ($cx->[0] == 0)
-        {
-        $zero_elements ++; shift @$cx;
-        }
-      my $b = $step * ($step + 1); $step += 2;
-      _mul($c,$cx,[$b]);
-      }
-    $step = [$step];
-    while (_acmp($c,$step,$n) <= 0)
-      {
-      if ($cx->[0] == 0)
-        {
-        $zero_elements ++; shift @$cx;
+    # now we must do the left over steps
+    my $n;                      # steps still to do
+    if (@$cx == 1) {
+        $n = $cx->[0];
+    } else {
+        $n = _copy($c, $cx);
+    }
+
+    # Set $cx to the last result below $BASE (but keep ref to $x)
+    $cx->[0] = $last;
+    splice (@$cx, 1);
+    # As soon as the last element of $cx is 0, we split it up and remember
+    # how many zeors we got so far. The reason is that n! will accumulate
+    # zeros at the end rather fast.
+    my $zero_elements = 0;
+
+    # do left-over steps fit into a scalar?
+    if (ref $n eq 'ARRAY') {
+        # No, so use slower inc() & cmp()
+        # ($n is at least $BASE here)
+        my $base_2 = int(sqrt($BASE)) - 1;
+        #print STDERR "base_2: $base_2\n";
+        while ($step < $base_2) {
+            if ($cx->[0] == 0) {
+                $zero_elements ++;
+                shift @$cx;
+            }
+            my $b = $step * ($step + 1);
+            $step += 2;
+            _mul($c, $cx, [$b]);
         }
-      _mul($c,$cx,$step); _inc($c,$step);
-      }
-    }
-  else
-    {
-    # Yes, so we can speed it up slightly
-  
-#    print "# left over steps $n\n";
-
-    my $base_4 = int(sqrt(sqrt($BASE))) - 2;
-    #print STDERR "base_4: $base_4\n";
-    my $n4 = $n - 4; 
-    while ($step < $n4 && $step < $base_4)
-      {
-      if ($cx->[0] == 0)
-        {
-        $zero_elements ++; shift @$cx;
-        }
-      my $b = $step * ($step + 1); $step += 2; $b *= $step * ($step + 1); $step += 2;
-      _mul($c,$cx,[$b]);
-      }
-    my $base_2 = int(sqrt($BASE)) - 1;
-    my $n2 = $n - 2; 
-    #print STDERR "base_2: $base_2\n"; 
-    while ($step < $n2 && $step < $base_2)
-      {
-      if ($cx->[0] == 0)
-        {
-        $zero_elements ++; shift @$cx;
-        }
-      my $b = $step * ($step + 1); $step += 2;
-      _mul($c,$cx,[$b]);
-      }
-    # do what's left over
-    while ($step <= $n)
-      {
-      _mul($c,$cx,[$step]); $step++;
-      if ($cx->[0] == 0)
-        {
-        $zero_elements ++; shift @$cx;
+        $step = [$step];
+        while (_acmp($c, $step, $n) <= 0) {
+            if ($cx->[0] == 0) {
+                $zero_elements ++;
+                shift @$cx;
+            }
+            _mul($c, $cx, $step);
+            _inc($c, $step);
+        }
+    } else {
+        # Yes, so we can speed it up slightly
+
+        #    print "# left over steps $n\n";
+
+        my $base_4 = int(sqrt(sqrt($BASE))) - 2;
+        #print STDERR "base_4: $base_4\n";
+        my $n4 = $n - 4;
+        while ($step < $n4 && $step < $base_4) {
+            if ($cx->[0] == 0) {
+                $zero_elements ++;
+                shift @$cx;
+            }
+            my $b = $step * ($step + 1);
+            $step += 2;
+            $b *= $step * ($step + 1);
+            $step += 2;
+            _mul($c, $cx, [$b]);
+        }
+        my $base_2 = int(sqrt($BASE)) - 1;
+        my $n2 = $n - 2;
+        #print STDERR "base_2: $base_2\n";
+        while ($step < $n2 && $step < $base_2) {
+            if ($cx->[0] == 0) {
+                $zero_elements ++;
+                shift @$cx;
+            }
+            my $b = $step * ($step + 1);
+            $step += 2;
+            _mul($c, $cx, [$b]);
+        }
+        # do what's left over
+        while ($step <= $n) {
+            _mul($c, $cx, [$step]);
+            $step++;
+            if ($cx->[0] == 0) {
+                $zero_elements ++;
+                shift @$cx;
+            }
         }
-      }
     }
-  # multiply in the zeros again
-  unshift @$cx, (0) x $zero_elements;
-  $cx;                 # return result
-  }
+    # multiply in the zeros again
+    unshift @$cx, (0) x $zero_elements;
+    $cx;                        # return result
+}
 
-#############################################################################
+sub _log_int {
+    # calculate integer log of $x to base $base
+    # ref to array, ref to array - return ref to array
+    my ($c, $x, $base) = @_;
 
-sub _log_int
-  {
-  # calculate integer log of $x to base $base
-  # ref to array, ref to array - return ref to array
-  my ($c,$x,$base) = @_;
+    # X == 0 => NaN
+    return if @$x == 1 && $x->[0] == 0;
 
-  # X == 0 => NaN
-  return if (scalar @$x == 1 && $x->[0] == 0);
-  # BASE 0 or 1 => NaN
-  return if (scalar @$base == 1 && $base->[0] < 2);
-  my $cmp = _acmp($c,$x,$base); # X == BASE => 1
-  if ($cmp == 0)
-    {
-    splice (@$x,1); $x->[0] = 1;
-    return ($x,1)
+    # BASE 0 or 1 => NaN
+    return if @$base == 1 && $base->[0] < 2;
+
+    # X == 1 => 0 (is exact)
+    if (@$x == 1 && $x->[0] == 1) {
+        @$x = 0;
+        return $x, 1;
     }
-  # X < BASE
-  if ($cmp < 0)
-    {
-    splice (@$x,1); $x->[0] = 0;
-    return ($x,undef);
+
+    my $cmp = _acmp($c, $x, $base);
+
+    # X == BASE => 1 (is exact)
+    if ($cmp == 0) {
+        @$x = 1;
+        return $x, 1;
     }
 
-  my $x_org = _copy($c,$x);            # preserve x
-  splice(@$x,1); $x->[0] = 1;          # keep ref to $x
+    # 1 < X < BASE => 0 (is truncated)
+    if ($cmp < 0) {
+        @$x = 0;
+        return $x, 0;
+    }
 
-  # Compute a guess for the result based on:
-  # $guess = int ( length_in_base_10(X) / ( log(base) / log(10) ) )
-  my $len = _len($c,$x_org);
-  my $log = log($base->[-1]) / log(10);
+    my $x_org = _copy($c, $x);  # preserve x
 
-  # for each additional element in $base, we add $BASE_LEN to the result,
-  # based on the observation that log($BASE,10) is BASE_LEN and
-  # log(x*y) == log(x) + log(y):
-  $log += ((scalar @$base)-1) * $BASE_LEN;
+    # Compute a guess for the result based on:
+    # $guess = int ( length_in_base_10(X) / ( log(base) / log(10) ) )
+    my $len = _len($c, $x_org);
+    my $log = log($base->[-1]) / log(10);
 
-  # calculate now a guess based on the values obtained above:
-  my $res = int($len / $log);
+    # for each additional element in $base, we add $BASE_LEN to the result,
+    # based on the observation that log($BASE, 10) is BASE_LEN and
+    # log(x*y) == log(x) + log(y):
+    $log += (@$base - 1) * $BASE_LEN;
 
-  $x->[0] = $res;
-  my $trial = _pow ($c, _copy($c, $base), $x);
-  my $a = _acmp($c,$trial,$x_org);
+    # calculate now a guess based on the values obtained above:
+    my $res = int($len / $log);
 
-#  print STDERR "# trial ", _str($c,$x)," was: $a (0 = exact, -1 too small, +1 too big)\n";
+    @$x = $res;
+    my $trial = _pow($c, _copy($c, $base), $x);
+    my $acmp = _acmp($c, $trial, $x_org);
 
-  # found an exact result?
-  return ($x,1) if $a == 0;
+    # Did we get the exact result?
 
-  if ($a > 0)
-    {
-    # or too big
-    _div($c,$trial,$base); _dec($c, $x);
-    while (($a = _acmp($c,$trial,$x_org)) > 0)
-      {
-#      print STDERR "# big _log_int at ", _str($c,$x), "\n"; 
-      _div($c,$trial,$base); _dec($c, $x);
-      }
-    # result is now exact (a == 0), or too small (a < 0)
-    return ($x, $a == 0 ? 1 : 0);
-    }
+    return $x, 1 if $acmp == 0;
 
-  # else: result was to small
-  _mul($c,$trial,$base);
+    # Too small?
 
-  # did we now get the right result?
-  $a = _acmp($c,$trial,$x_org);
+    while ($acmp < 0) {
+        _mul($c, $trial, $base);
+        _inc($c, $x);
+        $acmp = _acmp($c, $trial, $x_org);
+    }
 
-  if ($a == 0)                         # yes, exactly
-    {
-    _inc($c, $x);
-    return ($x,1); 
+    # Too big?
+
+    while ($acmp > 0) {
+        _div($c, $trial, $base);
+        _dec($c, $x);
+        $acmp = _acmp($c, $trial, $x_org);
     }
-  return ($x,0) if $a > 0;  
 
-  # Result still too small (we should come here only if the estimate above
-  # was very off base):
-  # Now let the normal trial run obtain the real result
-  # Simple loop that increments $x by 2 in each step, possible overstepping
-  # the real result
+    return $x, 1 if $acmp == 0;         # result is exact
+    return $x, 0;                       # result is too small
+}
 
-  my $base_mul = _mul($c, _copy($c,$base), $base);     # $base * $base
+# for debugging:
+use constant DEBUG => 0;
+my $steps = 0;
+sub steps { $steps };
+
+sub _sqrt {
+    # square-root of $x in place
+    # Compute a guess of the result (by rule of thumb), then improve it via
+    # Newton's method.
+    my ($c, $x) = @_;
 
-  while (($a = _acmp($c,$trial,$x_org)) < 0)
-    {
-#    print STDERR "# small _log_int at ", _str($c,$x), "\n"; 
-    _mul($c,$trial,$base_mul); _add($c, $x, [2]);
+    if (@$x == 1) {
+        # fits into one Perl scalar, so result can be computed directly
+        $x->[0] = int(sqrt($x->[0]));
+        return $x;
     }
+    my $y = _copy($c, $x);
+    # hopefully _len/2 is < $BASE, the -1 is to always undershot the guess
+    # since our guess will "grow"
+    my $l = int((_len($c, $x)-1) / 2);
+
+    my $lastelem = $x->[-1];    # for guess
+    my $elems = @$x - 1;
+    # not enough digits, but could have more?
+    if ((length($lastelem) <= 3) && ($elems > 1)) {
+        # right-align with zero pad
+        my $len = length($lastelem) & 1;
+        print "$lastelem => " if DEBUG;
+        $lastelem .= substr($x->[-2] . '0' x $BASE_LEN, 0, $BASE_LEN);
+        # former odd => make odd again, or former even to even again
+        $lastelem = $lastelem / 10 if (length($lastelem) & 1) != $len;
+        print "$lastelem\n" if DEBUG;
+    }
+
+    # construct $x (instead of _lsft($c, $x, $l, 10)
+    my $r = $l % $BASE_LEN;     # 10000 00000 00000 00000 ($BASE_LEN=5)
+    $l = int($l / $BASE_LEN);
+    print "l =  $l " if DEBUG;
+
+    splice @$x, $l;              # keep ref($x), but modify it
+
+    # we make the first part of the guess not '1000...0' but int(sqrt($lastelem))
+    # that gives us:
+    # 14400 00000 => sqrt(14400) => guess first digits to be 120
+    # 144000 000000 => sqrt(144000) => guess 379
+
+    print "$lastelem (elems $elems) => " if DEBUG;
+    $lastelem = $lastelem / 10 if ($elems & 1 == 1); # odd or even?
+    my $g = sqrt($lastelem);
+    $g =~ s/\.//;               # 2.345 => 2345
+    $r -= 1 if $elems & 1 == 0; # 70 => 7
+
+    # padd with zeros if result is too short
+    $x->[$l--] = int(substr($g . '0' x $r, 0, $r+1));
+    print "now ", $x->[-1] if DEBUG;
+    print " would have been ", int('1' . '0' x $r), "\n" if DEBUG;
+
+    # If @$x > 1, we could compute the second elem of the guess, too, to create
+    # an even better guess. Not implemented yet. Does it improve performance?
+    $x->[$l--] = 0 while ($l >= 0); # all other digits of guess are zero
+
+    print "start x= ", _str($c, $x), "\n" if DEBUG;
+    my $two = _two();
+    my $last = _zero();
+    my $lastlast = _zero();
+    $steps = 0 if DEBUG;
+    while (_acmp($c, $last, $x) != 0 && _acmp($c, $lastlast, $x) != 0) {
+        $steps++ if DEBUG;
+        $lastlast = _copy($c, $last);
+        $last = _copy($c, $x);
+        _add($c, $x, _div($c, _copy($c, $y), $x));
+        _div($c, $x, $two );
+        print " x= ", _str($c, $x), "\n" if DEBUG;
+    }
+    print "\nsteps in sqrt: $steps, " if DEBUG;
+    _dec($c, $x) if _acmp($c, $y, _mul($c, _copy($c, $x), $x)) < 0; # overshot?
+    print " final ", $x->[-1], "\n" if DEBUG;
+    $x;
+}
 
-  my $exact = 1;
-  if ($a > 0)
-    {
-    # overstepped the result
-    _dec($c, $x);
-    _div($c,$trial,$base);
-    $a = _acmp($c,$trial,$x_org);
-    if ($a > 0)
-      {
-      _dec($c, $x);
-      }
-    $exact = 0 if $a != 0;             # a = -1 => not exact result, a = 0 => exact
-    }
-  
-  ($x,$exact);                         # return result
-  }
+sub _root {
+    # take n'th root of $x in place (n >= 3)
+    my ($c, $x, $n) = @_;
 
-# for debugging:
-  use constant DEBUG => 0;
-  my $steps = 0;
-  sub steps { $steps };
-
-sub _sqrt
-  {
-  # square-root of $x in place
-  # Compute a guess of the result (by rule of thumb), then improve it via
-  # Newton's method.
-  my ($c,$x) = @_;
-
-  if (scalar @$x == 1)
-    {
-    # fits into one Perl scalar, so result can be computed directly
-    $x->[0] = int(sqrt($x->[0]));
-    return $x;
-    } 
-  my $y = _copy($c,$x);
-  # hopefully _len/2 is < $BASE, the -1 is to always undershot the guess
-  # since our guess will "grow"
-  my $l = int((_len($c,$x)-1) / 2);    
-
-  my $lastelem = $x->[-1];                                     # for guess
-  my $elems = scalar @$x - 1;
-  # not enough digits, but could have more?
-  if ((length($lastelem) <= 3) && ($elems > 1))
-    {
-    # right-align with zero pad
-    my $len = length($lastelem) & 1;
-    print "$lastelem => " if DEBUG;
-    $lastelem .= substr($x->[-2] . '0' x $BASE_LEN,0,$BASE_LEN);
-    # former odd => make odd again, or former even to even again
-    $lastelem = $lastelem / 10 if (length($lastelem) & 1) != $len;
-    print "$lastelem\n" if DEBUG;
-    }
-
-  # construct $x (instead of _lsft($c,$x,$l,10)
-  my $r = $l % $BASE_LEN;      # 10000 00000 00000 00000 ($BASE_LEN=5)
-  $l = int($l / $BASE_LEN);
-  print "l =  $l " if DEBUG;
-
-  splice @$x,$l;               # keep ref($x), but modify it
-
-  # we make the first part of the guess not '1000...0' but int(sqrt($lastelem))
-  # that gives us:
-  # 14400 00000 => sqrt(14400) => guess first digits to be 120
-  # 144000 000000 => sqrt(144000) => guess 379
-
-  print "$lastelem (elems $elems) => " if DEBUG;
-  $lastelem = $lastelem / 10 if ($elems & 1 == 1);             # odd or even?
-  my $g = sqrt($lastelem); $g =~ s/\.//;                       # 2.345 => 2345
-  $r -= 1 if $elems & 1 == 0;                                  # 70 => 7
-
-  # padd with zeros if result is too short
-  $x->[$l--] = int(substr($g . '0' x $r,0,$r+1));
-  print "now ",$x->[-1] if DEBUG;
-  print " would have been ", int('1' . '0' x $r),"\n" if DEBUG;
-
-  # If @$x > 1, we could compute the second elem of the guess, too, to create
-  # an even better guess. Not implemented yet. Does it improve performance?
-  $x->[$l--] = 0 while ($l >= 0);      # all other digits of guess are zero
-
-  print "start x= ",_str($c,$x),"\n" if DEBUG;
-  my $two = _two();
-  my $last = _zero();
-  my $lastlast = _zero();
-  $steps = 0 if DEBUG;
-  while (_acmp($c,$last,$x) != 0 && _acmp($c,$lastlast,$x) != 0)
-    {
-    $steps++ if DEBUG;
-    $lastlast = _copy($c,$last);
-    $last = _copy($c,$x);
-    _add($c,$x, _div($c,_copy($c,$y),$x));
-    _div($c,$x, $two );
-    print " x= ",_str($c,$x),"\n" if DEBUG;
-    }
-  print "\nsteps in sqrt: $steps, " if DEBUG;
-  _dec($c,$x) if _acmp($c,$y,_mul($c,_copy($c,$x),$x)) < 0;    # overshot? 
-  print " final ",$x->[-1],"\n" if DEBUG;
-  $x;
-  }
-
-sub _root
-  {
-  # take n'th root of $x in place (n >= 3)
-  my ($c,$x,$n) = @_;
-  if (scalar @$x == 1)
-    {
-    if (scalar @$n > 1)
-      {
-      # result will always be smaller than 2 so trunc to 1 at once
-      $x->[0] = 1;
-      }
-    else
-      {
-      # fits into one Perl scalar, so result can be computed directly
-      # cannot use int() here, because it rounds wrongly (try 
-      # (81 ** 3) ** (1/3) to see what I mean)
-      #$x->[0] = int( $x->[0] ** (1 / $n->[0]) );
-      # round to 8 digits, then truncate result to integer
-      $x->[0] = int ( sprintf ("%.8f", $x->[0] ** (1 / $n->[0]) ) );
-      }
-    return $x;
-    } 
+    if (@$x == 1) {
+        if (@$n > 1) {
+            # result will always be smaller than 2 so trunc to 1 at once
+            $x->[0] = 1;
+        } else {
+            # fits into one Perl scalar, so result can be computed directly
+            # cannot use int() here, because it rounds wrongly (try
+            # (81 ** 3) ** (1/3) to see what I mean)
+            #$x->[0] = int( $x->[0] ** (1 / $n->[0]) );
+            # round to 8 digits, then truncate result to integer
+            $x->[0] = int ( sprintf ("%.8f", $x->[0] ** (1 / $n->[0]) ) );
+        }
+        return $x;
+    }
+
+    # we know now that X is more than one element long
+
+    # if $n is a power of two, we can repeatedly take sqrt($X) and find the
+    # proper result, because sqrt(sqrt($x)) == root($x, 4)
+    my $b = _as_bin($c, $n);
+    if ($b =~ /0b1(0+)$/) {
+        my $count = CORE::length($1); # 0b100 => len('00') => 2
+        my $cnt = $count;             # counter for loop
+        unshift (@$x, 0);             # add one element, together with one
+        # more below in the loop this makes 2
+        while ($cnt-- > 0) {
+            # 'inflate' $X by adding one element, basically computing
+            # $x * $BASE * $BASE. This gives us more $BASE_LEN digits for result
+            # since len(sqrt($X)) approx == len($x) / 2.
+            unshift (@$x, 0);
+            # calculate sqrt($x), $x is now one element to big, again. In the next
+            # round we make that two, again.
+            _sqrt($c, $x);
+        }
+        # $x is now one element to big, so truncate result by removing it
+        shift @$x;
+    } else {
+        # trial computation by starting with 2, 4, 8, 16 etc until we overstep
+        my $step;
+        my $trial = _two();
+
+        # while still to do more than X steps
+        do {
+            $step = _two();
+            while (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) < 0) {
+                _mul ($c, $step, [2]);
+                _add ($c, $trial, $step);
+            }
+
+            # hit exactly?
+            if (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) == 0) {
+                @$x = @$trial;  # make copy while preserving ref to $x
+                return $x;
+            }
+            # overstepped, so go back on step
+            _sub($c, $trial, $step);
+        } while (@$step > 1 || $step->[0] > 128);
+
+        # reset step to 2
+        $step = _two();
+        # add two, because $trial cannot be exactly the result (otherwise we would
+        # already have found it)
+        _add($c, $trial, $step);
+
+        # and now add more and more (2, 4, 6, 8, 10 etc)
+        while (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) < 0) {
+            _add ($c, $trial, $step);
+        }
 
-  # we know now that X is more than one element long
+        # hit not exactly? (overstepped)
+        if (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) > 0) {
+            _dec($c, $trial);
+        }
 
-  # if $n is a power of two, we can repeatedly take sqrt($X) and find the
-  # proper result, because sqrt(sqrt($x)) == root($x,4)
-  my $b = _as_bin($c,$n);
-  if ($b =~ /0b1(0+)$/)
-    {
-    my $count = CORE::length($1);      # 0b100 => len('00') => 2
-    my $cnt = $count;                  # counter for loop
-    unshift (@$x, 0);                  # add one element, together with one
-                                       # more below in the loop this makes 2
-    while ($cnt-- > 0)
-      {
-      # 'inflate' $X by adding one element, basically computing
-      # $x * $BASE * $BASE. This gives us more $BASE_LEN digits for result
-      # since len(sqrt($X)) approx == len($x) / 2.
-      unshift (@$x, 0);
-      # calculate sqrt($x), $x is now one element to big, again. In the next
-      # round we make that two, again.
-      _sqrt($c,$x);
-      }
-    # $x is now one element to big, so truncate result by removing it
-    splice (@$x,0,1);
-    } 
-  else
-    {
-    # trial computation by starting with 2,4,8,16 etc until we overstep
-    my $step;
-    my $trial = _two();
-
-    # while still to do more than X steps
-    do
-      {
-      $step = _two();
-      while (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) < 0)
-        {
-        _mul ($c, $step, [2]);
-        _add ($c, $trial, $step);
+        # hit not exactly? (overstepped)
+        # 80 too small, 81 slightly too big, 82 too big
+        if (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) > 0) {
+            _dec ($c, $trial);
         }
 
-      # hit exactly?
-      if (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) == 0)
-        {
-        @$x = @$trial;                 # make copy while preserving ref to $x
+        @$x = @$trial;          # make copy while preserving ref to $x
         return $x;
-        }
-      # overstepped, so go back on step
-      _sub($c, $trial, $step);
-      } while (scalar @$step > 1 || $step->[0] > 128);
-
-    # reset step to 2
-    $step = _two();
-    # add two, because $trial cannot be exactly the result (otherwise we would
-    # already have found it)
-    _add($c, $trial, $step);
-    # and now add more and more (2,4,6,8,10 etc)
-    while (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) < 0)
-      {
-      _add ($c, $trial, $step);
-      }
-
-    # hit not exactly? (overstepped)
-    if (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) > 0)
-      {
-      _dec($c,$trial);
-      }
-
-    # hit not exactly? (overstepped)
-    # 80 too small, 81 slightly too big, 82 too big
-    if (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) > 0)
-      {
-      _dec ($c, $trial); 
-      }
-
-    @$x = @$trial;                     # make copy while preserving ref to $x
-    return $x;
     }
-  $x; 
-  }
+    $x;
+}
 
 ##############################################################################
 # binary stuff
 
-sub _and
-  {
-  my ($c,$x,$y) = @_;
-
-  # the shortcut makes equal, large numbers _really_ fast, and makes only a
-  # very small performance drop for small numbers (e.g. something with less
-  # than 32 bit) Since we optimize for large numbers, this is enabled.
-  return $x if _acmp($c,$x,$y) == 0;           # shortcut
-  
-  my $m = _one(); my ($xr,$yr);
-  my $mask = $AND_MASK;
-
-  my $x1 = $x;
-  my $y1 = _copy($c,$y);                       # make copy
-  $x = _zero();
-  my ($b,$xrr,$yrr);
-  use integer;
-  while (!_is_zero($c,$x1) && !_is_zero($c,$y1))
-    {
-    ($x1, $xr) = _div($c,$x1,$mask);
-    ($y1, $yr) = _div($c,$y1,$mask);
-
-    # make ints() from $xr, $yr
-    # this is when the AND_BITS are greater than $BASE and is slower for
-    # small (<256 bits) numbers, but faster for large numbers. Disabled
-    # due to KISS principle
-
-#    $b = 1; $xrr = 0; foreach (@$xr) { $xrr += $_ * $b; $b *= $BASE; }
-#    $b = 1; $yrr = 0; foreach (@$yr) { $yrr += $_ * $b; $b *= $BASE; }
-#    _add($c,$x, _mul($c, _new( $c, ($xrr & $yrr) ), $m) );
-    
-    # 0+ due to '&' doesn't work in strings
-    _add($c,$x, _mul($c, [ 0+$xr->[0] & 0+$yr->[0] ], $m) );
-    _mul($c,$m,$mask);
-    }
-  $x;
-  }
-
-sub _xor
-  {
-  my ($c,$x,$y) = @_;
-
-  return _zero() if _acmp($c,$x,$y) == 0;      # shortcut (see -and)
-
-  my $m = _one(); my ($xr,$yr);
-  my $mask = $XOR_MASK;
-
-  my $x1 = $x;
-  my $y1 = _copy($c,$y);                       # make copy
-  $x = _zero();
-  my ($b,$xrr,$yrr);
-  use integer;
-  while (!_is_zero($c,$x1) && !_is_zero($c,$y1))
-    {
-    ($x1, $xr) = _div($c,$x1,$mask);
-    ($y1, $yr) = _div($c,$y1,$mask);
-    # make ints() from $xr, $yr (see _and())
-    #$b = 1; $xrr = 0; foreach (@$xr) { $xrr += $_ * $b; $b *= $BASE; }
-    #$b = 1; $yrr = 0; foreach (@$yr) { $yrr += $_ * $b; $b *= $BASE; }
-    #_add($c,$x, _mul($c, _new( $c, ($xrr ^ $yrr) ), $m) );
-
-    # 0+ due to '^' doesn't work in strings
-    _add($c,$x, _mul($c, [ 0+$xr->[0] ^ 0+$yr->[0] ], $m) );
-    _mul($c,$m,$mask);
-    }
-  # the loop stops when the shorter of the two numbers is exhausted
-  # the remainder of the longer one will survive bit-by-bit, so we simple
-  # multiply-add it in
-  _add($c,$x, _mul($c, $x1, $m) ) if !_is_zero($c,$x1);
-  _add($c,$x, _mul($c, $y1, $m) ) if !_is_zero($c,$y1);
-  
-  $x;
-  }
-
-sub _or
-  {
-  my ($c,$x,$y) = @_;
-
-  return $x if _acmp($c,$x,$y) == 0;           # shortcut (see _and)
-
-  my $m = _one(); my ($xr,$yr);
-  my $mask = $OR_MASK;
-
-  my $x1 = $x;
-  my $y1 = _copy($c,$y);                       # make copy
-  $x = _zero();
-  my ($b,$xrr,$yrr);
-  use integer;
-  while (!_is_zero($c,$x1) && !_is_zero($c,$y1))
-    {
-    ($x1, $xr) = _div($c,$x1,$mask);
-    ($y1, $yr) = _div($c,$y1,$mask);
-    # make ints() from $xr, $yr (see _and())
-#    $b = 1; $xrr = 0; foreach (@$xr) { $xrr += $_ * $b; $b *= $BASE; }
-#    $b = 1; $yrr = 0; foreach (@$yr) { $yrr += $_ * $b; $b *= $BASE; }
-#    _add($c,$x, _mul($c, _new( $c, ($xrr | $yrr) ), $m) );
-    
-    # 0+ due to '|' doesn't work in strings
-    _add($c,$x, _mul($c, [ 0+$xr->[0] | 0+$yr->[0] ], $m) );
-    _mul($c,$m,$mask);
-    }
-  # the loop stops when the shorter of the two numbers is exhausted
-  # the remainder of the longer one will survive bit-by-bit, so we simple
-  # multiply-add it in
-  _add($c,$x, _mul($c, $x1, $m) ) if !_is_zero($c,$x1);
-  _add($c,$x, _mul($c, $y1, $m) ) if !_is_zero($c,$y1);
-  
-  $x;
-  }
-
-sub _as_hex
-  {
-  # convert a decimal number to hex (ref to array, return ref to string)
-  my ($c,$x) = @_;
-
-  # fits into one element (handle also 0x0 case)
-  return sprintf("0x%x",$x->[0]) if @$x == 1;
-
-  my $x1 = _copy($c,$x);
-
-  my $es = '';
-  my ($xr, $h, $x10000);
-  if ($] >= 5.006)
-    {
-    $x10000 = [ 0x10000 ]; $h = 'h4';
-    }
-  else
-    {
-    $x10000 = [ 0x1000 ]; $h = 'h3';
+sub _and {
+    my ($c, $x, $y) = @_;
+
+    # the shortcut makes equal, large numbers _really_ fast, and makes only a
+    # very small performance drop for small numbers (e.g. something with less
+    # than 32 bit) Since we optimize for large numbers, this is enabled.
+    return $x if _acmp($c, $x, $y) == 0; # shortcut
+
+    my $m = _one();
+    my ($xr, $yr);
+    my $mask = $AND_MASK;
+
+    my $x1 = _copy($c, $x);
+    my $y1 = _copy($c, $y);
+    my $z  = _zero($c);
+
+    use integer;
+    until (_is_zero($c, $x1) || _is_zero($c, $y1)) {
+        ($x1, $xr) = _div($c, $x1, $mask);
+        ($y1, $yr) = _div($c, $y1, $mask);
+
+        _add($c, $z, _mul($c, [ 0 + $xr->[0] & 0 + $yr->[0] ], $m));
+        _mul($c, $m, $mask);
     }
-  while (@$x1 != 1 || $x1->[0] != 0)           # _is_zero()
-    {
-    ($x1, $xr) = _div($c,$x1,$x10000);
-    $es .= unpack($h,pack('V',$xr->[0]));
-    }
-  $es = reverse $es;
-  $es =~ s/^[0]+//;   # strip leading zeros
-  '0x' . $es;                                  # return result prepended with 0x
-  }
-
-sub _as_bin
-  {
-  # convert a decimal number to bin (ref to array, return ref to string)
-  my ($c,$x) = @_;
-
-  # fits into one element (and Perl recent enough), handle also 0b0 case
-  # handle zero case for older Perls
-  if ($] <= 5.005 && @$x == 1 && $x->[0] == 0)
-    {
-    my $t = '0b0'; return $t;
+
+    @$x = @$z;
+    return $x;
+}
+
+sub _xor {
+    my ($c, $x, $y) = @_;
+
+    return _zero() if _acmp($c, $x, $y) == 0; # shortcut (see -and)
+
+    my $m = _one();
+    my ($xr, $yr);
+    my $mask = $XOR_MASK;
+
+    my $x1 = _copy($c, $x);
+    my $y1 = _copy($c, $y);      # make copy
+    my $z  = _zero($c);
+
+    use integer;
+    until (_is_zero($c, $x1) || _is_zero($c, $y1)) {
+        ($x1, $xr) = _div($c, $x1, $mask);
+        ($y1, $yr) = _div($c, $y1, $mask);
+        # make ints() from $xr, $yr (see _and())
+        #$b = 1; $xrr = 0; foreach (@$xr) { $xrr += $_ * $b; $b *= $BASE; }
+        #$b = 1; $yrr = 0; foreach (@$yr) { $yrr += $_ * $b; $b *= $BASE; }
+        #_add($c, $x, _mul($c, _new( $c, ($xrr ^ $yrr) ), $m) );
+
+        _add($c, $z, _mul($c, [ 0 + $xr->[0] ^ 0 + $yr->[0] ], $m));
+        _mul($c, $m, $mask);
+    }
+    # the loop stops when the shorter of the two numbers is exhausted
+    # the remainder of the longer one will survive bit-by-bit, so we simple
+    # multiply-add it in
+    _add($c, $z, _mul($c, $x1, $m) ) if !_is_zero($c, $x1);
+    _add($c, $z, _mul($c, $y1, $m) ) if !_is_zero($c, $y1);
+
+    @$x = @$z;
+    return $x;
+}
+
+sub _or {
+    my ($c, $x, $y) = @_;
+
+    return $x if _acmp($c, $x, $y) == 0; # shortcut (see _and)
+
+    my $m = _one();
+    my ($xr, $yr);
+    my $mask = $OR_MASK;
+
+    my $x1 = _copy($c, $x);
+    my $y1 = _copy($c, $y);      # make copy
+    my $z  = _zero($c);
+
+    use integer;
+    until (_is_zero($c, $x1) || _is_zero($c, $y1)) {
+        ($x1, $xr) = _div($c, $x1, $mask);
+        ($y1, $yr) = _div($c, $y1, $mask);
+        # make ints() from $xr, $yr (see _and())
+        #    $b = 1; $xrr = 0; foreach (@$xr) { $xrr += $_ * $b; $b *= $BASE; }
+        #    $b = 1; $yrr = 0; foreach (@$yr) { $yrr += $_ * $b; $b *= $BASE; }
+        #    _add($c, $x, _mul($c, _new( $c, ($xrr | $yrr) ), $m) );
+
+        _add($c, $z, _mul($c, [ 0 + $xr->[0] | 0 + $yr->[0] ], $m));
+        _mul($c, $m, $mask);
+    }
+    # the loop stops when the shorter of the two numbers is exhausted
+    # the remainder of the longer one will survive bit-by-bit, so we simple
+    # multiply-add it in
+    _add($c, $z, _mul($c, $x1, $m) ) if !_is_zero($c, $x1);
+    _add($c, $z, _mul($c, $y1, $m) ) if !_is_zero($c, $y1);
+
+    @$x = @$z;
+    return $x;
+}
+
+sub _as_hex {
+    # convert a decimal number to hex (ref to array, return ref to string)
+    my ($c, $x) = @_;
+
+    # fits into one element (handle also 0x0 case)
+    return sprintf("0x%x", $x->[0]) if @$x == 1;
+
+    my $x1 = _copy($c, $x);
+
+    my $es = '';
+    my ($xr, $h, $x10000);
+    if ($] >= 5.006) {
+        $x10000 = [ 0x10000 ];
+        $h = 'h4';
+    } else {
+        $x10000 = [ 0x1000 ];
+        $h = 'h3';
     }
-  if (@$x == 1 && $] >= 5.006)
+    while (@$x1 != 1 || $x1->[0] != 0) # _is_zero()
     {
-    my $t = sprintf("0b%b",$x->[0]);
-    return $t;
+        ($x1, $xr) = _div($c, $x1, $x10000);
+        $es .= unpack($h, pack('V', $xr->[0]));
     }
-  my $x1 = _copy($c,$x);
+    $es = reverse $es;
+    $es =~ s/^[0]+//;           # strip leading zeros
+    '0x' . $es;                 # return result prepended with 0x
+}
 
-  my $es = '';
-  my ($xr, $b, $x10000);
-  if ($] >= 5.006)
-    {
-    $x10000 = [ 0x10000 ]; $b = 'b16';
+sub _as_bin {
+    # convert a decimal number to bin (ref to array, return ref to string)
+    my ($c, $x) = @_;
+
+    # fits into one element (and Perl recent enough), handle also 0b0 case
+    # handle zero case for older Perls
+    if ($] <= 5.005 && @$x == 1 && $x->[0] == 0) {
+        my $t = '0b0';
+        return $t;
     }
-  else
-    {
-    $x10000 = [ 0x1000 ]; $b = 'b12';
+    if (@$x == 1 && $] >= 5.006) {
+        my $t = sprintf("0b%b", $x->[0]);
+        return $t;
+    }
+    my $x1 = _copy($c, $x);
+
+    my $es = '';
+    my ($xr, $b, $x10000);
+    if ($] >= 5.006) {
+        $x10000 = [ 0x10000 ];
+        $b = 'b16';
+    } else {
+        $x10000 = [ 0x1000 ];
+        $b = 'b12';
     }
-  while (!(@$x1 == 1 && $x1->[0] == 0))                # _is_zero()
+    while (!(@$x1 == 1 && $x1->[0] == 0)) # _is_zero()
     {
-    ($x1, $xr) = _div($c,$x1,$x10000);
-    $es .= unpack($b,pack('v',$xr->[0]));
+        ($x1, $xr) = _div($c, $x1, $x10000);
+        $es .= unpack($b, pack('v', $xr->[0]));
     }
-  $es = reverse $es;
-  $es =~ s/^[0]+//;   # strip leading zeros
-  '0b' . $es;                                  # return result prepended with 0b
-  }
+    $es = reverse $es;
+    $es =~ s/^[0]+//;           # strip leading zeros
+    '0b' . $es;                 # return result prepended with 0b
+}
 
-sub _as_oct
-  {
-  # convert a decimal number to octal (ref to array, return ref to string)
-  my ($c,$x) = @_;
+sub _as_oct {
+    # convert a decimal number to octal (ref to array, return ref to string)
+    my ($c, $x) = @_;
 
-  # fits into one element (handle also 0 case)
-  return sprintf("0%o",$x->[0]) if @$x == 1;
+    # fits into one element (handle also 0 case)
+    return sprintf("0%o", $x->[0]) if @$x == 1;
 
-  my $x1 = _copy($c,$x);
+    my $x1 = _copy($c, $x);
 
-  my $es = '';
-  my $xr;
-  my $x1000 = [ 0100000 ];
-  while (@$x1 != 1 || $x1->[0] != 0)           # _is_zero()
+    my $es = '';
+    my $xr;
+    my $x1000 = [ 0100000 ];
+    while (@$x1 != 1 || $x1->[0] != 0) # _is_zero()
     {
-    ($x1, $xr) = _div($c,$x1,$x1000);
-    $es .= reverse sprintf("%05o", $xr->[0]);
+        ($x1, $xr) = _div($c, $x1, $x1000);
+        $es .= reverse sprintf("%05o", $xr->[0]);
     }
-  $es = reverse $es;
-  $es =~ s/^0+//;   # strip leading zeros
-  '0' . $es;                                   # return result prepended with 0
-  }
-
-sub _from_oct
-  {
-  # convert a octal number to decimal (string, return ref to array)
-  my ($c,$os) = @_;
-
-  # for older Perls, play safe
-  my $m = [ 0100000 ];
-  my $d = 5;                                   # 5 digits at a time
+    $es = reverse $es;
+    $es =~ s/^0+//;             # strip leading zeros
+    '0' . $es;                  # return result prepended with 0
+}
 
-  my $mul = _one();
-  my $x = _zero();
+sub _from_oct {
+    # convert a octal number to decimal (string, return ref to array)
+    my ($c, $os) = @_;
 
-  my $len = int( (length($os)-1)/$d );         # $d digit parts, w/o the '0'
-  my $val; my $i = -$d;
-  while ($len >= 0)
-    {
-    $val = substr($os,$i,$d);                  # get oct digits
-    $val = CORE::oct($val);
-    $i -= $d; $len --;
-    my $adder = [ $val ];
-    _add ($c, $x, _mul ($c, $adder, $mul ) ) if $val != 0;
-    _mul ($c, $mul, $m ) if $len >= 0;                 # skip last mul
-    }
-  $x;
-  }
-
-sub _from_hex
-  {
-  # convert a hex number to decimal (string, return ref to array)
-  my ($c,$hs) = @_;
-
-  my $m = _new($c, 0x10000000);                        # 28 bit at a time (<32 bit!)
-  my $d = 7;                                   # 7 digits at a time
-  if ($] <= 5.006)
-    {
     # for older Perls, play safe
-    $m = [ 0x10000 ];                          # 16 bit at a time (<32 bit!)
-    $d = 4;                                    # 4 digits at a time
+    my $m = [ 0100000 ];
+    my $d = 5;                  # 5 digits at a time
+
+    my $mul = _one();
+    my $x = _zero();
+
+    my $len = int((length($os) - 1) / $d); # $d digit parts, w/o the '0'
+    my $val;
+    my $i = -$d;
+    while ($len >= 0) {
+        $val = substr($os, $i, $d); # get oct digits
+        $val = CORE::oct($val);
+        $i -= $d;
+        $len --;
+        my $adder = [ $val ];
+        _add($c, $x, _mul($c, $adder, $mul)) if $val != 0;
+        _mul($c, $mul, $m ) if $len >= 0; # skip last mul
     }
+    $x;
+}
 
-  my $mul = _one();
-  my $x = _zero();
+sub _from_hex {
+    # convert a hex number to decimal (string, return ref to array)
+    my ($c, $hs) = @_;
+
+    my $m = _new($c, 0x10000000); # 28 bit at a time (<32 bit!)
+    my $d = 7;                    # 7 digits at a time
+    if ($] <= 5.006) {
+        # for older Perls, play safe
+        $m = [ 0x10000 ];       # 16 bit at a time (<32 bit!)
+        $d = 4;                 # 4 digits at a time
+    }
+
+    my $mul = _one();
+    my $x = _zero();
+
+    my $len = int((length($hs) - 2) / $d); # $d digit parts, w/o the '0x'
+    my $val;
+    my $i = -$d;
+    while ($len >= 0) {
+        $val = substr($hs, $i, $d);     # get hex digits
+        $val =~ s/^0x// if $len == 0; # for last part only because
+        $val = CORE::hex($val);       # hex does not like wrong chars
+        $i -= $d;
+        $len --;
+        my $adder = [ $val ];
+        # if the resulting number was to big to fit into one element, create a
+        # two-element version (bug found by Mark Lakata - Thanx!)
+        if (CORE::length($val) > $BASE_LEN) {
+            $adder = _new($c, $val);
+        }
+        _add($c, $x, _mul($c, $adder, $mul)) if $val != 0;
+        _mul($c, $mul, $m) if $len >= 0; # skip last mul
+    }
+    $x;
+}
 
-  my $len = int( (length($hs)-2)/$d );         # $d digit parts, w/o the '0x'
-  my $val; my $i = -$d;
-  while ($len >= 0)
-    {
-    $val = substr($hs,$i,$d);                  # get hex digits
-    $val =~ s/^0x// if $len == 0;              # for last part only because
-    $val = CORE::hex($val);                    # hex does not like wrong chars
-    $i -= $d; $len --;
-    my $adder = [ $val ];
-    # if the resulting number was to big to fit into one element, create a
-    # two-element version (bug found by Mark Lakata - Thanx!)
-    if (CORE::length($val) > $BASE_LEN)
-      {
-      $adder = _new($c,$val);
-      }
-    _add ($c, $x, _mul ($c, $adder, $mul ) ) if $val != 0;
-    _mul ($c, $mul, $m ) if $len >= 0;                 # skip last mul
-    }
-  $x;
-  }
-
-sub _from_bin
-  {
-  # convert a hex number to decimal (string, return ref to array)
-  my ($c,$bs) = @_;
-
-  # instead of converting X (8) bit at a time, it is faster to "convert" the
-  # number to hex, and then call _from_hex.
-
-  my $hs = $bs;
-  $hs =~ s/^[+-]?0b//;                                 # remove sign and 0b
-  my $l = length($hs);                                 # bits
-  $hs = '0' x (8-($l % 8)) . $hs if ($l % 8) != 0;     # padd left side w/ 0
-  my $h = '0x' . unpack('H*', pack ('B*', $hs));       # repack as hex
-  
-  $c->_from_hex($h);
-  }
+sub _from_bin {
+    # convert a hex number to decimal (string, return ref to array)
+    my ($c, $bs) = @_;
+
+    # instead of converting X (8) bit at a time, it is faster to "convert" the
+    # number to hex, and then call _from_hex.
+
+    my $hs = $bs;
+    $hs =~ s/^[+-]?0b//;                                # remove sign and 0b
+    my $l = length($hs);                                # bits
+    $hs = '0' x (8 - ($l % 8)) . $hs if ($l % 8) != 0;  # padd left side w/ 0
+    my $h = '0x' . unpack('H*', pack ('B*', $hs));      # repack as hex
+
+    $c->_from_hex($h);
+}
 
 ##############################################################################
 # special modulus functions
 
-sub _modinv
-  {
-  # modular multiplicative inverse
-  my ($c,$x,$y) = @_;
-
-  # modulo zero
-  if (_is_zero($c, $y)) {
-      return (undef, undef);
-  }
-
-  # modulo one
-  if (_is_one($c, $y)) {
-      return (_zero($c), '+');
-  }
-
-  my $u = _zero($c);
-  my $v = _one($c);
-  my $a = _copy($c,$y);
-  my $b = _copy($c,$x);
-
-  # Euclid's Algorithm for bgcd(), only that we calc bgcd() ($a) and the result
-  # ($u) at the same time. See comments in BigInt for why this works.
-  my $q;
-  my $sign = 1;
-  {
-      ($a, $q, $b) = ($b, _div($c, $a, $b));        # step 1
-      last if _is_zero($c, $b);
-
-      my $t = _add($c,                              # step 2:
-                   _mul($c, _copy($c, $v), $q) ,    #  t =   v * q
-                   $u );                            #      + u
-      $u = $v;                                      #  u = v
-      $v = $t;                                      #  v = t
-      $sign = -$sign;
-      redo;
-  }
-
-  # if the gcd is not 1, then return NaN
-  return (undef, undef) unless _is_one($c, $a);
-
-  ($v, $sign == 1 ? '+' : '-');
-  }
-
-sub _modpow
-  {
-  # modulus of power ($x ** $y) % $z
-  my ($c,$num,$exp,$mod) = @_;
-
-  # a^b (mod 1) = 0 for all a and b
-  if (_is_one($c,$mod))
+sub _modinv {
+    # modular multiplicative inverse
+    my ($c, $x, $y) = @_;
+
+    # modulo zero
+    if (_is_zero($c, $y)) {
+        return (undef, undef);
+    }
+
+    # modulo one
+    if (_is_one($c, $y)) {
+        return (_zero($c), '+');
+    }
+
+    my $u = _zero($c);
+    my $v = _one($c);
+    my $a = _copy($c, $y);
+    my $b = _copy($c, $x);
+
+    # Euclid's Algorithm for bgcd(), only that we calc bgcd() ($a) and the result
+    # ($u) at the same time. See comments in BigInt for why this works.
+    my $q;
+    my $sign = 1;
     {
+        ($a, $q, $b) = ($b, _div($c, $a, $b)); # step 1
+        last if _is_zero($c, $b);
+
+        my $t = _add($c,                           # step 2:
+                     _mul($c, _copy($c, $v), $q) , #  t =   v * q
+                     $u );                         #      + u
+        $u = $v;                                   #  u = v
+        $v = $t;                                   #  v = t
+        $sign = -$sign;
+        redo;
+    }
+
+    # if the gcd is not 1, then return NaN
+    return (undef, undef) unless _is_one($c, $a);
+
+    ($v, $sign == 1 ? '+' : '-');
+}
+
+sub _modpow {
+    # modulus of power ($x ** $y) % $z
+    my ($c, $num, $exp, $mod) = @_;
+
+    # a^b (mod 1) = 0 for all a and b
+    if (_is_one($c, $mod)) {
         @$num = 0;
         return $num;
     }
 
-  # 0^a (mod m) = 0 if m != 0, a != 0
-  # 0^0 (mod m) = 1 if m != 0
-  if (_is_zero($c, $num)) {
-      if (_is_zero($c, $exp)) {
-          @$num = 1;
-      } else {
-          @$num = 0;
-      }
-      return $num;
-  }
+    # 0^a (mod m) = 0 if m != 0, a != 0
+    # 0^0 (mod m) = 1 if m != 0
+    if (_is_zero($c, $num)) {
+        if (_is_zero($c, $exp)) {
+            @$num = 1;
+        } else {
+            @$num = 0;
+        }
+        return $num;
+    }
 
-#  $num = _mod($c,$num,$mod);  # this does not make it faster
+    #  $num = _mod($c, $num, $mod);   # this does not make it faster
 
-  my $acc = _copy($c,$num); my $t = _one();
+    my $acc = _copy($c, $num);
+    my $t = _one();
 
-  my $expbin = _as_bin($c,$exp); $expbin =~ s/^0b//;
-  my $len = length($expbin);
-  while (--$len >= 0)
-    {
-    if ( substr($expbin,$len,1) eq '1')                        # is_odd
-      {
-      _mul($c,$t,$acc);
-      $t = _mod($c,$t,$mod);
-      }
-    _mul($c,$acc,$acc);
-    $acc = _mod($c,$acc,$mod);
-    }
-  @$num = @$t;
-  $num;
-  }
+    my $expbin = _as_bin($c, $exp);
+    $expbin =~ s/^0b//;
+    my $len = length($expbin);
+    while (--$len >= 0) {
+        if (substr($expbin, $len, 1) eq '1') { # is_odd
+            _mul($c, $t, $acc);
+            $t = _mod($c, $t, $mod);
+        }
+        _mul($c, $acc, $acc);
+        $acc = _mod($c, $acc, $mod);
+    }
+    @$num = @$t;
+    $num;
+}
 
 sub _gcd {
     # Greatest common divisor.
 
     my ($c, $x, $y) = @_;
 
-    # gcd(0,0) = 0
-    # gcd(0,a) = a, if a != 0
+    # gcd(0, 0) = 0
+    # gcd(0, a) = a, if a != 0
 
     if (@$x == 1 && $x->[0] == 0) {
         if (@$y == 1 && $y->[0] == 0) {
@@ -2476,7 +2342,7 @@ sub _gcd {
 
         my $tmp = [ @$x ];
         @$x = @$y;
-        $y = $tmp;      # no deref here; that would modify input $y
+        $y = $tmp;              # no deref here; that would modify input $y
     }
 
     return $x;
@@ -2486,6 +2352,7 @@ sub _gcd {
 ##############################################################################
 
 1;
+
 __END__
 
 =pod
@@ -2518,7 +2385,7 @@ In order to allow for multiple big integer libraries, Math::BigInt was
 rewritten to use a plug-in library for core math routines. Any module which
 conforms to the API can be used by Math::BigInt by using this in your program:
 
-       use Math::BigInt lib => 'libname';
+        use Math::BigInt lib => 'libname';
 
 'libname' is either the long name, like 'Math::BigInt::Pari', or only the short
 version, like 'Pari'.
@@ -2866,9 +2733,8 @@ Return the binomial coefficient OBJ1 over OBJ1.
 
 =item I<_alen(OBJ)>
 
-Return the approximate number of decimal digits of the object. The
-output is one Perl scalar. This estimate must be greater than or equal
-to what C<_len()> returns.
+Return the approximate number of decimal digits of the object. The output is
+one Perl scalar.
 
 =back
 
@@ -2901,15 +2767,16 @@ Return the signed bitwise exclusive or.
 =head1 WRAP YOUR OWN
 
 If you want to port your own favourite c-lib for big numbers to the
-Math::BigInt interface, you can take any of the already existing modules as
-a rough guideline. You should really wrap up the latest BigInt and BigFloat
-testsuites with your module, and replace in them any of the following:
+Math::BigInt interface, you can take any of the already existing modules as a
+rough guideline. You should really wrap up the latest Math::BigInt and
+Math::BigFloat testsuites with your module, and replace in them any of the
+following:
 
-       use Math::BigInt;
+        use Math::BigInt;
 
 by this:
 
-       use Math::BigInt lib => 'yourlib';
+        use Math::BigInt lib => 'yourlib';
 
 This way you ensure that your library really works 100% within Math::BigInt.
 
@@ -2975,7 +2842,7 @@ L<http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/bignum>
 =head1 LICENSE
 
 This program is free software; you may redistribute it and/or modify it under
-the same terms as Perl itself. 
+the same terms as Perl itself.
 
 =head1 AUTHORS
 
@@ -3003,7 +2870,7 @@ E<lt>pjacklam@online.noE<gt>
 
 =head1 SEE ALSO
 
-L<Math::BigInt>, L<Math::BigFloat>,
-L<Math::BigInt::GMP>, L<Math::BigInt::FastCalc> and L<Math::BigInt::Pari>.
+L<Math::BigInt>, L<Math::BigFloat>, L<Math::BigInt::GMP>,
+L<Math::BigInt::FastCalc> and L<Math::BigInt::Pari>.
 
 =cut
index 8e994ed..006a6ec 100644 (file)
@@ -4,7 +4,7 @@ use 5.006001;
 use strict;
 use warnings;
 
-our $VERSION = '1.999715';
+our $VERSION = '1.999726';
 $VERSION = eval $VERSION;
 
 package Math::BigInt;
@@ -25,7 +25,7 @@ sub __emu_band
   my ($self,$x,$y,$sx,$sy,@r) = @_;
 
   return $x->bzero(@r) if $y->is_zero() || $x->is_zero();
-  
+
   my $sign = 0;                                        # sign of result
   $sign = 1 if $sx == -1 && $sy == -1;
 
@@ -75,7 +75,7 @@ sub __emu_band
     # if $xx eq "\x00", we can cut $by, otherwise we need to padd $bx
     $bx .= $xx x abs($diff);
     }
-  
+
   # and the strings together
   my $r = $bx & $by;
 
@@ -380,7 +380,7 @@ L<http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/bignum>
 =head1 LICENSE
 
 This program is free software; you may redistribute it and/or modify it under
-the same terms as Perl itself. 
+the same terms as Perl itself.
 
 =head1 AUTHORS
 
diff --git a/cpan/Math-BigInt/t/Math/BigInt/Lib/TestUtil.pm b/cpan/Math-BigInt/t/Math/BigInt/Lib/TestUtil.pm
new file mode 100644 (file)
index 0000000..94aa7b9
--- /dev/null
@@ -0,0 +1,37 @@
+#!perl
+
+use strict;
+use warnings;
+
+package Math::BigInt::Lib::TestUtil;
+
+our @ISA       = qw< Exporter >;
+our @EXPORT_OK = qw< randstr >;
+
+# randstr NUM, BASE
+#
+# Generate a string representing a NUM digit number in base BASE.
+
+sub randstr {
+    die "randstr: wrong number of input arguments\n"
+      unless @_ == 2;
+
+    my $n = shift;
+    my $b = shift;
+
+    die "randstr: first input argument must be >= 0"
+      unless $n >= 0;
+    die "randstr: second input argument must be in the range 2 .. 36\n"
+      unless 2 <= $b && $b <= 36;
+
+    return '' if $n == 0;
+
+    my @dig = (0 .. 9, 'a' .. 'z');
+
+    my $str = $dig[ 1 + int rand ($b - 1) ];
+    $str .= $dig[ int rand $b ] for 2 .. $n;
+
+    return $str;
+}
+
+1;
index 38fdae3..6b9af66 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 2409;
+use Test::More tests => 2402;
 
 use lib 't';
 
index b87625d..93dbc7a 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 3724;           # tests in require'd file
+use Test::More tests => 3913;           # tests in require'd file
 
 use lib 't';
 
index 89835bb..d63e3da 100644 (file)
@@ -6,7 +6,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 684             # tests in require'd file
+use Test::More tests => 712             # tests in require'd file
                         + 1;            # tests in this file
 
 use lib 't';
diff --git a/cpan/Math-BigInt/t/bdstr-mbf.t b/cpan/Math-BigInt/t/bdstr-mbf.t
new file mode 100644 (file)
index 0000000..8b13bd4
--- /dev/null
@@ -0,0 +1,275 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 460;
+
+use Math::BigFloat;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $expected) = split /:/;
+    my ($x, $str);
+
+    my $test = qq|\$x = Math::BigFloat -> new("$x_str");|
+             . qq| \$str = \$x -> bdstr();|;
+
+    note "\n$test\n\n";
+    eval $test;
+
+    is($str, $expected, qq|input value is "$x_str"|);
+    is($x,   $x_str, "input object is unmodified");
+}
+
+__DATA__
+
+NaN:NaN
+
+inf:inf
+-inf:-inf
+
+0:0
+
+# positive numbers
+
+0.000000000001:0.000000000001
+0.00000000001:0.00000000001
+0.0000000001:0.0000000001
+0.000000001:0.000000001
+0.00000001:0.00000001
+0.0000001:0.0000001
+0.000001:0.000001
+0.00001:0.00001
+0.0001:0.0001
+0.001:0.001
+0.01:0.01
+0.1:0.1
+1:1
+10:10
+100:100
+1000:1000
+10000:10000
+100000:100000
+1000000:1000000
+10000000:10000000
+100000000:100000000
+1000000000:1000000000
+10000000000:10000000000
+100000000000:100000000000
+1000000000000:1000000000000
+
+0.0000000000012:0.0000000000012
+0.000000000012:0.000000000012
+0.00000000012:0.00000000012
+0.0000000012:0.0000000012
+0.000000012:0.000000012
+0.00000012:0.00000012
+0.0000012:0.0000012
+0.000012:0.000012
+0.00012:0.00012
+0.0012:0.0012
+0.012:0.012
+0.12:0.12
+1.2:1.2
+12:12
+120:120
+1200:1200
+12000:12000
+120000:120000
+1200000:1200000
+12000000:12000000
+120000000:120000000
+1200000000:1200000000
+12000000000:12000000000
+120000000000:120000000000
+1200000000000:1200000000000
+
+0.00000000000123:0.00000000000123
+0.0000000000123:0.0000000000123
+0.000000000123:0.000000000123
+0.00000000123:0.00000000123
+0.0000000123:0.0000000123
+0.000000123:0.000000123
+0.00000123:0.00000123
+0.0000123:0.0000123
+0.000123:0.000123
+0.00123:0.00123
+0.0123:0.0123
+0.123:0.123
+1.23:1.23
+12.3:12.3
+123:123
+1230:1230
+12300:12300
+123000:123000
+1230000:1230000
+12300000:12300000
+123000000:123000000
+1230000000:1230000000
+12300000000:12300000000
+123000000000:123000000000
+1230000000000:1230000000000
+
+0.000000000001234:0.000000000001234
+0.00000000001234:0.00000000001234
+0.0000000001234:0.0000000001234
+0.000000001234:0.000000001234
+0.00000001234:0.00000001234
+0.0000001234:0.0000001234
+0.000001234:0.000001234
+0.00001234:0.00001234
+0.0001234:0.0001234
+0.001234:0.001234
+0.01234:0.01234
+0.1234:0.1234
+1.234:1.234
+12.34:12.34
+123.4:123.4
+1234:1234
+12340:12340
+123400:123400
+1234000:1234000
+12340000:12340000
+123400000:123400000
+1234000000:1234000000
+12340000000:12340000000
+123400000000:123400000000
+1234000000000:1234000000000
+
+0.000003141592:0.000003141592
+0.00003141592:0.00003141592
+0.0003141592:0.0003141592
+0.003141592:0.003141592
+0.03141592:0.03141592
+0.3141592:0.3141592
+3.141592:3.141592
+31.41592:31.41592
+314.1592:314.1592
+3141.592:3141.592
+31415.92:31415.92
+314159.2:314159.2
+3141592:3141592
+
+# negative numbers
+
+-0.000000000001:-0.000000000001
+-0.00000000001:-0.00000000001
+-0.0000000001:-0.0000000001
+-0.000000001:-0.000000001
+-0.00000001:-0.00000001
+-0.0000001:-0.0000001
+-0.000001:-0.000001
+-0.00001:-0.00001
+-0.0001:-0.0001
+-0.001:-0.001
+-0.01:-0.01
+-0.1:-0.1
+-1:-1
+-10:-10
+-100:-100
+-1000:-1000
+-10000:-10000
+-100000:-100000
+-1000000:-1000000
+-10000000:-10000000
+-100000000:-100000000
+-1000000000:-1000000000
+-10000000000:-10000000000
+-100000000000:-100000000000
+-1000000000000:-1000000000000
+
+-0.0000000000012:-0.0000000000012
+-0.000000000012:-0.000000000012
+-0.00000000012:-0.00000000012
+-0.0000000012:-0.0000000012
+-0.000000012:-0.000000012
+-0.00000012:-0.00000012
+-0.0000012:-0.0000012
+-0.000012:-0.000012
+-0.00012:-0.00012
+-0.0012:-0.0012
+-0.012:-0.012
+-0.12:-0.12
+-1.2:-1.2
+-12:-12
+-120:-120
+-1200:-1200
+-12000:-12000
+-120000:-120000
+-1200000:-1200000
+-12000000:-12000000
+-120000000:-120000000
+-1200000000:-1200000000
+-12000000000:-12000000000
+-120000000000:-120000000000
+-1200000000000:-1200000000000
+
+-0.00000000000123:-0.00000000000123
+-0.0000000000123:-0.0000000000123
+-0.000000000123:-0.000000000123
+-0.00000000123:-0.00000000123
+-0.0000000123:-0.0000000123
+-0.000000123:-0.000000123
+-0.00000123:-0.00000123
+-0.0000123:-0.0000123
+-0.000123:-0.000123
+-0.00123:-0.00123
+-0.0123:-0.0123
+-0.123:-0.123
+-1.23:-1.23
+-12.3:-12.3
+-123:-123
+-1230:-1230
+-12300:-12300
+-123000:-123000
+-1230000:-1230000
+-12300000:-12300000
+-123000000:-123000000
+-1230000000:-1230000000
+-12300000000:-12300000000
+-123000000000:-123000000000
+-1230000000000:-1230000000000
+
+-0.000000000001234:-0.000000000001234
+-0.00000000001234:-0.00000000001234
+-0.0000000001234:-0.0000000001234
+-0.000000001234:-0.000000001234
+-0.00000001234:-0.00000001234
+-0.0000001234:-0.0000001234
+-0.000001234:-0.000001234
+-0.00001234:-0.00001234
+-0.0001234:-0.0001234
+-0.001234:-0.001234
+-0.01234:-0.01234
+-0.1234:-0.1234
+-1.234:-1.234
+-12.34:-12.34
+-123.4:-123.4
+-1234:-1234
+-12340:-12340
+-123400:-123400
+-1234000:-1234000
+-12340000:-12340000
+-123400000:-123400000
+-1234000000:-1234000000
+-12340000000:-12340000000
+-123400000000:-123400000000
+-1234000000000:-1234000000000
+
+-0.000003141592:-0.000003141592
+-0.00003141592:-0.00003141592
+-0.0003141592:-0.0003141592
+-0.003141592:-0.003141592
+-0.03141592:-0.03141592
+-0.3141592:-0.3141592
+-3.141592:-3.141592
+-31.41592:-31.41592
+-314.1592:-314.1592
+-3141.592:-3141.592
+-31415.92:-31415.92
+-314159.2:-314159.2
+-3141592:-3141592
diff --git a/cpan/Math-BigInt/t/bdstr-mbi.t b/cpan/Math-BigInt/t/bdstr-mbi.t
new file mode 100644 (file)
index 0000000..d369ec9
--- /dev/null
@@ -0,0 +1,155 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 220;
+
+use Math::BigInt;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $expected) = split /:/;
+    my ($x, $str);
+
+    my $test = qq|\$x = Math::BigInt -> new("$x_str");|
+             . qq| \$str = \$x -> bdstr();|;
+
+    note "\n$test\n\n";
+    eval $test;
+
+    is($str, $expected, qq|input value is "$x_str"|);
+    is($x,   $x_str, "input object is unmodified");
+}
+
+__DATA__
+
+NaN:NaN
+
+inf:inf
+-inf:-inf
+
+0:0
+
+# positive numbers
+
+1:1
+10:10
+100:100
+1000:1000
+10000:10000
+100000:100000
+1000000:1000000
+10000000:10000000
+100000000:100000000
+1000000000:1000000000
+10000000000:10000000000
+100000000000:100000000000
+1000000000000:1000000000000
+
+12:12
+120:120
+1200:1200
+12000:12000
+120000:120000
+1200000:1200000
+12000000:12000000
+120000000:120000000
+1200000000:1200000000
+12000000000:12000000000
+120000000000:120000000000
+1200000000000:1200000000000
+
+123:123
+1230:1230
+12300:12300
+123000:123000
+1230000:1230000
+12300000:12300000
+123000000:123000000
+1230000000:1230000000
+12300000000:12300000000
+123000000000:123000000000
+1230000000000:1230000000000
+
+1234:1234
+12340:12340
+123400:123400
+1234000:1234000
+12340000:12340000
+123400000:123400000
+1234000000:1234000000
+12340000000:12340000000
+123400000000:123400000000
+1234000000000:1234000000000
+
+3:3
+31:31
+314:314
+3141:3141
+31415:31415
+314159:314159
+3141592:3141592
+
+# negative numbers
+
+-1:-1
+-10:-10
+-100:-100
+-1000:-1000
+-10000:-10000
+-100000:-100000
+-1000000:-1000000
+-10000000:-10000000
+-100000000:-100000000
+-1000000000:-1000000000
+-10000000000:-10000000000
+-100000000000:-100000000000
+-1000000000000:-1000000000000
+
+-12:-12
+-120:-120
+-1200:-1200
+-12000:-12000
+-120000:-120000
+-1200000:-1200000
+-12000000:-12000000
+-120000000:-120000000
+-1200000000:-1200000000
+-12000000000:-12000000000
+-120000000000:-120000000000
+-1200000000000:-1200000000000
+
+-123:-123
+-1230:-1230
+-12300:-12300
+-123000:-123000
+-1230000:-1230000
+-12300000:-12300000
+-123000000:-123000000
+-1230000000:-1230000000
+-12300000000:-12300000000
+-123000000000:-123000000000
+-1230000000000:-1230000000000
+
+-1234:-1234
+-12340:-12340
+-123400:-123400
+-1234000:-1234000
+-12340000:-12340000
+-123400000:-123400000
+-1234000000:-1234000000
+-12340000000:-12340000000
+-123400000000:-123400000000
+-1234000000000:-1234000000000
+
+-3:-3
+-31:-31
+-314:-314
+-3141:-3141
+-31415:-31415
+-314159:-314159
+-3141592:-3141592
diff --git a/cpan/Math-BigInt/t/bestr-mbf.t b/cpan/Math-BigInt/t/bestr-mbf.t
new file mode 100644 (file)
index 0000000..fcb1107
--- /dev/null
@@ -0,0 +1,275 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 460;
+
+use Math::BigFloat;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $expected) = split /:/;
+    my ($x, $str);
+
+    my $test = qq|\$x = Math::BigFloat -> new("$x_str");|
+             . qq| \$str = \$x -> bestr();|;
+
+    note "\n$test\n\n";
+    eval $test;
+
+    is($str, $expected, qq|input value is "$x_str"|);
+    is($x,   $x_str, "input object is unmodified");
+}
+
+__DATA__
+
+NaN:NaN
+
+inf:inf
+-inf:-inf
+
+0:0e+0
+
+# positive numbers
+
+0.000000000001:1e-12
+0.00000000001:10e-12
+0.0000000001:100e-12
+0.000000001:1e-9
+0.00000001:10e-9
+0.0000001:100e-9
+0.000001:1e-6
+0.00001:10e-6
+0.0001:100e-6
+0.001:1e-3
+0.01:10e-3
+0.1:100e-3
+1:1e+0
+10:10e+0
+100:100e+0
+1000:1e+3
+10000:10e+3
+100000:100e+3
+1000000:1e+6
+10000000:10e+6
+100000000:100e+6
+1000000000:1e+9
+10000000000:10e+9
+100000000000:100e+9
+1000000000000:1e+12
+
+0.0000000000012:1.2e-12
+0.000000000012:12e-12
+0.00000000012:120e-12
+0.0000000012:1.2e-9
+0.000000012:12e-9
+0.00000012:120e-9
+0.0000012:1.2e-6
+0.000012:12e-6
+0.00012:120e-6
+0.0012:1.2e-3
+0.012:12e-3
+0.12:120e-3
+1.2:1.2e+0
+12:12e+0
+120:120e+0
+1200:1.2e+3
+12000:12e+3
+120000:120e+3
+1200000:1.2e+6
+12000000:12e+6
+120000000:120e+6
+1200000000:1.2e+9
+12000000000:12e+9
+120000000000:120e+9
+1200000000000:1.2e+12
+
+0.00000000000123:1.23e-12
+0.0000000000123:12.3e-12
+0.000000000123:123e-12
+0.00000000123:1.23e-9
+0.0000000123:12.3e-9
+0.000000123:123e-9
+0.00000123:1.23e-6
+0.0000123:12.3e-6
+0.000123:123e-6
+0.00123:1.23e-3
+0.0123:12.3e-3
+0.123:123e-3
+1.23:1.23e+0
+12.3:12.3e+0
+123:123e+0
+1230:1.23e+3
+12300:12.3e+3
+123000:123e+3
+1230000:1.23e+6
+12300000:12.3e+6
+123000000:123e+6
+1230000000:1.23e+9
+12300000000:12.3e+9
+123000000000:123e+9
+1230000000000:1.23e+12
+
+0.000000000001234:1.234e-12
+0.00000000001234:12.34e-12
+0.0000000001234:123.4e-12
+0.000000001234:1.234e-9
+0.00000001234:12.34e-9
+0.0000001234:123.4e-9
+0.000001234:1.234e-6
+0.00001234:12.34e-6
+0.0001234:123.4e-6
+0.001234:1.234e-3
+0.01234:12.34e-3
+0.1234:123.4e-3
+1.234:1.234e+0
+12.34:12.34e+0
+123.4:123.4e+0
+1234:1.234e+3
+12340:12.34e+3
+123400:123.4e+3
+1234000:1.234e+6
+12340000:12.34e+6
+123400000:123.4e+6
+1234000000:1.234e+9
+12340000000:12.34e+9
+123400000000:123.4e+9
+1234000000000:1.234e+12
+
+0.000003141592:3.141592e-6
+0.00003141592:31.41592e-6
+0.0003141592:314.1592e-6
+0.003141592:3.141592e-3
+0.03141592:31.41592e-3
+0.3141592:314.1592e-3
+3.141592:3.141592e+0
+31.41592:31.41592e+0
+314.1592:314.1592e+0
+3141.592:3.141592e+3
+31415.92:31.41592e+3
+314159.2:314.1592e+3
+3141592:3.141592e+6
+
+# negative numbers
+
+-0.000000000001:-1e-12
+-0.00000000001:-10e-12
+-0.0000000001:-100e-12
+-0.000000001:-1e-9
+-0.00000001:-10e-9
+-0.0000001:-100e-9
+-0.000001:-1e-6
+-0.00001:-10e-6
+-0.0001:-100e-6
+-0.001:-1e-3
+-0.01:-10e-3
+-0.1:-100e-3
+-1:-1e+0
+-10:-10e+0
+-100:-100e+0
+-1000:-1e+3
+-10000:-10e+3
+-100000:-100e+3
+-1000000:-1e+6
+-10000000:-10e+6
+-100000000:-100e+6
+-1000000000:-1e+9
+-10000000000:-10e+9
+-100000000000:-100e+9
+-1000000000000:-1e+12
+
+-0.0000000000012:-1.2e-12
+-0.000000000012:-12e-12
+-0.00000000012:-120e-12
+-0.0000000012:-1.2e-9
+-0.000000012:-12e-9
+-0.00000012:-120e-9
+-0.0000012:-1.2e-6
+-0.000012:-12e-6
+-0.00012:-120e-6
+-0.0012:-1.2e-3
+-0.012:-12e-3
+-0.12:-120e-3
+-1.2:-1.2e+0
+-12:-12e+0
+-120:-120e+0
+-1200:-1.2e+3
+-12000:-12e+3
+-120000:-120e+3
+-1200000:-1.2e+6
+-12000000:-12e+6
+-120000000:-120e+6
+-1200000000:-1.2e+9
+-12000000000:-12e+9
+-120000000000:-120e+9
+-1200000000000:-1.2e+12
+
+-0.00000000000123:-1.23e-12
+-0.0000000000123:-12.3e-12
+-0.000000000123:-123e-12
+-0.00000000123:-1.23e-9
+-0.0000000123:-12.3e-9
+-0.000000123:-123e-9
+-0.00000123:-1.23e-6
+-0.0000123:-12.3e-6
+-0.000123:-123e-6
+-0.00123:-1.23e-3
+-0.0123:-12.3e-3
+-0.123:-123e-3
+-1.23:-1.23e+0
+-12.3:-12.3e+0
+-123:-123e+0
+-1230:-1.23e+3
+-12300:-12.3e+3
+-123000:-123e+3
+-1230000:-1.23e+6
+-12300000:-12.3e+6
+-123000000:-123e+6
+-1230000000:-1.23e+9
+-12300000000:-12.3e+9
+-123000000000:-123e+9
+-1230000000000:-1.23e+12
+
+-0.000000000001234:-1.234e-12
+-0.00000000001234:-12.34e-12
+-0.0000000001234:-123.4e-12
+-0.000000001234:-1.234e-9
+-0.00000001234:-12.34e-9
+-0.0000001234:-123.4e-9
+-0.000001234:-1.234e-6
+-0.00001234:-12.34e-6
+-0.0001234:-123.4e-6
+-0.001234:-1.234e-3
+-0.01234:-12.34e-3
+-0.1234:-123.4e-3
+-1.234:-1.234e+0
+-12.34:-12.34e+0
+-123.4:-123.4e+0
+-1234:-1.234e+3
+-12340:-12.34e+3
+-123400:-123.4e+3
+-1234000:-1.234e+6
+-12340000:-12.34e+6
+-123400000:-123.4e+6
+-1234000000:-1.234e+9
+-12340000000:-12.34e+9
+-123400000000:-123.4e+9
+-1234000000000:-1.234e+12
+
+-0.000003141592:-3.141592e-6
+-0.00003141592:-31.41592e-6
+-0.0003141592:-314.1592e-6
+-0.003141592:-3.141592e-3
+-0.03141592:-31.41592e-3
+-0.3141592:-314.1592e-3
+-3.141592:-3.141592e+0
+-31.41592:-31.41592e+0
+-314.1592:-314.1592e+0
+-3141.592:-3.141592e+3
+-31415.92:-31.41592e+3
+-314159.2:-314.1592e+3
+-3141592:-3.141592e+6
diff --git a/cpan/Math-BigInt/t/bestr-mbi.t b/cpan/Math-BigInt/t/bestr-mbi.t
new file mode 100644 (file)
index 0000000..1d391d4
--- /dev/null
@@ -0,0 +1,155 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 220;
+
+use Math::BigInt;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $expected) = split /:/;
+    my ($x, $str);
+
+    my $test = qq|\$x = Math::BigInt -> new("$x_str");|
+             . qq| \$str = \$x -> bestr();|;
+
+    note "\n$test\n\n";
+    eval $test;
+
+    is($str, $expected, qq|input value is "$x_str"|);
+    is($x,   $x_str, "input object is unmodified");
+}
+
+__DATA__
+
+NaN:NaN
+
+inf:inf
+-inf:-inf
+
+0:0e+0
+
+# positive numbers
+
+1:1e+0
+10:10e+0
+100:100e+0
+1000:1e+3
+10000:10e+3
+100000:100e+3
+1000000:1e+6
+10000000:10e+6
+100000000:100e+6
+1000000000:1e+9
+10000000000:10e+9
+100000000000:100e+9
+1000000000000:1e+12
+
+12:12e+0
+120:120e+0
+1200:1.2e+3
+12000:12e+3
+120000:120e+3
+1200000:1.2e+6
+12000000:12e+6
+120000000:120e+6
+1200000000:1.2e+9
+12000000000:12e+9
+120000000000:120e+9
+1200000000000:1.2e+12
+
+123:123e+0
+1230:1.23e+3
+12300:12.3e+3
+123000:123e+3
+1230000:1.23e+6
+12300000:12.3e+6
+123000000:123e+6
+1230000000:1.23e+9
+12300000000:12.3e+9
+123000000000:123e+9
+1230000000000:1.23e+12
+
+1234:1.234e+3
+12340:12.34e+3
+123400:123.4e+3
+1234000:1.234e+6
+12340000:12.34e+6
+123400000:123.4e+6
+1234000000:1.234e+9
+12340000000:12.34e+9
+123400000000:123.4e+9
+1234000000000:1.234e+12
+
+3:3e+0
+31:31e+0
+314:314e+0
+3141:3.141e+3
+31415:31.415e+3
+314159:314.159e+3
+3141592:3.141592e+6
+
+# negative numbers
+
+-1:-1e+0
+-10:-10e+0
+-100:-100e+0
+-1000:-1e+3
+-10000:-10e+3
+-100000:-100e+3
+-1000000:-1e+6
+-10000000:-10e+6
+-100000000:-100e+6
+-1000000000:-1e+9
+-10000000000:-10e+9
+-100000000000:-100e+9
+-1000000000000:-1e+12
+
+-12:-12e+0
+-120:-120e+0
+-1200:-1.2e+3
+-12000:-12e+3
+-120000:-120e+3
+-1200000:-1.2e+6
+-12000000:-12e+6
+-120000000:-120e+6
+-1200000000:-1.2e+9
+-12000000000:-12e+9
+-120000000000:-120e+9
+-1200000000000:-1.2e+12
+
+-123:-123e+0
+-1230:-1.23e+3
+-12300:-12.3e+3
+-123000:-123e+3
+-1230000:-1.23e+6
+-12300000:-12.3e+6
+-123000000:-123e+6
+-1230000000:-1.23e+9
+-12300000000:-12.3e+9
+-123000000000:-123e+9
+-1230000000000:-1.23e+12
+
+-1234:-1.234e+3
+-12340:-12.34e+3
+-123400:-123.4e+3
+-1234000:-1.234e+6
+-12340000:-12.34e+6
+-123400000:-123.4e+6
+-1234000000:-1.234e+9
+-12340000000:-12.34e+9
+-123400000000:-123.4e+9
+-1234000000000:-1.234e+12
+
+-3:-3e+0
+-31:-31e+0
+-314:-314e+0
+-3141:-3.141e+3
+-31415:-31.415e+3
+-314159:-314.159e+3
+-3141592:-3.141592e+6
index f846a95..66705da 100644 (file)
@@ -13,22 +13,22 @@ use Math::BigFloat;
 
 my $pi = Math::BigFloat::bpi();
 
-ok(!exists $pi->{_a}, 'A not set');
-ok(!exists $pi->{_p}, 'P not set');
+is($pi->{_a}, undef, 'A is not defined');
+is($pi->{_p}, undef, 'P is not defined');
 
 $pi = Math::BigFloat->bpi();
 
-ok(!exists $pi->{_a}, 'A not set');
-ok(!exists $pi->{_p}, 'P not set');
+is($pi->{_a}, undef, 'A is not defined');
+is($pi->{_p}, undef, 'P is not defined');
 
 $pi = Math::BigFloat->bpi(10);
 
-is($pi->{_a}, 10, 'A set');
-is($pi->{_p}, undef, 'P not set');
+is($pi->{_a}, 10,    'A is defined');
+is($pi->{_p}, undef, 'P is not defined');
 
 #############################################################################
 
 my $e = Math::BigFloat->new(1)->bexp();
 
-ok(!exists $e->{_a}, 'A not set');
-ok(!exists $e->{_p}, 'P not set');
+is($e->{_a}, undef, 'A is not defined');
+is($e->{_p}, undef, 'P is not defined');
index 10d0513..44b1114 100644 (file)
@@ -15,7 +15,6 @@ while (<DATA>) {
     s/\s+$//;                   # remove trailing whitespace
     next unless length;         # skip empty lines
 
-
     if (s/^&//) {
         $f = $_;
         next;
@@ -71,9 +70,9 @@ while (<DATA>) {
     } elsif ($f eq "bpi") {
         $try .= qq| $CLASS->bpi(\$x);|;
     } elsif ($f eq "binc") {
-        $try .= ' ++$x;';
+        $try .= ' $x->binc();';
     } elsif ($f eq "bdec") {
-        $try .= ' --$x;';
+        $try .= ' $x->bdec();';
     } elsif ($f eq "bround") {
         $try .= qq| $setup; \$x->bround($args[1]);|;
     } elsif ($f eq "bfround") {
@@ -112,7 +111,7 @@ while (<DATA>) {
         } elsif ($f eq "bacmp") {
             $try .= ' $x->bacmp($y);';
         } elsif ($f eq "bpow") {
-            $try .= ' $x ** $y;';
+            $try .= ' $x->bpow($y);';
         } elsif ($f eq "bnok") {
             $try .= ' $x->bnok($y);';
         } elsif ($f eq "bcos") {
@@ -124,21 +123,21 @@ while (<DATA>) {
         } elsif ($f eq "broot") {
             $try .= qq| $setup; \$x->broot(\$y);|;
         } elsif ($f eq "badd") {
-            $try .= ' $x + $y;';
+            $try .= ' $x->badd($y);';
         } elsif ($f eq "bsub") {
-            $try .= ' $x - $y;';
+            $try .= ' $x->bsub($y);';
         } elsif ($f eq "bmul") {
-            $try .= ' $x * $y;';
+            $try .= ' $x->bmul($y);';
         } elsif ($f eq "bdiv") {
-            $try .= qq| $setup; \$x / \$y;|;
+            $try .= qq| $setup; scalar \$x->bdiv(\$y);|;
         } elsif ($f eq "bdiv-list") {
             $try .= qq| $setup; join(",", \$x->bdiv(\$y));|;
         } elsif ($f eq "brsft") {
-            $try .= ' $x >> $y;';
+            $try .= ' $x->brsft($y);';
         } elsif ($f eq "blsft") {
-            $try .= ' $x << $y;';
+            $try .= ' $x->blsft($y);';
         } elsif ($f eq "bmod") {
-            $try .= ' $x % $y;';
+            $try .= ' $x->bmod($y);';
         } else {
             # Functions with three arguments
             $try .= qq| \$z = $CLASS->new("$args[2]");|;
@@ -260,42 +259,6 @@ $CLASS->accuracy(undef);   # reset
 $CLASS->precision(undef);      # reset
 
 ###############################################################################
-# bug in bsstr()/numify() showed up in after-rounding in bdiv()
-
-$x = $CLASS->new("0.008");
-$y = $CLASS->new(2);
-$x->bdiv(3, $y);
-is($x, "0.0027",
-   qq|\$x = $CLASS->new("0.008"); \$y = $CLASS->new(2); \$x->bdiv(3, \$y);|);
-
-###############################################################################
-# Verify that numify() returns a normalized value, and underflows and
-# overflows when given "extreme" values.
-
-like($CLASS->new("12345e67")->numify(), qr/^1\.2345e\+?0*71$/,
-     qq|$CLASS->new("12345e67")->numify()|);
-
-# underflow
-like($CLASS->new("1e-9999")->numify(), qr/^\+?0$/,
-     qq|$CLASS->new("1e-9999")->numify()|);
-
-# overflow
-unlike($CLASS->new("1e9999")->numify(), qr/^1(\.0*)?e\+?9+$/,
-       qq|$CLASS->new("1e9999")->numify()|);
-
-###############################################################################
-# Check numify on non-finite objects.
-
-{
-    require Math::Complex;
-    my $inf = Math::Complex::Inf();
-    my $nan = $inf - $inf;
-    is($CLASS -> binf("+") -> numify(),  $inf, "numify of +Inf");
-    is($CLASS -> binf("-") -> numify(), -$inf, "numify of -Inf");
-    is($CLASS -> bnan()    -> numify(),  $nan, "numify of NaN");
-}
-
-###############################################################################
 # bsqrt() with set global A/P or A/P enabled on $x, also a test whether bsqrt()
 # correctly modifies $x
 
@@ -497,7 +460,7 @@ is($x, 2,
 $x = $CLASS->new("2");
 $y = $CLASS->new("18.2");
 
-# 2 * (2 ** 18.2);
+# 2 * (2 ** int(18.2));
 $x <<= $y;
 is($x->copy()->bfround(-9), "602248.763144685",
    qq|\$x = $CLASS->new("2"); \$y = $CLASS->new("18.2");| .
index 2c76155..629cb56 100644 (file)
@@ -3,8 +3,8 @@
 use strict;
 use warnings;
 
-use Test::More tests => 2409            # tests in require'd file
-                        + 5;            # tests in this file
+use Test::More tests => 2402            # tests in require'd file
+                         + 5;           # tests in this file
 
 use Math::BigInt lib => 'Calc';
 use Math::BigFloat;
index ad7322c..e996c69 100644 (file)
@@ -110,16 +110,20 @@ while (<DATA>) {
         } elsif ($f eq "bacmp") {
             $try .= ' $x->bacmp($y);';
         } elsif ($f eq "badd") {
-            $try .= ' $x + $y;';
+            $try .= ' $x->badd($y);';
         } elsif ($f eq "bsub") {
-            $try .= ' $x - $y;';
+            $try .= ' $x->bsub($y);';
         } elsif ($f eq "bmul") {
-            $try .= ' $x * $y;';
+            $try .= ' $x->bmul($y);';
         } elsif ($f eq "bdiv") {
-            $try .= ' $x / $y;';
+            $try .= ' $x->bdiv($y);';
         } elsif ($f eq "bdiv-list") {
             $try .= ' join (",", $x->bdiv($y));';
-            # overload via x=
+        } elsif ($f eq "btdiv") {
+            $try .= ' $x->btdiv($y);';
+        } elsif ($f eq "btdiv-list") {
+            $try .= ' join (",", $x->btdiv($y));';
+        # overload via x=
         } elsif ($f =~ /^.=$/) {
             $try .= " \$x $f \$y;";
             # overload via x
@@ -653,18 +657,6 @@ is($x, -3, '$x = Math::Foo->new(5); $x = 8 - $x; $x = -3');
 is(ref($x), 'Math::Foo', '$x is an object of class "Math::Foo"');
 
 ###############################################################################
-# Check numify on non-finite objects.
-
-{
-    require Math::Complex;
-    my $inf = Math::Complex::Inf();
-    my $nan = $inf - $inf;
-    is($CLASS -> binf("+") -> numify(),  $inf, "numify of +Inf");
-    is($CLASS -> binf("-") -> numify(), -$inf, "numify of -Inf");
-    is($CLASS -> bnan()    -> numify(),  $nan, "numify of NaN");
-}
-
-###############################################################################
 # Test whether +inf eq inf
 #
 # This tried to test whether Math::BigInt inf equals Perl inf. Unfortunately,
@@ -1844,43 +1836,83 @@ NaNmul:-inf:NaN
 9999999999999999999:10000000000000000000:99999999999999999990000000000000000000
 
 &bdiv-list
-100:20:5,0
-4095:4095:1,0
--4095:-4095:1,0
-4095:-4095:-1,0
--4095:4095:-1,0
-123:2:61,1
-9:5:1,4
-9:4:2,1
-# inf handling and general remainder
-5:8:0,5
-0:8:0,0
-11:2:5,1
-11:-2:-6,-1
--11:2:-6,1
-# see table in documentation in MBI
-0:inf:0,0
-0:-inf:0,0
-5:inf:0,5
-5:-inf:-1,-inf
--5:inf:-1,inf
--5:-inf:0,-5
-inf:5:inf,NaN
--inf:5:-inf,NaN
+
+# Divide by zero and modulo zero.
+
+inf:0:inf,inf
+5:0:inf,5
+0:0:NaN,0
+-5:0:-inf,-5
+-inf:0:-inf,-inf
+
+# Numerator (dividend) is +/-inf, and denominator is finite and non-zero.
+
+inf:-inf:NaN,NaN
 inf:-5:-inf,NaN
--inf:-5:inf,NaN
-5:5:1,0
--5:-5:1,0
+inf:5:inf,NaN
 inf:inf:NaN,NaN
+
 -inf:-inf:NaN,NaN
+-inf:-5:inf,NaN
+-inf:5:-inf,NaN
 -inf:inf:NaN,NaN
-inf:-inf:NaN,NaN
-8:0:inf,8
-inf:0:inf,inf
-# exceptions to remainder rule
--8:0:-inf,-8
--inf:0:-inf,-inf
-0:0:NaN,0
+
+# Denominator (divisor) is +/-inf. The cases when the numerator is +/-inf
+# are covered above.
+
+-5:inf:-1,inf
+0:inf:0,0
+5:inf:0,5
+
+-5:-inf:0,-5
+0:-inf:0,0
+5:-inf:-1,-inf
+
+# Numerator is finite, and denominator is finite and non-zero.
+
+-5:-5:1,0
+-5:-2:2,-1
+-5:-1:5,0
+-5:1:-5,0
+-5:2:-3,1
+-5:5:-1,0
+-2:-5:0,-2
+-2:-2:1,0
+-2:-1:2,0
+-2:1:-2,0
+-2:2:-1,0
+-2:5:-1,3
+-1:-5:0,-1
+-1:-2:0,-1
+-1:-1:1,0
+-1:1:-1,0
+-1:2:-1,1
+-1:5:-1,4
+0:-5:0,0
+0:-2:0,0
+0:-1:0,0
+0:1:0,0
+0:2:0,0
+0:5:0,0
+1:-5:-1,-4
+1:-2:-1,-1
+1:-1:-1,0
+1:1:1,0
+1:2:0,1
+1:5:0,1
+2:-5:-1,-3
+2:-2:-1,0
+2:-1:-2,0
+2:1:2,0
+2:2:1,0
+2:5:0,2
+5:-5:-1,0
+5:-2:-3,-1
+5:-1:-5,0
+5:1:5,0
+5:2:2,1
+5:5:1,0
+
 # test the shortcut in Calc if @$x == @$yorg
 1234567812345678:123456712345678:10,688888898
 12345671234567:1234561234567:10,58888897
@@ -1916,32 +1948,42 @@ inf:0:inf,inf
 9999999_9999999_9999999_9999999:1_0000000_0000000_0000000:9999999,999999999999999999999
 
 &bdiv
-abc:abc:NaN
-abc:1:NaN
-1:abc:NaN
+
+# Divide by zero and modulo zero.
+
+inf:0:inf
+5:0:inf
 0:0:NaN
-# inf handling (see table in doc)
+-5:0:-inf
+-inf:0:-inf
+
+# Numerator (dividend) is +/-inf, and denominator is finite and non-zero.
+
+inf:-inf:NaN
+inf:-5:-inf
+inf:5:inf
+inf:inf:NaN
+
+-inf:-inf:NaN
+-inf:-5:inf
+-inf:5:-inf
+-inf:inf:NaN
+
+# Denominator (divisor) is +/-inf. The cases when the numerator is +/-inf
+# are covered above.
+
+-5:inf:-1
 0:inf:0
-0:-inf:0
 5:inf:0
-5:-inf:-1
--5:inf:-1
+
 -5:-inf:0
-inf:5:inf
--inf:5:-inf
-inf:-5:-inf
--inf:-5:inf
+0:-inf:0
+5:-inf:-1
+
+# Numerator is finite, and denominator is finite and non-zero.
+
 5:5:1
 -5:-5:1
-inf:inf:NaN
--inf:-inf:NaN
--inf:inf:NaN
-inf:-inf:NaN
-8:0:inf
-inf:0:inf
--8:0:-inf
--inf:0:-inf
-0:0:NaN
 11:2:5
 -11:-2:5
 -11:2:-6
@@ -2033,6 +2075,164 @@ inf:0:inf
 # bug with shortcut in Calc 0.44
 949418181818187070707070707070707070:181818181853535353535353535353535353:5
 
+&btdiv-list
+
+# Divide by zero and modulo zero.
+
+inf:0:inf,inf
+5:0:inf,5
+0:0:NaN,0
+-5:0:-inf,-5
+-inf:0:-inf,-inf
+
+# Numerator (dividend) is +/-inf, and denominator is finite and non-zero.
+
+inf:-inf:NaN,NaN
+inf:-5:-inf,NaN
+inf:5:inf,NaN
+inf:inf:NaN,NaN
+
+-inf:-inf:NaN,NaN
+-inf:-5:inf,NaN
+-inf:5:-inf,NaN
+-inf:inf:NaN,NaN
+
+# Denominator (divisor) is +/-inf. The cases when the numerator is +/-inf
+# are covered above.
+
+-5:inf:0,-5
+0:inf:0,0
+5:inf:0,5
+
+-5:-inf:0,-5
+0:-inf:0,0
+5:-inf:0,5
+
+# Numerator is finite, and denominator is finite and non-zero.
+
+-5:-5:1,0
+-5:-2:2,-1
+-5:-1:5,0
+-5:1:-5,0
+-5:2:-2,-1
+-5:5:-1,0
+-2:-5:0,-2
+-2:-2:1,0
+-2:-1:2,0
+-2:1:-2,0
+-2:2:-1,0
+-2:5:0,-2
+-1:-5:0,-1
+-1:-2:0,-1
+-1:-1:1,0
+-1:1:-1,0
+-1:2:0,-1
+-1:5:0,-1
+0:-5:0,0
+0:-2:0,0
+0:-1:0,0
+0:1:0,0
+0:2:0,0
+0:5:0,0
+1:-5:0,1
+1:-2:0,1
+1:-1:-1,0
+1:1:1,0
+1:2:0,1
+1:5:0,1
+2:-5:0,2
+2:-2:-1,0
+2:-1:-2,0
+2:1:2,0
+2:2:1,0
+2:5:0,2
+5:-5:-1,0
+5:-2:-2,1
+5:-1:-5,0
+5:1:5,0
+5:2:2,1
+5:5:1,0
+
+&btdiv
+
+# Divide by zero and modulo zero.
+
+inf:0:inf
+5:0:inf
+0:0:NaN
+-5:0:-inf
+-inf:0:-inf
+
+# Numerator (dividend) is +/-inf, and denominator is finite and non-zero.
+
+inf:-inf:NaN
+inf:-5:-inf
+inf:5:inf
+inf:inf:NaN
+
+-inf:-inf:NaN
+-inf:-5:inf
+-inf:5:-inf
+-inf:inf:NaN
+
+# Denominator (divisor) is +/-inf. The cases when the numerator is +/-inf
+# are covered above.
+
+-5:inf:0
+0:inf:0
+5:inf:0
+
+-5:-inf:0
+0:-inf:0
+5:-inf:0
+
+# Numerator is finite, and denominator is finite and non-zero.
+
+-5:-5:1
+-5:-2:2
+-5:-1:5
+-5:1:-5
+-5:2:-2
+-5:5:-1
+-2:-5:0
+-2:-2:1
+-2:-1:2
+-2:1:-2
+-2:2:-1
+-2:5:0
+-1:-5:0
+-1:-2:0
+-1:-1:1
+-1:1:-1
+-1:2:0
+-1:5:0
+0:-5:0
+0:-2:0
+0:-1:0
+0:1:0
+0:2:0
+0:5:0
+1:-5:0
+1:-2:0
+1:-1:-1
+1:1:1
+1:2:0
+1:5:0
+2:-5:0
+2:-2:-1
+2:-1:-2
+2:1:2
+2:2:1
+2:5:0
+5:-5:-1
+5:-2:-2
+5:-1:-5
+5:1:5
+5:2:2
+5:5:1
+
+###############################################################################
+
 &bmodinv
 # format: number:modulus:result
 # bmodinv Data errors
@@ -2248,35 +2448,44 @@ inf:5:13:NaN
 5:inf:13:NaN
 
 &bmod
-# inf handling, see table in doc
+
+# Divide by zero and modulo zero.
+
+inf:0:inf
+5:0:5
+0:0:0
+-5:0:-5
+-inf:0:-inf
+
+# Numerator (dividend) is +/-inf, and denominator is finite and non-zero.
+
+inf:-inf:NaN
+inf:-5:NaN
+inf:5:NaN
+inf:inf:NaN
+
+-inf:-inf:NaN
+-inf:-5:NaN
+-inf:5:NaN
+-inf:inf:NaN
+
+# Denominator (divisor) is +/-inf. The cases when the numerator is +/-inf
+# are covered above.
+
+-5:inf:inf
 0:inf:0
-0:-inf:0
 5:inf:5
-5:-inf:-inf
--5:inf:inf
+
 -5:-inf:-5
-inf:5:NaN
--inf:5:NaN
-inf:-5:NaN
--inf:-5:NaN
+0:-inf:0
+5:-inf:-inf
+
+# Numerator is finite, and denominator is finite and non-zero.
+
 5:5:0
 -5:-5:0
-inf:inf:NaN
--inf:-inf:NaN
--inf:inf:NaN
-inf:-inf:NaN
-8:0:8
-inf:0:inf
--inf:0:-inf
--8:0:-8
-0:0:0
-abc:abc:NaN
-abc:1:abc:NaN
-1:abc:NaN
 0:1:0
-1:0:1
 0:-1:0
--1:0:-1
 1:1:0
 -1:-1:0
 1:-1:0
index 7c81c89..e87e05a 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 3724            # tests in require'd file
+use Test::More tests => 3913            # tests in require'd file
                          + 6;           # tests in this file
 
 use Math::BigInt lib => 'Calc';
diff --git a/cpan/Math-BigInt/t/bnstr-mbf.t b/cpan/Math-BigInt/t/bnstr-mbf.t
new file mode 100644 (file)
index 0000000..d21051a
--- /dev/null
@@ -0,0 +1,278 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 460;
+
+use Math::BigFloat;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $expected) = split /:/;
+    my ($x, $str);
+
+    {
+        my $test = qq|\$x = Math::BigFloat -> new("$x_str");|
+                 . qq| \$str = \$x -> bnstr();|;
+
+        note "\n$test\n\n";
+        eval $test;
+
+        is($str, $expected, qq|input value is "$x_str"|);
+        is($x,   $x_str, "input object is unmodified");
+    }
+
+}
+
+__DATA__
+
+NaN:NaN
+
+inf:inf
+-inf:-inf
+
+0:0e+0
+
+# positive numbers
+
+0.000000000001:1e-12
+0.00000000001:1e-11
+0.0000000001:1e-10
+0.000000001:1e-9
+0.00000001:1e-8
+0.0000001:1e-7
+0.000001:1e-6
+0.00001:1e-5
+0.0001:1e-4
+0.001:1e-3
+0.01:1e-2
+0.1:1e-1
+1:1e+0
+10:1e+1
+100:1e+2
+1000:1e+3
+10000:1e+4
+100000:1e+5
+1000000:1e+6
+10000000:1e+7
+100000000:1e+8
+1000000000:1e+9
+10000000000:1e+10
+100000000000:1e+11
+1000000000000:1e+12
+
+0.0000000000012:1.2e-12
+0.000000000012:1.2e-11
+0.00000000012:1.2e-10
+0.0000000012:1.2e-9
+0.000000012:1.2e-8
+0.00000012:1.2e-7
+0.0000012:1.2e-6
+0.000012:1.2e-5
+0.00012:1.2e-4
+0.0012:1.2e-3
+0.012:1.2e-2
+0.12:1.2e-1
+1.2:1.2e+0
+12:1.2e+1
+120:1.2e+2
+1200:1.2e+3
+12000:1.2e+4
+120000:1.2e+5
+1200000:1.2e+6
+12000000:1.2e+7
+120000000:1.2e+8
+1200000000:1.2e+9
+12000000000:1.2e+10
+120000000000:1.2e+11
+1200000000000:1.2e+12
+
+0.00000000000123:1.23e-12
+0.0000000000123:1.23e-11
+0.000000000123:1.23e-10
+0.00000000123:1.23e-9
+0.0000000123:1.23e-8
+0.000000123:1.23e-7
+0.00000123:1.23e-6
+0.0000123:1.23e-5
+0.000123:1.23e-4
+0.00123:1.23e-3
+0.0123:1.23e-2
+0.123:1.23e-1
+1.23:1.23e+0
+12.3:1.23e+1
+123:1.23e+2
+1230:1.23e+3
+12300:1.23e+4
+123000:1.23e+5
+1230000:1.23e+6
+12300000:1.23e+7
+123000000:1.23e+8
+1230000000:1.23e+9
+12300000000:1.23e+10
+123000000000:1.23e+11
+1230000000000:1.23e+12
+
+0.000000000001234:1.234e-12
+0.00000000001234:1.234e-11
+0.0000000001234:1.234e-10
+0.000000001234:1.234e-9
+0.00000001234:1.234e-8
+0.0000001234:1.234e-7
+0.000001234:1.234e-6
+0.00001234:1.234e-5
+0.0001234:1.234e-4
+0.001234:1.234e-3
+0.01234:1.234e-2
+0.1234:1.234e-1
+1.234:1.234e+0
+12.34:1.234e+1
+123.4:1.234e+2
+1234:1.234e+3
+12340:1.234e+4
+123400:1.234e+5
+1234000:1.234e+6
+12340000:1.234e+7
+123400000:1.234e+8
+1234000000:1.234e+9
+12340000000:1.234e+10
+123400000000:1.234e+11
+1234000000000:1.234e+12
+
+0.000003141592:3.141592e-6
+0.00003141592:3.141592e-5
+0.0003141592:3.141592e-4
+0.003141592:3.141592e-3
+0.03141592:3.141592e-2
+0.3141592:3.141592e-1
+3.141592:3.141592e+0
+31.41592:3.141592e+1
+314.1592:3.141592e+2
+3141.592:3.141592e+3
+31415.92:3.141592e+4
+314159.2:3.141592e+5
+3141592:3.141592e+6
+
+# negative numbers
+
+-0.000000000001:-1e-12
+-0.00000000001:-1e-11
+-0.0000000001:-1e-10
+-0.000000001:-1e-9
+-0.00000001:-1e-8
+-0.0000001:-1e-7
+-0.000001:-1e-6
+-0.00001:-1e-5
+-0.0001:-1e-4
+-0.001:-1e-3
+-0.01:-1e-2
+-0.1:-1e-1
+-1:-1e+0
+-10:-1e+1
+-100:-1e+2
+-1000:-1e+3
+-10000:-1e+4
+-100000:-1e+5
+-1000000:-1e+6
+-10000000:-1e+7
+-100000000:-1e+8
+-1000000000:-1e+9
+-10000000000:-1e+10
+-100000000000:-1e+11
+-1000000000000:-1e+12
+
+-0.0000000000012:-1.2e-12
+-0.000000000012:-1.2e-11
+-0.00000000012:-1.2e-10
+-0.0000000012:-1.2e-9
+-0.000000012:-1.2e-8
+-0.00000012:-1.2e-7
+-0.0000012:-1.2e-6
+-0.000012:-1.2e-5
+-0.00012:-1.2e-4
+-0.0012:-1.2e-3
+-0.012:-1.2e-2
+-0.12:-1.2e-1
+-1.2:-1.2e+0
+-12:-1.2e+1
+-120:-1.2e+2
+-1200:-1.2e+3
+-12000:-1.2e+4
+-120000:-1.2e+5
+-1200000:-1.2e+6
+-12000000:-1.2e+7
+-120000000:-1.2e+8
+-1200000000:-1.2e+9
+-12000000000:-1.2e+10
+-120000000000:-1.2e+11
+-1200000000000:-1.2e+12
+
+-0.00000000000123:-1.23e-12
+-0.0000000000123:-1.23e-11
+-0.000000000123:-1.23e-10
+-0.00000000123:-1.23e-9
+-0.0000000123:-1.23e-8
+-0.000000123:-1.23e-7
+-0.00000123:-1.23e-6
+-0.0000123:-1.23e-5
+-0.000123:-1.23e-4
+-0.00123:-1.23e-3
+-0.0123:-1.23e-2
+-0.123:-1.23e-1
+-1.23:-1.23e+0
+-12.3:-1.23e+1
+-123:-1.23e+2
+-1230:-1.23e+3
+-12300:-1.23e+4
+-123000:-1.23e+5
+-1230000:-1.23e+6
+-12300000:-1.23e+7
+-123000000:-1.23e+8
+-1230000000:-1.23e+9
+-12300000000:-1.23e+10
+-123000000000:-1.23e+11
+-1230000000000:-1.23e+12
+
+-0.000000000001234:-1.234e-12
+-0.00000000001234:-1.234e-11
+-0.0000000001234:-1.234e-10
+-0.000000001234:-1.234e-9
+-0.00000001234:-1.234e-8
+-0.0000001234:-1.234e-7
+-0.000001234:-1.234e-6
+-0.00001234:-1.234e-5
+-0.0001234:-1.234e-4
+-0.001234:-1.234e-3
+-0.01234:-1.234e-2
+-0.1234:-1.234e-1
+-1.234:-1.234e+0
+-12.34:-1.234e+1
+-123.4:-1.234e+2
+-1234:-1.234e+3
+-12340:-1.234e+4
+-123400:-1.234e+5
+-1234000:-1.234e+6
+-12340000:-1.234e+7
+-123400000:-1.234e+8
+-1234000000:-1.234e+9
+-12340000000:-1.234e+10
+-123400000000:-1.234e+11
+-1234000000000:-1.234e+12
+
+-0.000003141592:-3.141592e-6
+-0.00003141592:-3.141592e-5
+-0.0003141592:-3.141592e-4
+-0.003141592:-3.141592e-3
+-0.03141592:-3.141592e-2
+-0.3141592:-3.141592e-1
+-3.141592:-3.141592e+0
+-31.41592:-3.141592e+1
+-314.1592:-3.141592e+2
+-3141.592:-3.141592e+3
+-31415.92:-3.141592e+4
+-314159.2:-3.141592e+5
+-3141592:-3.141592e+6
diff --git a/cpan/Math-BigInt/t/bnstr-mbi.t b/cpan/Math-BigInt/t/bnstr-mbi.t
new file mode 100644 (file)
index 0000000..361166c
--- /dev/null
@@ -0,0 +1,158 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 220;
+
+use Math::BigInt;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $expected) = split /:/;
+    my ($x, $str);
+
+    {
+        my $test = qq|\$x = Math::BigInt -> new("$x_str");|
+                 . qq| \$str = \$x -> bnstr();|;
+
+        note "\n$test\n\n";
+        eval $test;
+
+        is($str, $expected, qq|input value is "$x_str"|);
+        is($x,   $x_str, "input object is unmodified");
+    }
+
+}
+
+__DATA__
+
+NaN:NaN
+
+inf:inf
+-inf:-inf
+
+0:0e+0
+
+# positive numbers
+
+1:1e+0
+10:1e+1
+100:1e+2
+1000:1e+3
+10000:1e+4
+100000:1e+5
+1000000:1e+6
+10000000:1e+7
+100000000:1e+8
+1000000000:1e+9
+10000000000:1e+10
+100000000000:1e+11
+1000000000000:1e+12
+
+12:1.2e+1
+120:1.2e+2
+1200:1.2e+3
+12000:1.2e+4
+120000:1.2e+5
+1200000:1.2e+6
+12000000:1.2e+7
+120000000:1.2e+8
+1200000000:1.2e+9
+12000000000:1.2e+10
+120000000000:1.2e+11
+1200000000000:1.2e+12
+
+123:1.23e+2
+1230:1.23e+3
+12300:1.23e+4
+123000:1.23e+5
+1230000:1.23e+6
+12300000:1.23e+7
+123000000:1.23e+8
+1230000000:1.23e+9
+12300000000:1.23e+10
+123000000000:1.23e+11
+1230000000000:1.23e+12
+
+1234:1.234e+3
+12340:1.234e+4
+123400:1.234e+5
+1234000:1.234e+6
+12340000:1.234e+7
+123400000:1.234e+8
+1234000000:1.234e+9
+12340000000:1.234e+10
+123400000000:1.234e+11
+1234000000000:1.234e+12
+
+3:3e+0
+31:3.1e+1
+314:3.14e+2
+3141:3.141e+3
+31415:3.1415e+4
+314159:3.14159e+5
+3141592:3.141592e+6
+
+# negative numbers
+
+-1:-1e+0
+-10:-1e+1
+-100:-1e+2
+-1000:-1e+3
+-10000:-1e+4
+-100000:-1e+5
+-1000000:-1e+6
+-10000000:-1e+7
+-100000000:-1e+8
+-1000000000:-1e+9
+-10000000000:-1e+10
+-100000000000:-1e+11
+-1000000000000:-1e+12
+
+-12:-1.2e+1
+-120:-1.2e+2
+-1200:-1.2e+3
+-12000:-1.2e+4
+-120000:-1.2e+5
+-1200000:-1.2e+6
+-12000000:-1.2e+7
+-120000000:-1.2e+8
+-1200000000:-1.2e+9
+-12000000000:-1.2e+10
+-120000000000:-1.2e+11
+-1200000000000:-1.2e+12
+
+-123:-1.23e+2
+-1230:-1.23e+3
+-12300:-1.23e+4
+-123000:-1.23e+5
+-1230000:-1.23e+6
+-12300000:-1.23e+7
+-123000000:-1.23e+8
+-1230000000:-1.23e+9
+-12300000000:-1.23e+10
+-123000000000:-1.23e+11
+-1230000000000:-1.23e+12
+
+-1234:-1.234e+3
+-12340:-1.234e+4
+-123400:-1.234e+5
+-1234000:-1.234e+6
+-12340000:-1.234e+7
+-123400000:-1.234e+8
+-1234000000:-1.234e+9
+-12340000000:-1.234e+10
+-123400000000:-1.234e+11
+-1234000000000:-1.234e+12
+
+-3:-3e+0
+-31:-3.1e+1
+-314:-3.14e+2
+-3141:-3.141e+3
+-31415:-3.1415e+4
+-314159:-3.14159e+5
+-3141592:-3.141592e+6
diff --git a/cpan/Math-BigInt/t/bsstr-mbf.t b/cpan/Math-BigInt/t/bsstr-mbf.t
new file mode 100644 (file)
index 0000000..89faab1
--- /dev/null
@@ -0,0 +1,275 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 460;
+
+use Math::BigFloat;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $expected) = split /:/;
+    my ($x, $str);
+
+        my $test = qq|\$x = Math::BigFloat -> new("$x_str");|
+                 . qq| \$str = \$x -> bsstr();|;
+
+        note "\n$test\n\n";
+        eval $test;
+
+        is($str, $expected, qq|input value is "$x_str"|);
+        is($x,   $x_str, "input object is unmodified");
+}
+
+__DATA__
+
+NaN:NaN
+
+inf:inf
+-inf:-inf
+
+0:0e+0
+
+# positive numbers
+
+0.000000000001:1e-12
+0.00000000001:1e-11
+0.0000000001:1e-10
+0.000000001:1e-9
+0.00000001:1e-8
+0.0000001:1e-7
+0.000001:1e-6
+0.00001:1e-5
+0.0001:1e-4
+0.001:1e-3
+0.01:1e-2
+0.1:1e-1
+1:1e+0
+10:1e+1
+100:1e+2
+1000:1e+3
+10000:1e+4
+100000:1e+5
+1000000:1e+6
+10000000:1e+7
+100000000:1e+8
+1000000000:1e+9
+10000000000:1e+10
+100000000000:1e+11
+1000000000000:1e+12
+
+0.0000000000012:12e-13
+0.000000000012:12e-12
+0.00000000012:12e-11
+0.0000000012:12e-10
+0.000000012:12e-9
+0.00000012:12e-8
+0.0000012:12e-7
+0.000012:12e-6
+0.00012:12e-5
+0.0012:12e-4
+0.012:12e-3
+0.12:12e-2
+1.2:12e-1
+12:12e+0
+120:12e+1
+1200:12e+2
+12000:12e+3
+120000:12e+4
+1200000:12e+5
+12000000:12e+6
+120000000:12e+7
+1200000000:12e+8
+12000000000:12e+9
+120000000000:12e+10
+1200000000000:12e+11
+
+0.00000000000123:123e-14
+0.0000000000123:123e-13
+0.000000000123:123e-12
+0.00000000123:123e-11
+0.0000000123:123e-10
+0.000000123:123e-9
+0.00000123:123e-8
+0.0000123:123e-7
+0.000123:123e-6
+0.00123:123e-5
+0.0123:123e-4
+0.123:123e-3
+1.23:123e-2
+12.3:123e-1
+123:123e+0
+1230:123e+1
+12300:123e+2
+123000:123e+3
+1230000:123e+4
+12300000:123e+5
+123000000:123e+6
+1230000000:123e+7
+12300000000:123e+8
+123000000000:123e+9
+1230000000000:123e+10
+
+0.000000000001234:1234e-15
+0.00000000001234:1234e-14
+0.0000000001234:1234e-13
+0.000000001234:1234e-12
+0.00000001234:1234e-11
+0.0000001234:1234e-10
+0.000001234:1234e-9
+0.00001234:1234e-8
+0.0001234:1234e-7
+0.001234:1234e-6
+0.01234:1234e-5
+0.1234:1234e-4
+1.234:1234e-3
+12.34:1234e-2
+123.4:1234e-1
+1234:1234e+0
+12340:1234e+1
+123400:1234e+2
+1234000:1234e+3
+12340000:1234e+4
+123400000:1234e+5
+1234000000:1234e+6
+12340000000:1234e+7
+123400000000:1234e+8
+1234000000000:1234e+9
+
+0.000003141592:3141592e-12
+0.00003141592:3141592e-11
+0.0003141592:3141592e-10
+0.003141592:3141592e-9
+0.03141592:3141592e-8
+0.3141592:3141592e-7
+3.141592:3141592e-6
+31.41592:3141592e-5
+314.1592:3141592e-4
+3141.592:3141592e-3
+31415.92:3141592e-2
+314159.2:3141592e-1
+3141592:3141592e+0
+
+# negative numbers
+
+-0.000000000001:-1e-12
+-0.00000000001:-1e-11
+-0.0000000001:-1e-10
+-0.000000001:-1e-9
+-0.00000001:-1e-8
+-0.0000001:-1e-7
+-0.000001:-1e-6
+-0.00001:-1e-5
+-0.0001:-1e-4
+-0.001:-1e-3
+-0.01:-1e-2
+-0.1:-1e-1
+-1:-1e+0
+-10:-1e+1
+-100:-1e+2
+-1000:-1e+3
+-10000:-1e+4
+-100000:-1e+5
+-1000000:-1e+6
+-10000000:-1e+7
+-100000000:-1e+8
+-1000000000:-1e+9
+-10000000000:-1e+10
+-100000000000:-1e+11
+-1000000000000:-1e+12
+
+-0.0000000000012:-12e-13
+-0.000000000012:-12e-12
+-0.00000000012:-12e-11
+-0.0000000012:-12e-10
+-0.000000012:-12e-9
+-0.00000012:-12e-8
+-0.0000012:-12e-7
+-0.000012:-12e-6
+-0.00012:-12e-5
+-0.0012:-12e-4
+-0.012:-12e-3
+-0.12:-12e-2
+-1.2:-12e-1
+-12:-12e+0
+-120:-12e+1
+-1200:-12e+2
+-12000:-12e+3
+-120000:-12e+4
+-1200000:-12e+5
+-12000000:-12e+6
+-120000000:-12e+7
+-1200000000:-12e+8
+-12000000000:-12e+9
+-120000000000:-12e+10
+-1200000000000:-12e+11
+
+-0.00000000000123:-123e-14
+-0.0000000000123:-123e-13
+-0.000000000123:-123e-12
+-0.00000000123:-123e-11
+-0.0000000123:-123e-10
+-0.000000123:-123e-9
+-0.00000123:-123e-8
+-0.0000123:-123e-7
+-0.000123:-123e-6
+-0.00123:-123e-5
+-0.0123:-123e-4
+-0.123:-123e-3
+-1.23:-123e-2
+-12.3:-123e-1
+-123:-123e+0
+-1230:-123e+1
+-12300:-123e+2
+-123000:-123e+3
+-1230000:-123e+4
+-12300000:-123e+5
+-123000000:-123e+6
+-1230000000:-123e+7
+-12300000000:-123e+8
+-123000000000:-123e+9
+-1230000000000:-123e+10
+
+-0.000000000001234:-1234e-15
+-0.00000000001234:-1234e-14
+-0.0000000001234:-1234e-13
+-0.000000001234:-1234e-12
+-0.00000001234:-1234e-11
+-0.0000001234:-1234e-10
+-0.000001234:-1234e-9
+-0.00001234:-1234e-8
+-0.0001234:-1234e-7
+-0.001234:-1234e-6
+-0.01234:-1234e-5
+-0.1234:-1234e-4
+-1.234:-1234e-3
+-12.34:-1234e-2
+-123.4:-1234e-1
+-1234:-1234e+0
+-12340:-1234e+1
+-123400:-1234e+2
+-1234000:-1234e+3
+-12340000:-1234e+4
+-123400000:-1234e+5
+-1234000000:-1234e+6
+-12340000000:-1234e+7
+-123400000000:-1234e+8
+-1234000000000:-1234e+9
+
+-0.000003141592:-3141592e-12
+-0.00003141592:-3141592e-11
+-0.0003141592:-3141592e-10
+-0.003141592:-3141592e-9
+-0.03141592:-3141592e-8
+-0.3141592:-3141592e-7
+-3.141592:-3141592e-6
+-31.41592:-3141592e-5
+-314.1592:-3141592e-4
+-3141.592:-3141592e-3
+-31415.92:-3141592e-2
+-314159.2:-3141592e-1
+-3141592:-3141592e+0
diff --git a/cpan/Math-BigInt/t/bsstr-mbi.t b/cpan/Math-BigInt/t/bsstr-mbi.t
new file mode 100644 (file)
index 0000000..1422522
--- /dev/null
@@ -0,0 +1,158 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 220;
+
+use Math::BigInt;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $expected) = split /:/;
+    my ($x, $str);
+
+    {
+        my $test = qq|\$x = Math::BigInt -> new("$x_str");|
+                 . qq| \$str = \$x -> bsstr();|;
+
+        note "\n$test\n\n";
+        eval $test;
+
+        is($str, $expected, qq|input value is "$x_str"|);
+        is($x,   $x_str, "input object is unmodified");
+    }
+
+}
+
+__DATA__
+
+NaN:NaN
+
+inf:inf
+-inf:-inf
+
+0:0e+0
+
+# positive numbers
+
+1:1e+0
+10:1e+1
+100:1e+2
+1000:1e+3
+10000:1e+4
+100000:1e+5
+1000000:1e+6
+10000000:1e+7
+100000000:1e+8
+1000000000:1e+9
+10000000000:1e+10
+100000000000:1e+11
+1000000000000:1e+12
+
+12:12e+0
+120:12e+1
+1200:12e+2
+12000:12e+3
+120000:12e+4
+1200000:12e+5
+12000000:12e+6
+120000000:12e+7
+1200000000:12e+8
+12000000000:12e+9
+120000000000:12e+10
+1200000000000:12e+11
+
+123:123e+0
+1230:123e+1
+12300:123e+2
+123000:123e+3
+1230000:123e+4
+12300000:123e+5
+123000000:123e+6
+1230000000:123e+7
+12300000000:123e+8
+123000000000:123e+9
+1230000000000:123e+10
+
+1234:1234e+0
+12340:1234e+1
+123400:1234e+2
+1234000:1234e+3
+12340000:1234e+4
+123400000:1234e+5
+1234000000:1234e+6
+12340000000:1234e+7
+123400000000:1234e+8
+1234000000000:1234e+9
+
+3:3e+0
+31:31e+0
+314:314e+0
+3141:3141e+0
+31415:31415e+0
+314159:314159e+0
+3141592:3141592e+0
+
+# negative numbers
+
+-1:-1e+0
+-10:-1e+1
+-100:-1e+2
+-1000:-1e+3
+-10000:-1e+4
+-100000:-1e+5
+-1000000:-1e+6
+-10000000:-1e+7
+-100000000:-1e+8
+-1000000000:-1e+9
+-10000000000:-1e+10
+-100000000000:-1e+11
+-1000000000000:-1e+12
+
+-12:-12e+0
+-120:-12e+1
+-1200:-12e+2
+-12000:-12e+3
+-120000:-12e+4
+-1200000:-12e+5
+-12000000:-12e+6
+-120000000:-12e+7
+-1200000000:-12e+8
+-12000000000:-12e+9
+-120000000000:-12e+10
+-1200000000000:-12e+11
+
+-123:-123e+0
+-1230:-123e+1
+-12300:-123e+2
+-123000:-123e+3
+-1230000:-123e+4
+-12300000:-123e+5
+-123000000:-123e+6
+-1230000000:-123e+7
+-12300000000:-123e+8
+-123000000000:-123e+9
+-1230000000000:-123e+10
+
+-1234:-1234e+0
+-12340:-1234e+1
+-123400:-1234e+2
+-1234000:-1234e+3
+-12340000:-1234e+4
+-123400000:-1234e+5
+-1234000000:-1234e+6
+-12340000000:-1234e+7
+-123400000000:-1234e+8
+-1234000000000:-1234e+9
+
+-3:-3e+0
+-31:-31e+0
+-314:-314e+0
+-3141:-3141e+0
+-31415:-31415e+0
+-314159:-314159e+0
+-3141592:-3141592e+0
diff --git a/cpan/Math-BigInt/t/calling-class-methods.t b/cpan/Math-BigInt/t/calling-class-methods.t
new file mode 100644 (file)
index 0000000..1bc0f6a
--- /dev/null
@@ -0,0 +1,119 @@
+#!perl
+
+# test calling conventions, and :constant overloading
+
+use strict;
+use warnings;
+
+use Test::More tests => 148;
+
+##############################################################################
+
+package Math::BigInt::Test;
+
+use Math::BigInt;
+our @ISA = qw/Math::BigInt/;            # subclass of MBI
+use overload;
+
+##############################################################################
+
+package Math::BigFloat::Test;
+
+use Math::BigFloat;
+our @ISA = qw/Math::BigFloat/;          # subclass of MBI
+use overload;
+
+##############################################################################
+
+package main;
+
+use Math::BigInt try => 'Calc';
+use Math::BigFloat;
+
+my ($x, $y, $z, $u);
+
+###############################################################################
+# check whether op's accept normal strings, even when inherited by subclasses
+
+# do one positive and one negative test to avoid false positives by "accident"
+
+my ($method, $expected);
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    if (s/^&//) {
+        $method = $_;
+        next;
+    }
+
+    my @args = split /:/, $_, 99;
+    $expected = pop @args;
+    foreach my $class (qw/
+                             Math::BigInt Math::BigFloat
+                             Math::BigInt::Test Math::BigFloat::Test
+                         /)
+    {
+        my $arg = $args[0] =~ /"/ || $args[0] eq "" ? $args[0]
+                                                    : qq|"$args[0]"|;
+        my $try = "$class -> $method($arg);";
+        my $got = eval $try;
+        is($got, $expected, $try);
+    }
+}
+
+__END__
+&is_zero
+1:0
+0:1
+&is_one
+1:1
+0:0
+&is_positive
+1:1
+-1:0
+&is_negative
+1:0
+-1:1
+&is_nan
+abc:1
+1:0
+&is_inf
+inf:1
+0:0
+&bstr
+5:5
+10:10
+-10:-10
+abc:NaN
+"+inf":inf
+"-inf":-inf
+&bsstr
+1:1e+0
+0:0e+0
+2:2e+0
+200:2e+2
+-5:-5e+0
+-100:-1e+2
+abc:NaN
+"+inf":inf
+&babs
+-1:1
+1:1
+#&bnot
+#-2:1
+#1:-2
+&bzero
+:0
+&bnan
+:NaN
+abc:NaN
+&bone
+:1
+"+":1
+"-":-1
+&binf
+:inf
+"+":inf
+"-":-inf
diff --git a/cpan/Math-BigInt/t/calling-instance-methods.t b/cpan/Math-BigInt/t/calling-instance-methods.t
new file mode 100644 (file)
index 0000000..8b0945e
--- /dev/null
@@ -0,0 +1,119 @@
+#!perl
+
+# test calling conventions, and :constant overloading
+
+use strict;
+use warnings;
+
+use Test::More tests => 140;
+
+##############################################################################
+
+package Math::BigInt::Test;
+
+use Math::BigInt;
+our @ISA = qw/Math::BigInt/;            # subclass of MBI
+use overload;
+
+##############################################################################
+
+package Math::BigFloat::Test;
+
+use Math::BigFloat;
+our @ISA = qw/Math::BigFloat/;          # subclass of MBI
+use overload;
+
+##############################################################################
+
+package main;
+
+use Math::BigInt try => 'Calc';
+use Math::BigFloat;
+
+my ($x, $y, $z, $u);
+
+###############################################################################
+# check whether op's accept normal strings, even when inherited by subclasses
+
+# do one positive and one negative test to avoid false positives by "accident"
+
+my ($method, $expected);
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    if (s/^&//) {
+        $method = $_;
+        next;
+    }
+
+    my @args = split /:/, $_, 99;
+    $expected = pop @args;
+    foreach my $class (qw/
+                             Math::BigInt Math::BigFloat
+                             Math::BigInt::Test Math::BigFloat::Test
+                         /)
+    {
+        my $arg = $args[0] =~ /"/ || $args[0] eq "" ? $args[0]
+                                                    : qq|"$args[0]"|;
+        my $try = "$class -> new($arg) -> $method();";
+        my $got = eval $try;
+        is($got, $expected, $try);
+    }
+}
+
+__END__
+&is_zero
+1:0
+0:1
+&is_one
+1:1
+0:0
+&is_positive
+1:1
+-1:0
+&is_negative
+1:0
+-1:1
+&is_nan
+abc:1
+1:0
+&is_inf
+inf:1
+0:0
+&bstr
+5:5
+10:10
+-10:-10
+abc:NaN
+"+inf":inf
+"-inf":-inf
+&bsstr
+1:1e+0
+0:0e+0
+2:2e+0
+200:2e+2
+-5:-5e+0
+-100:-1e+2
+abc:NaN
+"+inf":inf
+&babs
+-1:1
+1:1
+&bnot
+-2:1
+1:-2
+&bzero
+:0
+&bnan
+:NaN
+abc:NaN
+&bone
+:1
+#"+":1
+#"-":-1
+&binf
+:inf
+#"+":inf
+#"-":-inf
index fb51e2b..b81423c 100644 (file)
@@ -6,10 +6,10 @@ use strict;
 use warnings;
 use lib 't';
 
-my $VERSION = '1.999715';       # adjust manually to match latest release
+my $VERSION = '1.999726';       # adjust manually to match latest release
 $VERSION = eval $VERSION;
 
-use Test::More tests => 161;
+use Test::More tests => 5;
 
 ##############################################################################
 
@@ -34,43 +34,10 @@ package main;
 use Math::BigInt try => 'Calc';
 use Math::BigFloat;
 
-my ($x, $y, $z, $u);
-
-###############################################################################
-# check whether op's accept normal strings, even when inherited by subclasses
-
-# do one positive and one negative test to avoid false positives by "accident"
-
-my ($method, $expected);
-while (<DATA>) {
-    s/#.*$//;                   # remove comments
-    s/\s+$//;                   # remove trailing whitespace
-    next unless length;         # skip empty lines
-
-    if (s/^&//) {
-        $method = $_;
-        next;
-    }
-
-    my @args = split /:/, $_, 99;
-    $expected = pop @args;
-    foreach my $class (qw/
-                             Math::BigInt Math::BigFloat
-                             Math::BigInt::Test Math::BigFloat::Test
-                         /)
-    {
-        my $arg = $args[0] =~ /"/ || $args[0] eq "" ? $args[0]
-                                                    : qq|"$args[0]"|;
-        my $try = "$class\->$method($arg);";
-        my $got = eval $try;
-        is($got, $expected, $try);
-    }
-}
+my ($x, $expected, $try);
 
 my $class = 'Math::BigInt';
 
-my $try;
-
 # test whether use Math::BigInt qw/VERSION/ works
 $try = "use $class (" . ($VERSION . '1') .");";
 $try .= ' $x = $class->new(123); $x = "$x";';
@@ -102,60 +69,3 @@ $try = qq|use $class ($VERSION, "lib", "$class\::Scalar");|
      . q| $x = 2**10; $x = "$x";|;
 $expected = eval $try;
 is($expected, "1024", $try);
-
-# all done
-
-__END__
-&is_zero
-1:0
-0:1
-&is_one
-1:1
-0:0
-&is_positive
-1:1
--1:0
-&is_negative
-1:0
--1:1
-&is_nan
-abc:1
-1:0
-&is_inf
-inf:1
-0:0
-&bstr
-5:5
-10:10
--10:-10
-abc:NaN
-"+inf":inf
-"-inf":-inf
-&bsstr
-1:1e+0
-0:0e+0
-2:2e+0
-200:2e+2
--5:-5e+0
--100:-1e+2
-abc:NaN
-"+inf":inf
-&babs
--1:1
-1:1
-&bnot
--2:1
-1:-2
-&bzero
-:0
-&bnan
-:NaN
-abc:NaN
-&bone
-:1
-"+":1
-"-":-1
-&binf
-:inf
-"+":inf
-"-":-inf
diff --git a/cpan/Math-BigInt/t/dparts-mbf.t b/cpan/Math-BigInt/t/dparts-mbf.t
new file mode 100644 (file)
index 0000000..90a29dd
--- /dev/null
@@ -0,0 +1,294 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 1840;
+
+use Math::BigFloat;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $int_str, $frc_str) = split /:/;
+
+    note(qq|\n\$x = Math::BigFloat -> new("$x_str");|,
+         qq| (\$i, \$f) = \$x -> dparts();\n\n|);
+
+    {
+        my $x = Math::BigFloat -> new($x_str);
+        my ($int_got, $frc_got) = $x -> dparts();
+
+        isa_ok($int_got, "Math::BigFloat");
+        isa_ok($frc_got, "Math::BigFloat");
+
+        is($int_got, $int_str, "value of integer part");
+        is($frc_got, $frc_str, "value of fraction part");
+        is($x,       $x_str,   "input is unmodified");
+    }
+
+    note(qq|\n\$x = Math::BigFloat -> new("$x_str");|,
+         qq| \$i = \$x -> dparts();\n\n|);
+
+    {
+        my $x = Math::BigFloat -> new($x_str);
+        my $int_got = $x -> dparts();
+
+        isa_ok($int_got, "Math::BigFloat");
+
+        is($int_got, $int_str, "value of integer part");
+        is($x,       $x_str,   "input is unmodified");
+    }
+
+}
+
+__DATA__
+
+NaN:NaN:0
+
+inf:inf:0
+-inf:-inf:0
+
+0:0:0
+
+# positive numbers
+
+0.000000000001:0:0.000000000001
+0.00000000001:0:0.00000000001
+0.0000000001:0:0.0000000001
+0.000000001:0:0.000000001
+0.00000001:0:0.00000001
+0.0000001:0:0.0000001
+0.000001:0:0.000001
+0.00001:0:0.00001
+0.0001:0:0.0001
+0.001:0:0.001
+0.01:0:0.01
+0.1:0:0.1
+1:1:0
+10:10:0
+100:100:0
+1000:1000:0
+10000:10000:0
+100000:100000:0
+1000000:1000000:0
+10000000:10000000:0
+100000000:100000000:0
+1000000000:1000000000:0
+10000000000:10000000000:0
+100000000000:100000000000:0
+1000000000000:1000000000000:0
+
+0.0000000000012:0:0.0000000000012
+0.000000000012:0:0.000000000012
+0.00000000012:0:0.00000000012
+0.0000000012:0:0.0000000012
+0.000000012:0:0.000000012
+0.00000012:0:0.00000012
+0.0000012:0:0.0000012
+0.000012:0:0.000012
+0.00012:0:0.00012
+0.0012:0:0.0012
+0.012:0:0.012
+0.12:0:0.12
+1.2:1:0.2
+12:12:0
+120:120:0
+1200:1200:0
+12000:12000:0
+120000:120000:0
+1200000:1200000:0
+12000000:12000000:0
+120000000:120000000:0
+1200000000:1200000000:0
+12000000000:12000000000:0
+120000000000:120000000000:0
+1200000000000:1200000000000:0
+
+0.00000000000123:0:0.00000000000123
+0.0000000000123:0:0.0000000000123
+0.000000000123:0:0.000000000123
+0.00000000123:0:0.00000000123
+0.0000000123:0:0.0000000123
+0.000000123:0:0.000000123
+0.00000123:0:0.00000123
+0.0000123:0:0.0000123
+0.000123:0:0.000123
+0.00123:0:0.00123
+0.0123:0:0.0123
+0.123:0:0.123
+1.23:1:0.23
+12.3:12:0.3
+123:123:0
+1230:1230:0
+12300:12300:0
+123000:123000:0
+1230000:1230000:0
+12300000:12300000:0
+123000000:123000000:0
+1230000000:1230000000:0
+12300000000:12300000000:0
+123000000000:123000000000:0
+1230000000000:1230000000000:0
+
+0.000000000001234:0:0.000000000001234
+0.00000000001234:0:0.00000000001234
+0.0000000001234:0:0.0000000001234
+0.000000001234:0:0.000000001234
+0.00000001234:0:0.00000001234
+0.0000001234:0:0.0000001234
+0.000001234:0:0.000001234
+0.00001234:0:0.00001234
+0.0001234:0:0.0001234
+0.001234:0:0.001234
+0.01234:0:0.01234
+0.1234:0:0.1234
+1.234:1:0.234
+12.34:12:0.34
+123.4:123:0.4
+1234:1234:0
+12340:12340:0
+123400:123400:0
+1234000:1234000:0
+12340000:12340000:0
+123400000:123400000:0
+1234000000:1234000000:0
+12340000000:12340000000:0
+123400000000:123400000000:0
+1234000000000:1234000000000:0
+
+0.000003141592:0:0.000003141592
+0.00003141592:0:0.00003141592
+0.0003141592:0:0.0003141592
+0.003141592:0:0.003141592
+0.03141592:0:0.03141592
+0.3141592:0:0.3141592
+3.141592:3:0.141592
+31.41592:31:0.41592
+314.1592:314:0.1592
+3141.592:3141:0.592
+31415.92:31415:0.92
+314159.2:314159:0.2
+3141592:3141592:0
+
+# negative numbers
+
+-0.000000000001:0:-0.000000000001
+-0.00000000001:0:-0.00000000001
+-0.0000000001:0:-0.0000000001
+-0.000000001:0:-0.000000001
+-0.00000001:0:-0.00000001
+-0.0000001:0:-0.0000001
+-0.000001:0:-0.000001
+-0.00001:0:-0.00001
+-0.0001:0:-0.0001
+-0.001:0:-0.001
+-0.01:0:-0.01
+-0.1:0:-0.1
+-1:-1:0
+-10:-10:0
+-100:-100:0
+-1000:-1000:0
+-10000:-10000:0
+-100000:-100000:0
+-1000000:-1000000:0
+-10000000:-10000000:0
+-100000000:-100000000:0
+-1000000000:-1000000000:0
+-10000000000:-10000000000:0
+-100000000000:-100000000000:0
+-1000000000000:-1000000000000:0
+
+-0.0000000000012:0:-0.0000000000012
+-0.000000000012:0:-0.000000000012
+-0.00000000012:0:-0.00000000012
+-0.0000000012:0:-0.0000000012
+-0.000000012:0:-0.000000012
+-0.00000012:0:-0.00000012
+-0.0000012:0:-0.0000012
+-0.000012:0:-0.000012
+-0.00012:0:-0.00012
+-0.0012:0:-0.0012
+-0.012:0:-0.012
+-0.12:0:-0.12
+-1.2:-1:-0.2
+-12:-12:0
+-120:-120:0
+-1200:-1200:0
+-12000:-12000:0
+-120000:-120000:0
+-1200000:-1200000:0
+-12000000:-12000000:0
+-120000000:-120000000:0
+-1200000000:-1200000000:0
+-12000000000:-12000000000:0
+-120000000000:-120000000000:0
+-1200000000000:-1200000000000:0
+
+-0.00000000000123:0:-0.00000000000123
+-0.0000000000123:0:-0.0000000000123
+-0.000000000123:0:-0.000000000123
+-0.00000000123:0:-0.00000000123
+-0.0000000123:0:-0.0000000123
+-0.000000123:0:-0.000000123
+-0.00000123:0:-0.00000123
+-0.0000123:0:-0.0000123
+-0.000123:0:-0.000123
+-0.00123:0:-0.00123
+-0.0123:0:-0.0123
+-0.123:0:-0.123
+-1.23:-1:-0.23
+-12.3:-12:-0.3
+-123:-123:0
+-1230:-1230:0
+-12300:-12300:0
+-123000:-123000:0
+-1230000:-1230000:0
+-12300000:-12300000:0
+-123000000:-123000000:0
+-1230000000:-1230000000:0
+-12300000000:-12300000000:0
+-123000000000:-123000000000:0
+-1230000000000:-1230000000000:0
+
+-0.000000000001234:0:-0.000000000001234
+-0.00000000001234:0:-0.00000000001234
+-0.0000000001234:0:-0.0000000001234
+-0.000000001234:0:-0.000000001234
+-0.00000001234:0:-0.00000001234
+-0.0000001234:0:-0.0000001234
+-0.000001234:0:-0.000001234
+-0.00001234:0:-0.00001234
+-0.0001234:0:-0.0001234
+-0.001234:0:-0.001234
+-0.01234:0:-0.01234
+-0.1234:0:-0.1234
+-1.234:-1:-0.234
+-12.34:-12:-0.34
+-123.4:-123:-0.4
+-1234:-1234:0
+-12340:-12340:0
+-123400:-123400:0
+-1234000:-1234000:0
+-12340000:-12340000:0
+-123400000:-123400000:0
+-1234000000:-1234000000:0
+-12340000000:-12340000000:0
+-123400000000:-123400000000:0
+-1234000000000:-1234000000000:0
+
+-0.000003141592:0:-0.000003141592
+-0.00003141592:0:-0.00003141592
+-0.0003141592:0:-0.0003141592
+-0.003141592:0:-0.003141592
+-0.03141592:0:-0.03141592
+-0.3141592:0:-0.3141592
+-3.141592:-3:-0.141592
+-31.41592:-31:-0.41592
+-314.1592:-314:-0.1592
+-3141.592:-3141:-0.592
+-31415.92:-31415:-0.92
+-314159.2:-314159:-0.2
+-3141592:-3141592:0
diff --git a/cpan/Math-BigInt/t/dparts-mbi.t b/cpan/Math-BigInt/t/dparts-mbi.t
new file mode 100644 (file)
index 0000000..4488b2e
--- /dev/null
@@ -0,0 +1,162 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 784;
+
+use Math::BigInt;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $int_str, $frc_str) = split /:/;
+
+    note(qq|\n\$x = Math::BigInt -> new("$x_str");|,
+         qq| (\$i, \$f) = \$x -> dparts();\n\n|);
+
+    {
+        my $x = Math::BigInt -> new($x_str);
+        my ($int_got, $frc_got) = $x -> dparts();
+
+        isa_ok($int_got, "Math::BigInt");
+        isa_ok($frc_got, "Math::BigInt");
+
+        is($int_got, $int_str, "value of integer part");
+        is($frc_got, $frc_str, "value of fraction part");
+        is($x,       $x_str,   "input is unmodified");
+    }
+
+    note(qq|\n\$x = Math::BigInt -> new("$x_str");|,
+         qq| \$i = \$x -> dparts();\n\n|);
+
+    {
+        my $x = Math::BigInt -> new($x_str);
+        my $int_got = $x -> dparts();
+
+        isa_ok($int_got, "Math::BigInt");
+
+        is($int_got, $int_str, "value of integer part");
+        is($x,       $x_str,   "input is unmodified");
+    }
+
+}
+
+__DATA__
+
+NaN:NaN:0
+
+inf:inf:0
+-inf:-inf:0
+
+0:0:0
+
+# positive numbers
+
+1:1:0
+10:10:0
+100:100:0
+1000:1000:0
+10000:10000:0
+100000:100000:0
+1000000:1000000:0
+10000000:10000000:0
+100000000:100000000:0
+1000000000:1000000000:0
+10000000000:10000000000:0
+100000000000:100000000000:0
+1000000000000:1000000000000:0
+
+12:12:0
+120:120:0
+1200:1200:0
+12000:12000:0
+120000:120000:0
+1200000:1200000:0
+12000000:12000000:0
+120000000:120000000:0
+1200000000:1200000000:0
+12000000000:12000000000:0
+120000000000:120000000000:0
+1200000000000:1200000000000:0
+
+123:123:0
+1230:1230:0
+12300:12300:0
+123000:123000:0
+1230000:1230000:0
+12300000:12300000:0
+123000000:123000000:0
+1230000000:1230000000:0
+12300000000:12300000000:0
+123000000000:123000000000:0
+1230000000000:1230000000000:0
+
+1234:1234:0
+12340:12340:0
+123400:123400:0
+1234000:1234000:0
+12340000:12340000:0
+123400000:123400000:0
+1234000000:1234000000:0
+12340000000:12340000000:0
+123400000000:123400000000:0
+1234000000000:1234000000000:0
+
+3141592:3141592:0
+
+# negative numbers
+
+-1:-1:0
+-10:-10:0
+-100:-100:0
+-1000:-1000:0
+-10000:-10000:0
+-100000:-100000:0
+-1000000:-1000000:0
+-10000000:-10000000:0
+-100000000:-100000000:0
+-1000000000:-1000000000:0
+-10000000000:-10000000000:0
+-100000000000:-100000000000:0
+-1000000000000:-1000000000000:0
+
+-12:-12:0
+-120:-120:0
+-1200:-1200:0
+-12000:-12000:0
+-120000:-120000:0
+-1200000:-1200000:0
+-12000000:-12000000:0
+-120000000:-120000000:0
+-1200000000:-1200000000:0
+-12000000000:-12000000000:0
+-120000000000:-120000000000:0
+-1200000000000:-1200000000000:0
+
+-123:-123:0
+-1230:-1230:0
+-12300:-12300:0
+-123000:-123000:0
+-1230000:-1230000:0
+-12300000:-12300000:0
+-123000000:-123000000:0
+-1230000000:-1230000000:0
+-12300000000:-12300000000:0
+-123000000000:-123000000000:0
+-1230000000000:-1230000000000:0
+
+-1234:-1234:0
+-12340:-12340:0
+-123400:-123400:0
+-1234000:-1234000:0
+-12340000:-12340000:0
+-123400000:-123400000:0
+-1234000000:-1234000000:0
+-12340000000:-12340000000:0
+-123400000000:-123400000000:0
+-1234000000000:-1234000000000:0
+
+-3141592:-3141592:0
diff --git a/cpan/Math-BigInt/t/eparts-mbf.t b/cpan/Math-BigInt/t/eparts-mbf.t
new file mode 100644 (file)
index 0000000..0c84ac6
--- /dev/null
@@ -0,0 +1,294 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 1840;
+
+use Math::BigFloat;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $mant_str, $expo_str) = split /:/;
+
+    note(qq|\n\$x = Math::BigFloat -> new("$x_str");|,
+         qq| (\$m, \$e) = \$x -> eparts();\n\n|);
+
+    {
+        my $x = Math::BigFloat -> new($x_str);
+        my ($mant_got, $expo_got) = $x -> eparts();
+
+        isa_ok($mant_got, "Math::BigFloat");
+        isa_ok($expo_got, "Math::BigFloat");
+
+        is($mant_got, $mant_str, "value of mantissa");
+        is($expo_got, $expo_str, "value of exponent");
+        is($x,        $x_str,    "input is unmodified");
+    }
+
+    note(qq|\n\$x = Math::BigFloat -> new("$x_str");|,
+         qq| \$m = \$x -> eparts();\n\n|);
+
+    {
+        my $x = Math::BigFloat -> new($x_str);
+        my $mant_got = $x -> eparts();
+
+        isa_ok($mant_got, "Math::BigFloat");
+
+        is($mant_got, $mant_str, "value of mantissa");
+        is($x,        $x_str,    "input is unmodified");
+    }
+
+}
+
+__DATA__
+
+NaN:NaN:NaN
+
+inf:inf:inf
+-inf:-inf:inf
+
+0:0:0
+
+# positive numbers
+
+0.000000000001:1:-12
+0.00000000001:10:-12
+0.0000000001:100:-12
+0.000000001:1:-9
+0.00000001:10:-9
+0.0000001:100:-9
+0.000001:1:-6
+0.00001:10:-6
+0.0001:100:-6
+0.001:1:-3
+0.01:10:-3
+0.1:100:-3
+1:1:0
+10:10:0
+100:100:0
+1000:1:3
+10000:10:3
+100000:100:3
+1000000:1:6
+10000000:10:6
+100000000:100:6
+1000000000:1:9
+10000000000:10:9
+100000000000:100:9
+1000000000000:1:12
+
+0.0000000000012:1.2:-12
+0.000000000012:12:-12
+0.00000000012:120:-12
+0.0000000012:1.2:-9
+0.000000012:12:-9
+0.00000012:120:-9
+0.0000012:1.2:-6
+0.000012:12:-6
+0.00012:120:-6
+0.0012:1.2:-3
+0.012:12:-3
+0.12:120:-3
+1.2:1.2:0
+12:12:0
+120:120:0
+1200:1.2:3
+12000:12:3
+120000:120:3
+1200000:1.2:6
+12000000:12:6
+120000000:120:6
+1200000000:1.2:9
+12000000000:12:9
+120000000000:120:9
+1200000000000:1.2:12
+
+0.00000000000123:1.23:-12
+0.0000000000123:12.3:-12
+0.000000000123:123:-12
+0.00000000123:1.23:-9
+0.0000000123:12.3:-9
+0.000000123:123:-9
+0.00000123:1.23:-6
+0.0000123:12.3:-6
+0.000123:123:-6
+0.00123:1.23:-3
+0.0123:12.3:-3
+0.123:123:-3
+1.23:1.23:0
+12.3:12.3:0
+123:123:0
+1230:1.23:3
+12300:12.3:3
+123000:123:3
+1230000:1.23:6
+12300000:12.3:6
+123000000:123:6
+1230000000:1.23:9
+12300000000:12.3:9
+123000000000:123:9
+1230000000000:1.23:12
+
+0.000000000001234:1.234:-12
+0.00000000001234:12.34:-12
+0.0000000001234:123.4:-12
+0.000000001234:1.234:-9
+0.00000001234:12.34:-9
+0.0000001234:123.4:-9
+0.000001234:1.234:-6
+0.00001234:12.34:-6
+0.0001234:123.4:-6
+0.001234:1.234:-3
+0.01234:12.34:-3
+0.1234:123.4:-3
+1.234:1.234:0
+12.34:12.34:0
+123.4:123.4:0
+1234:1.234:3
+12340:12.34:3
+123400:123.4:3
+1234000:1.234:6
+12340000:12.34:6
+123400000:123.4:6
+1234000000:1.234:9
+12340000000:12.34:9
+123400000000:123.4:9
+1234000000000:1.234:12
+
+0.000003141592:3.141592:-6
+0.00003141592:31.41592:-6
+0.0003141592:314.1592:-6
+0.003141592:3.141592:-3
+0.03141592:31.41592:-3
+0.3141592:314.1592:-3
+3.141592:3.141592:0
+31.41592:31.41592:0
+314.1592:314.1592:0
+3141.592:3.141592:3
+31415.92:31.41592:3
+314159.2:314.1592:3
+3141592:3.141592:6
+
+# negativ: numbers
+
+-0.000000000001:-1:-12
+-0.00000000001:-10:-12
+-0.0000000001:-100:-12
+-0.000000001:-1:-9
+-0.00000001:-10:-9
+-0.0000001:-100:-9
+-0.000001:-1:-6
+-0.00001:-10:-6
+-0.0001:-100:-6
+-0.001:-1:-3
+-0.01:-10:-3
+-0.1:-100:-3
+-1:-1:0
+-10:-10:0
+-100:-100:0
+-1000:-1:3
+-10000:-10:3
+-100000:-100:3
+-1000000:-1:6
+-10000000:-10:6
+-100000000:-100:6
+-1000000000:-1:9
+-10000000000:-10:9
+-100000000000:-100:9
+-1000000000000:-1:12
+
+-0.0000000000012:-1.2:-12
+-0.000000000012:-12:-12
+-0.00000000012:-120:-12
+-0.0000000012:-1.2:-9
+-0.000000012:-12:-9
+-0.00000012:-120:-9
+-0.0000012:-1.2:-6
+-0.000012:-12:-6
+-0.00012:-120:-6
+-0.0012:-1.2:-3
+-0.012:-12:-3
+-0.12:-120:-3
+-1.2:-1.2:0
+-12:-12:0
+-120:-120:0
+-1200:-1.2:3
+-12000:-12:3
+-120000:-120:3
+-1200000:-1.2:6
+-12000000:-12:6
+-120000000:-120:6
+-1200000000:-1.2:9
+-12000000000:-12:9
+-120000000000:-120:9
+-1200000000000:-1.2:12
+
+-0.00000000000123:-1.23:-12
+-0.0000000000123:-12.3:-12
+-0.000000000123:-123:-12
+-0.00000000123:-1.23:-9
+-0.0000000123:-12.3:-9
+-0.000000123:-123:-9
+-0.00000123:-1.23:-6
+-0.0000123:-12.3:-6
+-0.000123:-123:-6
+-0.00123:-1.23:-3
+-0.0123:-12.3:-3
+-0.123:-123:-3
+-1.23:-1.23:0
+-12.3:-12.3:0
+-123:-123:0
+-1230:-1.23:3
+-12300:-12.3:3
+-123000:-123:3
+-1230000:-1.23:6
+-12300000:-12.3:6
+-123000000:-123:6
+-1230000000:-1.23:9
+-12300000000:-12.3:9
+-123000000000:-123:9
+-1230000000000:-1.23:12
+
+-0.000000000001234:-1.234:-12
+-0.00000000001234:-12.34:-12
+-0.0000000001234:-123.4:-12
+-0.000000001234:-1.234:-9
+-0.00000001234:-12.34:-9
+-0.0000001234:-123.4:-9
+-0.000001234:-1.234:-6
+-0.00001234:-12.34:-6
+-0.0001234:-123.4:-6
+-0.001234:-1.234:-3
+-0.01234:-12.34:-3
+-0.1234:-123.4:-3
+-1.234:-1.234:0
+-12.34:-12.34:0
+-123.4:-123.4:0
+-1234:-1.234:3
+-12340:-12.34:3
+-123400:-123.4:3
+-1234000:-1.234:6
+-12340000:-12.34:6
+-123400000:-123.4:6
+-1234000000:-1.234:9
+-12340000000:-12.34:9
+-123400000000:-123.4:9
+-1234000000000:-1.234:12
+
+-0.000003141592:-3.141592:-6
+-0.00003141592:-31.41592:-6
+-0.0003141592:-314.1592:-6
+-0.003141592:-3.141592:-3
+-0.03141592:-31.41592:-3
+-0.3141592:-314.1592:-3
+-3.141592:-3.141592:0
+-31.41592:-31.41592:0
+-314.1592:-314.1592:0
+-3141.592:-3.141592:3
+-31415.92:-31.41592:3
+-314159.2:-314.1592:3
+-3141592:-3.141592:6
diff --git a/cpan/Math-BigInt/t/eparts-mbi.t b/cpan/Math-BigInt/t/eparts-mbi.t
new file mode 100644 (file)
index 0000000..5c84e28
--- /dev/null
@@ -0,0 +1,162 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 784;
+
+use Math::BigInt;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $mant_str, $expo_str) = split /:/;
+
+    note(qq|\n\$x = Math::BigInt -> new("$x_str");|,
+         qq| (\$m, \$e) = \$x -> eparts();\n\n|);
+
+    {
+        my $x = Math::BigInt -> new($x_str);
+        my ($mant_got, $expo_got) = $x -> eparts();
+
+        isa_ok($mant_got, "Math::BigInt");
+        isa_ok($expo_got, "Math::BigInt");
+
+        is($mant_got, $mant_str, "value of mantissa");
+        is($expo_got, $expo_str, "value of exponent");
+        is($x,        $x_str,    "input is unmodified");
+    }
+
+    note(qq|\n\$x = Math::BigInt -> new("$x_str");|,
+         qq| \$m = \$x -> eparts();\n\n|);
+
+    {
+        my $x = Math::BigInt -> new($x_str);
+        my $mant_got = $x -> eparts();
+
+        isa_ok($mant_got, "Math::BigInt");
+
+        is($mant_got, $mant_str, "value of mantissa");
+        is($x,        $x_str,    "input is unmodified");
+    }
+
+}
+
+__DATA__
+
+NaN:NaN:NaN
+
+inf:inf:inf
+-inf:-inf:inf
+
+0:0:0
+
+# positive numbers
+
+1:1:0
+10:10:0
+100:100:0
+1000:1:3
+10000:10:3
+100000:100:3
+1000000:1:6
+10000000:10:6
+100000000:100:6
+1000000000:1:9
+10000000000:10:9
+100000000000:100:9
+1000000000000:1:12
+
+12:12:0
+120:120:0
+1200:NaN:3
+12000:12:3
+120000:120:3
+1200000:NaN:6
+12000000:12:6
+120000000:120:6
+1200000000:NaN:9
+12000000000:12:9
+120000000000:120:9
+1200000000000:NaN:12
+
+123:123:0
+1230:NaN:3
+12300:NaN:3
+123000:123:3
+1230000:NaN:6
+12300000:NaN:6
+123000000:123:6
+1230000000:NaN:9
+12300000000:NaN:9
+123000000000:123:9
+1230000000000:NaN:12
+
+1234:NaN:3
+12340:NaN:3
+123400:NaN:3
+1234000:NaN:6
+12340000:NaN:6
+123400000:NaN:6
+1234000000:NaN:9
+12340000000:NaN:9
+123400000000:NaN:9
+1234000000000:NaN:12
+
+3141592:NaN:6
+
+# negativ: numbers
+
+-1:-1:0
+-10:-10:0
+-100:-100:0
+-1000:-1:3
+-10000:-10:3
+-100000:-100:3
+-1000000:-1:6
+-10000000:-10:6
+-100000000:-100:6
+-1000000000:-1:9
+-10000000000:-10:9
+-100000000000:-100:9
+-1000000000000:-1:12
+
+-12:-12:0
+-120:-120:0
+-1200:NaN:3
+-12000:-12:3
+-120000:-120:3
+-1200000:NaN:6
+-12000000:-12:6
+-120000000:-120:6
+-1200000000:NaN:9
+-12000000000:-12:9
+-120000000000:-120:9
+-1200000000000:NaN:12
+
+-123:-123:0
+-1230:NaN:3
+-12300:NaN:3
+-123000:-123:3
+-1230000:NaN:6
+-12300000:NaN:6
+-123000000:-123:6
+-1230000000:NaN:9
+-12300000000:NaN:9
+-123000000000:-123:9
+-1230000000000:NaN:12
+
+-1234:NaN:3
+-12340:NaN:3
+-123400:NaN:3
+-1234000:NaN:6
+-12340000:NaN:6
+-123400000:NaN:6
+-1234000000:NaN:9
+-12340000000:NaN:9
+-123400000000:NaN:9
+-1234000000000:NaN:12
+
+-3141592:NaN:6
diff --git a/cpan/Math-BigInt/t/from_bin-mbf.t b/cpan/Math-BigInt/t/from_bin-mbf.t
new file mode 100644 (file)
index 0000000..a8c7527
--- /dev/null
@@ -0,0 +1,70 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 27;
+
+my $class;
+
+BEGIN { $class = 'Math::BigFloat'; }
+BEGIN { use_ok($class, '1.999710'); }
+
+while (<DATA>) {
+    s/#.*$//;           # remove comments
+    s/\s+$//;           # remove trailing whitespace
+    next unless length; # skip empty lines
+
+    my ($in0, $out0) = split /:/;
+    my $x;
+
+    my $test = qq|\$x = $class -> from_bin("$in0");|;
+    my $desc = $test;
+
+    eval $test;
+    die $@ if $@;       # this should never happen
+
+    subtest $desc, sub {
+        plan tests => 2,
+
+        # Check output.
+
+        is(ref($x), $class, "output arg is a $class");
+        is($x, $out0, 'output arg has the right value');
+    };
+
+}
+
+__END__
+
+0b1p+0:1
+0b.1p+1:1
+0b.01p+2:1
+0b.001p+3:1
+0b.0001p+4:1
+0b10p-1:1
+0b100p-2:1
+0b1000p-3:1
+
+-0b1p+0:-1
+
+0b0p+0:0
+0b0p+7:0
+0b0p-7:0
+0b0.p+0:0
+0b.0p+0:0
+0b0.0p+0:0
+
+0b1100101011111110:51966
+b1100101011111110:51966
+1100101011111110:51966
+
+0b1.1001p+3:12.5
+0b10010.001101p-1:9.1015625
+-0b.11110001001101010111100110111101111p+31:-2023406814.9375
+0b10.0100011010001010110011110001001101p+34:39093746765
+
+NaN:NaN
++inf:NaN
+-inf:NaN
+0b.p+0:NaN
index a15e4fd..b45917a 100644 (file)
@@ -36,6 +36,7 @@ while (<DATA>) {
 }
 
 __END__
+
 0x1p+0:1
 0x.8p+1:1
 0x.4p+2:1
diff --git a/cpan/Math-BigInt/t/from_oct-mbf.t b/cpan/Math-BigInt/t/from_oct-mbf.t
new file mode 100644 (file)
index 0000000..7e58454
--- /dev/null
@@ -0,0 +1,70 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 27;
+
+my $class;
+
+BEGIN { $class = 'Math::BigFloat'; }
+BEGIN { use_ok($class, '1.999710'); }
+
+while (<DATA>) {
+    s/#.*$//;           # remove comments
+    s/\s+$//;           # remove trailing whitespace
+    next unless length; # skip empty lines
+
+    my ($in0, $out0) = split /:/;
+    my $x;
+
+    my $test = qq|\$x = $class -> from_oct("$in0");|;
+    my $desc = $test;
+
+    eval $test;
+    die $@ if $@;       # this should never happen
+
+    subtest $desc, sub {
+        plan tests => 2,
+
+        # Check output.
+
+        is(ref($x), $class, "output arg is a $class");
+        is($x, $out0, 'output arg has the right value');
+    };
+
+}
+
+__END__
+
+01p+0:1
+0.4p+1:1
+0.2p+2:1
+0.1p+3:1
+0.04p+4:1
+02p-1:1
+04p-2:1
+010p-3:1
+
+-1p+0:-1
+
+0p+0:0
+0p+7:0
+0p-7:0
+0.p+0:0
+.0p+0:0
+0.0p+0:0
+
+145376:51966
+0145376:51966
+00145376:51966
+
+3.1p+2:12.5
+22.15p-1:9.1015625
+-0.361152746757p+32:-2023406814.9375
+44.3212636115p+30:39093746765
+
+NaN:NaN
++inf:NaN
+-inf:NaN
+.p+0:NaN
index 0e1a42c..404fbf9 100644 (file)
@@ -944,114 +944,249 @@ is($params[0], $x, q|$params[0] = $x|);               # self
 
 foreach my $class ($mbi, $mbf) {
     $x = $class->new(2)->bzero();
-    is($x->{_a}, undef, q|$x->{_a} = undef|);
-    is($x->{_p}, undef, q|$x->{_p} = undef|);
+    is($x->{_a}, undef, qq|\$x = $class->new(2)->bzero(); \$x->{_a}|);
+    is($x->{_p}, undef, qq|\$x = $class->new(2)->bzero(); \$x->{_p}|);
 
     $x = $class->new(2)->bone();
-    is($x->{_a}, undef, q|$x->{_a} = undef|);
-    is($x->{_p}, undef, q|$x->{_p} = undef|);
+    is($x->{_a}, undef, qq|\$x = $class->new(2)->bone(); \$x->{_a}|);
+    is($x->{_p}, undef, qq|\$x = $class->new(2)->bone(); \$x->{_p}|);
 
     $x = $class->new(2)->binf();
-    is($x->{_a}, undef, q|$x->{_a} = undef|);
-    is($x->{_p}, undef, q|$x->{_p} = undef|);
+    is($x->{_a}, undef, qq|\$x = $class->new(2)->binf(); \$x->{_a}|);
+    is($x->{_p}, undef, qq|\$x = $class->new(2)->binf(); \$x->{_p}|);
 
     $x = $class->new(2)->bnan();
-    is($x->{_a}, undef, q|$x->{_a} = undef|);
-    is($x->{_p}, undef, q|$x->{_p} = undef|);
+    is($x->{_a}, undef, qq|\$x = $class->new(2)->bnan(); \$x->{_a}|);
+    is($x->{_p}, undef, qq|\$x = $class->new(2)->bnan(); \$x->{_p}|);
+
+    note "Verify that bnan() does not delete/undefine accuracy and precision.";
 
     $x = $class->new(2);
     $x->{_a} = 1;
-    $x->{_p} = 2;
     $x->bnan();
+    is($x->{_a}, 1, qq|\$x = $class->new(2); \$x->{_a} = 1; \$x->bnan(); \$x->{_a}|);
+
+    $x = $class->new(2);
+    $x->{_p} = 1;
+    $x->bnan();
+    is($x->{_p}, 1, qq|\$x = $class->new(2); \$x->{_p} = 1; \$x->bnan(); \$x->{_p}|);
 
-    is($x->{_a}, undef, q|$x->{_a} = undef|);
-    is($x->{_p}, undef, q|$x->{_p} = undef|);
+    note "Verify that binf() does not delete/undefine accuracy and precision.";
 
     $x = $class->new(2);
     $x->{_a} = 1;
-    $x->{_p} = 2;
     $x->binf();
+    is($x->{_a}, 1, qq|\$x = $class->new(2); \$x->{_a} = 1; \$x->binf(); \$x->{_a}|);
 
-    is($x->{_a}, undef, q|$x->{_a} = undef|);
-    is($x->{_p}, undef, q|$x->{_p} = undef|);
+    $x = $class->new(2);
+    $x->{_p} = 1;
+    $x->binf();
+    is($x->{_p}, 1, qq|\$x = $class->new(2); \$x->{_p} = 1; \$x->binf(); \$x->{_p}|);
+
+    note "Verify that accuracy can be set as argument to new().";
 
     $x = $class->new(2, 1);
-    is($x->{_a}, 1, q|$x->{_a} = 1|);
-    is($x->{_p}, undef, q|$x->{_p} = undef|);
+    is($x->{_a}, 1,     qq|\$x = $class->new(2, 1); \$x->{_a}|);
+    is($x->{_p}, undef, qq|\$x = $class->new(2, 1); \$x->{_p}|);
+
+    note "Verify that precision can be set as argument to new().";
 
     $x = $class->new(2, undef, 1);
-    is($x->{_a}, undef, q|$x->{_a} = undef|);
-    is($x->{_p}, 1, q|$x->{_p} = 1|);
+    is($x->{_a}, undef, qq|\$x = $class->new(2, undef, 1); \$x->{_a}|);
+    is($x->{_p}, 1,     qq|\$x = $class->new(2, undef, 1); \$x->{_p}|);
+
+    note "Verify that accuracy set with new() is preserved after calling bzero().";
 
     $x = $class->new(2, 1)->bzero();
-    is($x->{_a}, 1, q|$x->{_a} = 1|);
-    is($x->{_p}, undef, q|$x->{_p} = undef|);
+    is($x->{_a}, 1,     qq|\$x = $class->new(2, 1)->bzero(); \$x->{_a}|);
+    is($x->{_p}, undef, qq|\$x = $class->new(2, 1)->bzero(); \$x->{_p}|);
+
+    note "Verify that precision set with new() is preserved after calling bzero().";
 
     $x = $class->new(2, undef, 1)->bzero();
-    is($x->{_a}, undef, q|$x->{_a} = undef|);
-    is($x->{_p}, 1, q|$x->{_p} = 1|);
+    is($x->{_a}, undef, qq|\$x = $class->new(2, undef, 1)->bzero(); \$x->{_a}|);
+    is($x->{_p}, 1,     qq|\$x = $class->new(2, undef, 1)->bzero(); \$x->{_p}|);
+
+    note "Verify that accuracy set with new() is preserved after calling bone().";
 
     $x = $class->new(2, 1)->bone();
-    is($x->{_a}, 1, q|$x->{_a} = 1|);
-    is($x->{_p}, undef, q|$x->{_p} = undef|);
+    is($x->{_a}, 1,     qq|\$x = $class->new(2, 1)->bone(); \$x->{_a}|);
+    is($x->{_p}, undef, qq|\$x = $class->new(2, 1)->bone(); \$x->{_p}|);
+
+    note "Verify that precision set with new() is preserved after calling bone().";
 
     $x = $class->new(2, undef, 1)->bone();
-    is($x->{_a}, undef, q|$x->{_a} = undef|);
-    is($x->{_p}, 1, q|$x->{_p} = 1|);
+    is($x->{_a}, undef, qq|\$x = $class->new(2, undef, 1)->bone(); \$x->{_a}|);
+    is($x->{_p}, 1,     qq|\$x = $class->new(2, undef, 1)->bone(); \$x->{_p}|);
+
+    note "Verify that accuracy can be set with instance method bone('+').";
 
     $x = $class->new(2);
     $x->bone('+', 2, undef);
-    is($x->{_a}, 2, q|$x->{_a} = 2|);
-    is($x->{_p}, undef, q|$x->{_p} = undef|);
+    is($x->{_a}, 2,     qq|\$x = $class->new(2); \$x->{_a}|);
+    is($x->{_p}, undef, qq|\$x = $class->new(2); \$x->{_p}|);
+
+    note "Verify that precision can be set with instance method bone('+').";
 
     $x = $class->new(2);
     $x->bone('+', undef, 2);
-    is($x->{_a}, undef, q|$x->{_a} = undef|);
-    is($x->{_p}, 2, q|$x->{_p} = 2|);
+    is($x->{_a}, undef, qq|\$x = $class->new(2); \$x->bone('+', undef, 2); \$x->{_a}|);
+    is($x->{_p}, 2,     qq|\$x = $class->new(2); \$x->bone('+', undef, 2); \$x->{_p}|);
+
+    note "Verify that accuracy can be set with instance method bone('-').";
 
     $x = $class->new(2);
     $x->bone('-', 2, undef);
-    is($x->{_a}, 2, q|$x->{_a} = 2|);
-    is($x->{_p}, undef, q|$x->{_p} = undef|);
+    is($x->{_a}, 2,     qq|\$x = $class->new(2); \$x->bone('-', 2, undef); \$x->{_a}|);
+    is($x->{_p}, undef, qq|\$x = $class->new(2); \$x->bone('-', 2, undef); \$x->{_p}|);
+
+    note "Verify that precision can be set with instance method bone('-').";
 
     $x = $class->new(2);
     $x->bone('-', undef, 2);
-    is($x->{_a}, undef, q|$x->{_a} = undef|);
-    is($x->{_p}, 2, q|$x->{_p} = 2|);
+    is($x->{_a}, undef, qq|\$x = $class->new(2); \$x->bone('-', undef, 2); \$x->{_a}|);
+    is($x->{_p}, 2,     qq|\$x = $class->new(2); \$x->bone('-', undef, 2); \$x->{_p}|);
+
+    note "Verify that accuracy can be set with instance method bzero().";
 
     $x = $class->new(2);
     $x->bzero(2, undef);
-    is($x->{_a}, 2, q|$x->{_a} = 2|);
-    is($x->{_p}, undef, q|$x->{_p} = undef|);
+    is($x->{_a}, 2,     qq|\$x = $class->new(2);\$x->bzero(2, undef); \$x->{_a}|);
+    is($x->{_p}, undef, qq|\$x = $class->new(2);\$x->bzero(2, undef); \$x->{_p}|);
+
+    note "Verify that precision can be set with instance method bzero().";
 
     $x = $class->new(2);
     $x->bzero(undef, 2);
-    is($x->{_a}, undef, q|$x->{_a} = undef|);
-    is($x->{_p}, 2, q|$x->{_p} = 2|);
+    is($x->{_a}, undef, qq|\$x = $class->new(2); \$x->bzero(undef, 2); \$x->{_a}|);
+    is($x->{_p}, 2,     qq|\$x = $class->new(2); \$x->bzero(undef, 2); \$x->{_p}|);
 }
 
 ###############################################################################
-# test whether bone/bzero honour globals
+# test whether bone/bzero honour class variables
 
 for my $class ($mbi, $mbf) {
 
-    $class->accuracy(2);
-    $x = $class->bone();
-    is($x->accuracy(), 2, q|$x->accuracy() = 2|);
+    note "Verify that class accuracy is copied into new objects.";
 
-    $x = $class->bzero();
-    is($x->accuracy(), 2, q|$x->accuracy() = 2|);
+    $class->accuracy(3);                # set
 
-    $class->accuracy(undef);        # reset
+    $x = $class->bzero();
+    is($x->accuracy(), 3,
+       qq|$class->accuracy(3); \$x = $class->bzero(); \$x->accuracy()|);
 
-    $class->precision(-2);
     $x = $class->bone();
-    is($x->precision(), -2, q|$x->precision() = -2|);
+    is($x->accuracy(), 3,
+       qq|$class->accuracy(3); \$x = $class->bone(); \$x->accuracy()|);
+
+    $x = $class->new(2);
+    is($x->accuracy(), 3,
+       qq|$class->accuracy(3); \$x = $class->new(2); \$x->accuracy()|);
+
+    $class->accuracy(undef);            # reset
+
+    note "Verify that class precision is copied into new objects.";
+
+    $class->precision(-4);              # set
 
     $x = $class->bzero();
-    is($x->precision(), -2, q|$x->precision() = -2|);
+    is($x->precision(), -4,
+       qq|$class->precision(-4); \$x = $class->bzero(); \$x->precision()|);
+
+    $x = $class->bone();
+    is($x->precision(), -4,
+       qq|$class->precision(-4); \$x = $class->bone(); \$x->precision()|);
+
+    $x = $class->new(2);
+    is($x->precision(), -4,
+       qq|$class->precision(-4); \$x = $class->new(2); \$x->precision()|);
+
+    $class->precision(undef);           # reset
+
+    note "Verify that setting accuracy as method argument overrides class variable";
+
+    $class->accuracy(2);                # set
+
+    $x = $class->bzero(5);
+    is($x->accuracy(), 5,
+       qq|$class->accuracy(2); \$x = $class->bzero(5); \$x->accuracy()|);
+
+    SKIP: {
+          skip 1, "this won't work until we have a better OO implementation";
+
+          $x = $class->bzero(undef);
+          is($x->accuracy(), undef,
+             qq|$class->accuracy(2); \$x = $class->bzero(undef); \$x->accuracy()|);
+      }
+
+    $x = $class->bone("+", 5);
+    is($x->accuracy(), 5,
+       qq|$class->accuracy(2); \$x = $class->bone("+", 5); \$x->accuracy()|);
+
+    SKIP: {
+          skip 1, "this won't work until we have a better OO implementation";
+
+          $x = $class->bone("+", undef);
+          is($x->accuracy(), undef,
+             qq|$class->accuracy(2); \$x = $class->bone("+", undef); \$x->accuracy()|);
+      }
+
+    $x = $class->new(2, 5);
+    is($x->accuracy(), 5,
+       qq|$class->accuracy(2); \$x = $class->new(2, 5); \$x->accuracy()|);
+
+
+    SKIP: {
+          skip 1, "this won't work until we have a better OO implementation";
+
+          $x = $class->new(2, undef);
+          is($x->accuracy(), undef,
+             qq|$class->accuracy(2); \$x = $class->new(2, undef); \$x->accuracy()|);
+      }
+
+    $class->accuracy(undef);            # reset
+
+    note "Verify that setting precision as method argument overrides class variable";
+
+    $class->precision(-2);              # set
+
+    $x = $class->bzero(undef, -6);
+    is($x->precision(), -6,
+       qq|$class->precision(-2); \$x = $class->bzero(undef, -6); \$x->precision()|);
+
+    SKIP: {
+          skip 1, "this won't work until we have a better OO implementation";
+
+          $x = $class->bzero(undef, undef);
+          is($x->precision(), undef,
+             qq|$class->precision(-2); \$x = $class->bzero(undef, undef); \$x->precision()|);
+      }
+
+    $x = $class->bone("+", undef, -6);
+    is($x->precision(), -6,
+       qq|$class->precision(-2); \$x = $class->bone("+", undef, -6); \$x->precision()|);
+
+    SKIP: {
+          skip 1, "this won't work until we have a better OO implementation";
+
+          $x = $class->bone("+", undef, undef);
+          is($x->precision(), undef,
+             qq|$class->precision(-2); \$x = $class->bone("+", undef, undef); \$x->precision()|);
+      }
+
+    $x = $class->new(2, undef, -6);
+    is($x->precision(), -6,
+       qq|$class->precision(-2); \$x = $class->new(2, undef, -6); \$x->precision()|);
+
+    SKIP: {
+          skip 1, "this won't work until we have a better OO implementation";
+
+          $x = $class->new(2, undef, undef);
+          is($x->precision(), undef,
+             qq|$class->precision(-2); \$x = $class->new(2, undef, undef); \$x->precision()|);
+      }
 
-    $class->precision(undef);       # reset
+    $class->precision(undef);           # reset
 }
 
 ###############################################################################
index afad66f..dd65da4 100644 (file)
@@ -6,7 +6,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 684             # tests in require'd file
+use Test::More tests => 712             # tests in require'd file
                         + 26;           # tests in this file
 
 use Math::BigInt lib => 'Calc';
diff --git a/cpan/Math-BigInt/t/new-mbf.t b/cpan/Math-BigInt/t/new-mbf.t
new file mode 100644 (file)
index 0000000..fc4aa55
--- /dev/null
@@ -0,0 +1,120 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 50;
+
+my $class;
+
+BEGIN { $class = 'Math::BigFloat'; }
+BEGIN { use_ok($class, '1.999710'); }
+
+while (<DATA>) {
+    s/#.*$//;           # remove comments
+    s/\s+$//;           # remove trailing whitespace
+    next unless length; # skip empty lines
+
+    my ($in0, $out0) = split /:/;
+    my $x;
+
+    my $test = qq|\$x = $class -> new("$in0");|;
+    my $desc = $test;
+
+    eval $test;
+    die $@ if $@;       # this should never happen
+
+    subtest $desc, sub {
+        plan tests => 2,
+
+        # Check output.
+
+        is(ref($x), $class, "output arg is a $class");
+        is($x, $out0, 'output arg has the right value');
+    };
+
+}
+
+__END__
+
+NaN:NaN
+inf:inf
+infinity:inf
++inf:inf
++infinity:inf
+-inf:-inf
+-infinity:-inf
+
+# This is the same data as in from_hex-mbf.t, except that some of them are
+# commented out, since new() only treats input as hexadecimal if it has a "0x"
+# or "0X" prefix, possibly with a leading "+" or "-" sign.
+
+0x1p+0:1
+0x.8p+1:1
+0x.4p+2:1
+0x.2p+3:1
+0x.1p+4:1
+0x2p-1:1
+0x4p-2:1
+0x8p-3:1
+
+-0x1p+0:-1
+
+0x0p+0:0
+0x0p+7:0
+0x0p-7:0
+0x0.p+0:0
+0x.0p+0:0
+0x0.0p+0:0
+
+0xcafe:51966
+#xcafe:51966
+#cafe:51966
+
+0x1.9p+3:12.5
+0x12.34p-1:9.1015625
+-0x.789abcdefp+32:-2023406814.9375
+0x12.3456789ap+31:39093746765
+
+#NaN:NaN
+#+inf:NaN
+#-inf:NaN
+0x.p+0:NaN
+
+# This is the same data as in from_bin-mbf.t, except that some of them are
+# commented out, since new() only treats input as binary if it has a "0b" or
+# "0B" prefix, possibly with a leading "+" or "-" sign. Duplicates from above
+# are also commented out.
+
+0b1p+0:1
+0b.1p+1:1
+0b.01p+2:1
+0b.001p+3:1
+0b.0001p+4:1
+0b10p-1:1
+0b100p-2:1
+0b1000p-3:1
+
+-0b1p+0:-1
+
+0b0p+0:0
+0b0p+7:0
+0b0p-7:0
+0b0.p+0:0
+0b.0p+0:0
+0b0.0p+0:0
+
+0b1100101011111110:51966
+#b1100101011111110:51966
+#1100101011111110:51966
+
+0b1.1001p+3:12.5
+0b10010.001101p-1:9.1015625
+-0b.11110001001101010111100110111101111p+31:-2023406814.9375
+0b10.0100011010001010110011110001001101p+34:39093746765
+
+#NaN:NaN
+#+inf:NaN
+#-inf:NaN
+0b.p+0:NaN
+
diff --git a/cpan/Math-BigInt/t/nparts-mbf.t b/cpan/Math-BigInt/t/nparts-mbf.t
new file mode 100644 (file)
index 0000000..a680628
--- /dev/null
@@ -0,0 +1,294 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 1840;
+
+use Math::BigFloat;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $mant_str, $expo_str) = split /:/;
+
+    note(qq|\n\$x = Math::BigFloat -> new("$x_str");|,
+         qq| (\$m, \$e) = \$x -> nparts();\n\n|);
+
+    {
+        my $x = Math::BigFloat -> new($x_str);
+        my ($mant_got, $expo_got) = $x -> nparts();
+
+        isa_ok($mant_got, "Math::BigFloat");
+        isa_ok($expo_got, "Math::BigFloat");
+
+        is($mant_got, $mant_str, "value of mantissa");
+        is($expo_got, $expo_str, "value of exponent");
+        is($x,        $x_str,    "input is unmodified");
+    }
+
+    note(qq|\n\$x = Math::BigFloat -> new("$x_str");|,
+         qq| \$m = \$x -> nparts();\n\n|);
+
+    {
+        my $x = Math::BigFloat -> new($x_str);
+        my $mant_got = $x -> nparts();
+
+        isa_ok($mant_got, "Math::BigFloat");
+
+        is($mant_got, $mant_str, "value of mantissa");
+        is($x,        $x_str,    "input is unmodified");
+    }
+
+}
+
+__DATA__
+
+NaN:NaN:NaN
+
+inf:inf:inf
+-inf:-inf:inf
+
+0:0:0
+
+# positive numbers
+
+0.000000000001:1:-12
+0.00000000001:1:-11
+0.0000000001:1:-10
+0.000000001:1:-9
+0.00000001:1:-8
+0.0000001:1:-7
+0.000001:1:-6
+0.00001:1:-5
+0.0001:1:-4
+0.001:1:-3
+0.01:1:-2
+0.1:1:-1
+1:1:0
+10:1:1
+100:1:2
+1000:1:3
+10000:1:4
+100000:1:5
+1000000:1:6
+10000000:1:7
+100000000:1:8
+1000000000:1:9
+10000000000:1:10
+100000000000:1:11
+1000000000000:1:12
+
+0.0000000000012:1.2:-12
+0.000000000012:1.2:-11
+0.00000000012:1.2:-10
+0.0000000012:1.2:-9
+0.000000012:1.2:-8
+0.00000012:1.2:-7
+0.0000012:1.2:-6
+0.000012:1.2:-5
+0.00012:1.2:-4
+0.0012:1.2:-3
+0.012:1.2:-2
+0.12:1.2:-1
+1.2:1.2:0
+12:1.2:1
+120:1.2:2
+1200:1.2:3
+12000:1.2:4
+120000:1.2:5
+1200000:1.2:6
+12000000:1.2:7
+120000000:1.2:8
+1200000000:1.2:9
+12000000000:1.2:10
+120000000000:1.2:11
+1200000000000:1.2:12
+
+0.00000000000123:1.23:-12
+0.0000000000123:1.23:-11
+0.000000000123:1.23:-10
+0.00000000123:1.23:-9
+0.0000000123:1.23:-8
+0.000000123:1.23:-7
+0.00000123:1.23:-6
+0.0000123:1.23:-5
+0.000123:1.23:-4
+0.00123:1.23:-3
+0.0123:1.23:-2
+0.123:1.23:-1
+1.23:1.23:0
+12.3:1.23:1
+123:1.23:2
+1230:1.23:3
+12300:1.23:4
+123000:1.23:5
+1230000:1.23:6
+12300000:1.23:7
+123000000:1.23:8
+1230000000:1.23:9
+12300000000:1.23:10
+123000000000:1.23:11
+1230000000000:1.23:12
+
+0.000000000001234:1.234:-12
+0.00000000001234:1.234:-11
+0.0000000001234:1.234:-10
+0.000000001234:1.234:-9
+0.00000001234:1.234:-8
+0.0000001234:1.234:-7
+0.000001234:1.234:-6
+0.00001234:1.234:-5
+0.0001234:1.234:-4
+0.001234:1.234:-3
+0.01234:1.234:-2
+0.1234:1.234:-1
+1.234:1.234:0
+12.34:1.234:1
+123.4:1.234:2
+1234:1.234:3
+12340:1.234:4
+123400:1.234:5
+1234000:1.234:6
+12340000:1.234:7
+123400000:1.234:8
+1234000000:1.234:9
+12340000000:1.234:10
+123400000000:1.234:11
+1234000000000:1.234:12
+
+0.000003141592:3.141592:-6
+0.00003141592:3.141592:-5
+0.0003141592:3.141592:-4
+0.003141592:3.141592:-3
+0.03141592:3.141592:-2
+0.3141592:3.141592:-1
+3.141592:3.141592:0
+31.41592:3.141592:1
+314.1592:3.141592:2
+3141.592:3.141592:3
+31415.92:3.141592:4
+314159.2:3.141592:5
+3141592:3.141592:6
+
+# negativ: numbers
+
+-0.000000000001:-1:-12
+-0.00000000001:-1:-11
+-0.0000000001:-1:-10
+-0.000000001:-1:-9
+-0.00000001:-1:-8
+-0.0000001:-1:-7
+-0.000001:-1:-6
+-0.00001:-1:-5
+-0.0001:-1:-4
+-0.001:-1:-3
+-0.01:-1:-2
+-0.1:-1:-1
+-1:-1:0
+-10:-1:1
+-100:-1:2
+-1000:-1:3
+-10000:-1:4
+-100000:-1:5
+-1000000:-1:6
+-10000000:-1:7
+-100000000:-1:8
+-1000000000:-1:9
+-10000000000:-1:10
+-100000000000:-1:11
+-1000000000000:-1:12
+
+-0.0000000000012:-1.2:-12
+-0.000000000012:-1.2:-11
+-0.00000000012:-1.2:-10
+-0.0000000012:-1.2:-9
+-0.000000012:-1.2:-8
+-0.00000012:-1.2:-7
+-0.0000012:-1.2:-6
+-0.000012:-1.2:-5
+-0.00012:-1.2:-4
+-0.0012:-1.2:-3
+-0.012:-1.2:-2
+-0.12:-1.2:-1
+-1.2:-1.2:0
+-12:-1.2:1
+-120:-1.2:2
+-1200:-1.2:3
+-12000:-1.2:4
+-120000:-1.2:5
+-1200000:-1.2:6
+-12000000:-1.2:7
+-120000000:-1.2:8
+-1200000000:-1.2:9
+-12000000000:-1.2:10
+-120000000000:-1.2:11
+-1200000000000:-1.2:12
+
+-0.00000000000123:-1.23:-12
+-0.0000000000123:-1.23:-11
+-0.000000000123:-1.23:-10
+-0.00000000123:-1.23:-9
+-0.0000000123:-1.23:-8
+-0.000000123:-1.23:-7
+-0.00000123:-1.23:-6
+-0.0000123:-1.23:-5
+-0.000123:-1.23:-4
+-0.00123:-1.23:-3
+-0.0123:-1.23:-2
+-0.123:-1.23:-1
+-1.23:-1.23:0
+-12.3:-1.23:1
+-123:-1.23:2
+-1230:-1.23:3
+-12300:-1.23:4
+-123000:-1.23:5
+-1230000:-1.23:6
+-12300000:-1.23:7
+-123000000:-1.23:8
+-1230000000:-1.23:9
+-12300000000:-1.23:10
+-123000000000:-1.23:11
+-1230000000000:-1.23:12
+
+-0.000000000001234:-1.234:-12
+-0.00000000001234:-1.234:-11
+-0.0000000001234:-1.234:-10
+-0.000000001234:-1.234:-9
+-0.00000001234:-1.234:-8
+-0.0000001234:-1.234:-7
+-0.000001234:-1.234:-6
+-0.00001234:-1.234:-5
+-0.0001234:-1.234:-4
+-0.001234:-1.234:-3
+-0.01234:-1.234:-2
+-0.1234:-1.234:-1
+-1.234:-1.234:0
+-12.34:-1.234:1
+-123.4:-1.234:2
+-1234:-1.234:3
+-12340:-1.234:4
+-123400:-1.234:5
+-1234000:-1.234:6
+-12340000:-1.234:7
+-123400000:-1.234:8
+-1234000000:-1.234:9
+-12340000000:-1.234:10
+-123400000000:-1.234:11
+-1234000000000:-1.234:12
+
+-0.000003141592:-3.141592:-6
+-0.00003141592:-3.141592:-5
+-0.0003141592:-3.141592:-4
+-0.003141592:-3.141592:-3
+-0.03141592:-3.141592:-2
+-0.3141592:-3.141592:-1
+-3.141592:-3.141592:0
+-31.41592:-3.141592:1
+-314.1592:-3.141592:2
+-3141.592:-3.141592:3
+-31415.92:-3.141592:4
+-314159.2:-3.141592:5
+-3141592:-3.141592:6
diff --git a/cpan/Math-BigInt/t/nparts-mbi.t b/cpan/Math-BigInt/t/nparts-mbi.t
new file mode 100644 (file)
index 0000000..c2f41f3
--- /dev/null
@@ -0,0 +1,162 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 784;
+
+use Math::BigInt;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $mant_str, $expo_str) = split /:/;
+
+    note(qq|\n\$x = Math::BigInt -> new("$x_str");|,
+         qq| (\$m, \$e) = \$x -> nparts();\n\n|);
+
+    {
+        my $x = Math::BigInt -> new($x_str);
+        my ($mant_got, $expo_got) = $x -> nparts();
+
+        isa_ok($mant_got, "Math::BigInt");
+        isa_ok($expo_got, "Math::BigInt");
+
+        is($mant_got, $mant_str, "value of mantissa");
+        is($expo_got, $expo_str, "value of exponent");
+        is($x,        $x_str,    "input is unmodified");
+    }
+
+    note(qq|\n\$x = Math::BigInt -> new("$x_str");|,
+         qq| \$m = \$x -> nparts();\n\n|);
+
+    {
+        my $x = Math::BigInt -> new($x_str);
+        my $mant_got = $x -> nparts();
+
+        isa_ok($mant_got, "Math::BigInt");
+
+        is($mant_got, $mant_str, "value of mantissa");
+        is($x,        $x_str,    "input is unmodified");
+    }
+
+}
+
+__DATA__
+
+NaN:NaN:NaN
+
+inf:inf:inf
+-inf:-inf:inf
+
+0:0:0
+
+# positive numbers
+
+1:1:0
+10:1:1
+100:1:2
+1000:1:3
+10000:1:4
+100000:1:5
+1000000:1:6
+10000000:1:7
+100000000:1:8
+1000000000:1:9
+10000000000:1:10
+100000000000:1:11
+1000000000000:1:12
+
+12:NaN:1
+120:NaN:2
+1200:NaN:3
+12000:NaN:4
+120000:NaN:5
+1200000:NaN:6
+12000000:NaN:7
+120000000:NaN:8
+1200000000:NaN:9
+12000000000:NaN:10
+120000000000:NaN:11
+1200000000000:NaN:12
+
+123:NaN:2
+1230:NaN:3
+12300:NaN:4
+123000:NaN:5
+1230000:NaN:6
+12300000:NaN:7
+123000000:NaN:8
+1230000000:NaN:9
+12300000000:NaN:10
+123000000000:NaN:11
+1230000000000:NaN:12
+
+1234:NaN:3
+12340:NaN:4
+123400:NaN:5
+1234000:NaN:6
+12340000:NaN:7
+123400000:NaN:8
+1234000000:NaN:9
+12340000000:NaN:10
+123400000000:NaN:11
+1234000000000:NaN:12
+
+3141592:NaN:6
+
+# negativ: numbers
+
+-1:-1:0
+-10:-1:1
+-100:-1:2
+-1000:-1:3
+-10000:-1:4
+-100000:-1:5
+-1000000:-1:6
+-10000000:-1:7
+-100000000:-1:8
+-1000000000:-1:9
+-10000000000:-1:10
+-100000000000:-1:11
+-1000000000000:-1:12
+
+-12:NaN:1
+-120:NaN:2
+-1200:NaN:3
+-12000:NaN:4
+-120000:NaN:5
+-1200000:NaN:6
+-12000000:NaN:7
+-120000000:NaN:8
+-1200000000:NaN:9
+-12000000000:NaN:10
+-120000000000:NaN:11
+-1200000000000:NaN:12
+
+-123:NaN:2
+-1230:NaN:3
+-12300:NaN:4
+-123000:NaN:5
+-1230000:NaN:6
+-12300000:NaN:7
+-123000000:NaN:8
+-1230000000:NaN:9
+-12300000000:NaN:10
+-123000000000:NaN:11
+-1230000000000:NaN:12
+
+-1234:NaN:3
+-12340:NaN:4
+-123400:NaN:5
+-1234000:NaN:6
+-12340000:NaN:7
+-123400000:NaN:8
+-1234000000:NaN:9
+-12340000000:NaN:10
+-123400000000:NaN:11
+-1234000000000:NaN:12
+
+-3141592:NaN:6
diff --git a/cpan/Math-BigInt/t/sparts-mbf.t b/cpan/Math-BigInt/t/sparts-mbf.t
new file mode 100644 (file)
index 0000000..ac8cc76
--- /dev/null
@@ -0,0 +1,294 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 1840;
+
+use Math::BigFloat;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $mant_str, $expo_str) = split /:/;
+
+    note(qq|\n\$x = Math::BigFloat -> new("$x_str");|,
+         qq| (\$m, \$e) = \$x -> sparts();\n\n|);
+
+    {
+        my $x = Math::BigFloat -> new($x_str);
+        my ($mant_got, $expo_got) = $x -> sparts();
+
+        isa_ok($mant_got, "Math::BigFloat");
+        isa_ok($expo_got, "Math::BigFloat");
+
+        is($mant_got, $mant_str, "value of mantissa");
+        is($expo_got, $expo_str, "value of exponent");
+        is($x,        $x_str,    "input is unmodified");
+    }
+
+    note(qq|\n\$x = Math::BigFloat -> new("$x_str");|,
+         qq| \$m = \$x -> sparts();\n\n|);
+
+    {
+        my $x = Math::BigFloat -> new($x_str);
+        my $mant_got = $x -> sparts();
+
+        isa_ok($mant_got, "Math::BigFloat");
+
+        is($mant_got, $mant_str, "value of mantissa");
+        is($x,        $x_str,    "input is unmodified");
+    }
+
+}
+
+__DATA__
+
+NaN:NaN:NaN
+
+inf:inf:inf
+-inf:-inf:inf
+
+0:0:0
+
+# positive numbers
+
+0.000000000001:1:-12
+0.00000000001:1:-11
+0.0000000001:1:-10
+0.000000001:1:-9
+0.00000001:1:-8
+0.0000001:1:-7
+0.000001:1:-6
+0.00001:1:-5
+0.0001:1:-4
+0.001:1:-3
+0.01:1:-2
+0.1:1:-1
+1:1:0
+10:1:1
+100:1:2
+1000:1:3
+10000:1:4
+100000:1:5
+1000000:1:6
+10000000:1:7
+100000000:1:8
+1000000000:1:9
+10000000000:1:10
+100000000000:1:11
+1000000000000:1:12
+
+0.0000000000012:12:-13
+0.000000000012:12:-12
+0.00000000012:12:-11
+0.0000000012:12:-10
+0.000000012:12:-9
+0.00000012:12:-8
+0.0000012:12:-7
+0.000012:12:-6
+0.00012:12:-5
+0.0012:12:-4
+0.012:12:-3
+0.12:12:-2
+1.2:12:-1
+12:12:0
+120:12:1
+1200:12:2
+12000:12:3
+120000:12:4
+1200000:12:5
+12000000:12:6
+120000000:12:7
+1200000000:12:8
+12000000000:12:9
+120000000000:12:10
+1200000000000:12:11
+
+0.00000000000123:123:-14
+0.0000000000123:123:-13
+0.000000000123:123:-12
+0.00000000123:123:-11
+0.0000000123:123:-10
+0.000000123:123:-9
+0.00000123:123:-8
+0.0000123:123:-7
+0.000123:123:-6
+0.00123:123:-5
+0.0123:123:-4
+0.123:123:-3
+1.23:123:-2
+12.3:123:-1
+123:123:0
+1230:123:1
+12300:123:2
+123000:123:3
+1230000:123:4
+12300000:123:5
+123000000:123:6
+1230000000:123:7
+12300000000:123:8
+123000000000:123:9
+1230000000000:123:10
+
+0.000000000001234:1234:-15
+0.00000000001234:1234:-14
+0.0000000001234:1234:-13
+0.000000001234:1234:-12
+0.00000001234:1234:-11
+0.0000001234:1234:-10
+0.000001234:1234:-9
+0.00001234:1234:-8
+0.0001234:1234:-7
+0.001234:1234:-6
+0.01234:1234:-5
+0.1234:1234:-4
+1.234:1234:-3
+12.34:1234:-2
+123.4:1234:-1
+1234:1234:0
+12340:1234:1
+123400:1234:2
+1234000:1234:3
+12340000:1234:4
+123400000:1234:5
+1234000000:1234:6
+12340000000:1234:7
+123400000000:1234:8
+1234000000000:1234:9
+
+0.000003141592:3141592:-12
+0.00003141592:3141592:-11
+0.0003141592:3141592:-10
+0.003141592:3141592:-9
+0.03141592:3141592:-8
+0.3141592:3141592:-7
+3.141592:3141592:-6
+31.41592:3141592:-5
+314.1592:3141592:-4
+3141.592:3141592:-3
+31415.92:3141592:-2
+314159.2:3141592:-1
+3141592:3141592:0
+
+# negativ: numbers
+
+-0.000000000001:-1:-12
+-0.00000000001:-1:-11
+-0.0000000001:-1:-10
+-0.000000001:-1:-9
+-0.00000001:-1:-8
+-0.0000001:-1:-7
+-0.000001:-1:-6
+-0.00001:-1:-5
+-0.0001:-1:-4
+-0.001:-1:-3
+-0.01:-1:-2
+-0.1:-1:-1
+-1:-1:0
+-10:-1:1
+-100:-1:2
+-1000:-1:3
+-10000:-1:4
+-100000:-1:5
+-1000000:-1:6
+-10000000:-1:7
+-100000000:-1:8
+-1000000000:-1:9
+-10000000000:-1:10
+-100000000000:-1:11
+-1000000000000:-1:12
+
+-0.0000000000012:-12:-13
+-0.000000000012:-12:-12
+-0.00000000012:-12:-11
+-0.0000000012:-12:-10
+-0.000000012:-12:-9
+-0.00000012:-12:-8
+-0.0000012:-12:-7
+-0.000012:-12:-6
+-0.00012:-12:-5
+-0.0012:-12:-4
+-0.012:-12:-3
+-0.12:-12:-2
+-1.2:-12:-1
+-12:-12:0
+-120:-12:1
+-1200:-12:2
+-12000:-12:3
+-120000:-12:4
+-1200000:-12:5
+-12000000:-12:6
+-120000000:-12:7
+-1200000000:-12:8
+-12000000000:-12:9
+-120000000000:-12:10
+-1200000000000:-12:11
+
+-0.00000000000123:-123:-14
+-0.0000000000123:-123:-13
+-0.000000000123:-123:-12
+-0.00000000123:-123:-11
+-0.0000000123:-123:-10
+-0.000000123:-123:-9
+-0.00000123:-123:-8
+-0.0000123:-123:-7
+-0.000123:-123:-6
+-0.00123:-123:-5
+-0.0123:-123:-4
+-0.123:-123:-3
+-1.23:-123:-2
+-12.3:-123:-1
+-123:-123:0
+-1230:-123:1
+-12300:-123:2
+-123000:-123:3
+-1230000:-123:4
+-12300000:-123:5
+-123000000:-123:6
+-1230000000:-123:7
+-12300000000:-123:8
+-123000000000:-123:9
+-1230000000000:-123:10
+
+-0.000000000001234:-1234:-15
+-0.00000000001234:-1234:-14
+-0.0000000001234:-1234:-13
+-0.000000001234:-1234:-12
+-0.00000001234:-1234:-11
+-0.0000001234:-1234:-10
+-0.000001234:-1234:-9
+-0.00001234:-1234:-8
+-0.0001234:-1234:-7
+-0.001234:-1234:-6
+-0.01234:-1234:-5
+-0.1234:-1234:-4
+-1.234:-1234:-3
+-12.34:-1234:-2
+-123.4:-1234:-1
+-1234:-1234:0
+-12340:-1234:1
+-123400:-1234:2
+-1234000:-1234:3
+-12340000:-1234:4
+-123400000:-1234:5
+-1234000000:-1234:6
+-12340000000:-1234:7
+-123400000000:-1234:8
+-1234000000000:-1234:9
+
+-0.000003141592:-3141592:-12
+-0.00003141592:-3141592:-11
+-0.0003141592:-3141592:-10
+-0.003141592:-3141592:-9
+-0.03141592:-3141592:-8
+-0.3141592:-3141592:-7
+-3.141592:-3141592:-6
+-31.41592:-3141592:-5
+-314.1592:-3141592:-4
+-3141.592:-3141592:-3
+-31415.92:-3141592:-2
+-314159.2:-3141592:-1
+-3141592:-3141592:0
diff --git a/cpan/Math-BigInt/t/sparts-mbi.t b/cpan/Math-BigInt/t/sparts-mbi.t
new file mode 100644 (file)
index 0000000..648de7e
--- /dev/null
@@ -0,0 +1,162 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 784;
+
+use Math::BigInt;
+
+while (<DATA>) {
+    s/#.*$//;                   # remove comments
+    s/\s+$//;                   # remove trailing whitespace
+    next unless length;         # skip empty lines
+
+    my ($x_str, $mant_str, $expo_str) = split /:/;
+
+    note(qq|\n\$x = Math::BigInt -> new("$x_str");|,
+         qq| (\$m, \$e) = \$x -> sparts();\n\n|);
+
+    {
+        my $x = Math::BigInt -> new($x_str);
+        my ($mant_got, $expo_got) = $x -> sparts();
+
+        isa_ok($mant_got, "Math::BigInt");
+        isa_ok($expo_got, "Math::BigInt");
+
+        is($mant_got, $mant_str, "value of mantissa");
+        is($expo_got, $expo_str, "value of exponent");
+        is($x,        $x_str,    "input is unmodified");
+    }
+
+    note(qq|\n\$x = Math::BigInt -> new("$x_str");|,
+         qq| \$m = \$x -> sparts();\n\n|);
+
+    {
+        my $x = Math::BigInt -> new($x_str);
+        my $mant_got = $x -> sparts();
+
+        isa_ok($mant_got, "Math::BigInt");
+
+        is($mant_got, $mant_str, "value of mantissa");
+        is($x,        $x_str,    "input is unmodified");
+    }
+
+}
+
+__DATA__
+
+NaN:NaN:NaN
+
+inf:inf:inf
+-inf:-inf:inf
+
+0:0:0
+
+# positive numbers
+
+1:1:0
+10:1:1
+100:1:2
+1000:1:3
+10000:1:4
+100000:1:5
+1000000:1:6
+10000000:1:7
+100000000:1:8
+1000000000:1:9
+10000000000:1:10
+100000000000:1:11
+1000000000000:1:12
+
+12:12:0
+120:12:1
+1200:12:2
+12000:12:3
+120000:12:4
+1200000:12:5
+12000000:12:6
+120000000:12:7
+1200000000:12:8
+12000000000:12:9
+120000000000:12:10
+1200000000000:12:11
+
+123:123:0
+1230:123:1
+12300:123:2
+123000:123:3
+1230000:123:4
+12300000:123:5
+123000000:123:6
+1230000000:123:7
+12300000000:123:8
+123000000000:123:9
+1230000000000:123:10
+
+1234:1234:0
+12340:1234:1
+123400:1234:2
+1234000:1234:3
+12340000:1234:4
+123400000:1234:5
+1234000000:1234:6
+12340000000:1234:7
+123400000000:1234:8
+1234000000000:1234:9
+
+3141592:3141592:0
+
+# negativ: numbers
+
+-1:-1:0
+-10:-1:1
+-100:-1:2
+-1000:-1:3
+-10000:-1:4
+-100000:-1:5
+-1000000:-1:6
+-10000000:-1:7
+-100000000:-1:8
+-1000000000:-1:9
+-10000000000:-1:10
+-100000000000:-1:11
+-1000000000000:-1:12
+
+-12:-12:0
+-120:-12:1
+-1200:-12:2
+-12000:-12:3
+-120000:-12:4
+-1200000:-12:5
+-12000000:-12:6
+-120000000:-12:7
+-1200000000:-12:8
+-12000000000:-12:9
+-120000000000:-12:10
+-1200000000000:-12:11
+
+-123:-123:0
+-1230:-123:1
+-12300:-123:2
+-123000:-123:3
+-1230000:-123:4
+-12300000:-123:5
+-123000000:-123:6
+-1230000000:-123:7
+-12300000000:-123:8
+-123000000000:-123:9
+-1230000000000:-123:10
+
+-1234:-1234:0
+-12340:-1234:1
+-123400:-1234:2
+-1234000:-1234:3
+-12340000:-1234:4
+-123400000:-1234:5
+-1234000000:-1234:6
+-12340000000:-1234:7
+-123400000000:-1234:8
+-1234000000000:-1234:9
+
+-3141592:-3141592:0
index 9f6d58e..69311d4 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 2409            # tests in require'd file
+use Test::More tests => 2402            # tests in require'd file
                          + 6;           # tests in this file
 
 use lib 't';
index a0b9e5f..e991ad9 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 3724            # tests in require'd file
+use Test::More tests => 3913            # tests in require'd file
                          + 5;           # tests in this file
 
 use lib 't';
index 464dfb5..96bf82f 100644 (file)
@@ -6,7 +6,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 684;
+use Test::More tests => 712;
 
 use lib 't';
 
index 5fdf4c2..a02a89c 100644 (file)
@@ -26,7 +26,7 @@ foreach my $class ($mbi, $mbf) {
 
     # also test that new() still works normally
     eval ("\$x = \$class->new('42'); \$x->bnan();");
-    like($@, qr/^Tried to set/, 'died');
+    like($@, qr/^Tried to create/, 'died');
     is($x, 42, '$x after new() never modified');
 
     # can reset?
@@ -38,31 +38,31 @@ foreach my $class ($mbi, $mbf) {
     is($cfg->{trap_inf}, 1, 'trap_inf enabled');
 
     eval ("\$x = \$class->new('4711'); \$x->binf();");
-    like($@, qr/^Tried to set/, 'died');
+    like($@, qr/^Tried to create/, 'died');
     is($x, 4711, '$x after new() never modified');
 
     eval ("\$x = \$class->new('inf');");
-    like($@, qr/^Tried to set/, 'died');
+    like($@, qr/^Tried to create/, 'died');
     is($x, 4711, '$x after new() never modified');
 
     eval ("\$x = \$class->new('-inf');");
-    like($@, qr/^Tried to set/, 'died');
+    like($@, qr/^Tried to create/, 'died');
     is($x, 4711, '$x after new() never modified');
 
     # +$x/0 => +inf
     eval ("\$x = \$class->new('4711'); \$x->bdiv(0);");
-    like($@, qr/^Tried to set/, 'died');
+    like($@, qr/^Tried to create/, 'died');
     is($x, 4711, '$x after new() never modified');
 
     # -$x/0 => -inf
     eval ("\$x = \$class->new('-0815'); \$x->bdiv(0);");
-    like($@, qr/^Tried to set/, 'died');
+    like($@, qr/^Tried to create/, 'died');
     is($x, '-815', '$x after new not modified');
 
     $cfg = $class->config( trap_nan => 1 );
     # 0/0 => NaN
     eval ("\$x = \$class->new('0'); \$x->bdiv(0);");
-    like($@, qr/^Tried to set/, 'died');
+    like($@, qr/^Tried to create/, 'died');
     is($x, '0', '$x after new not modified');
 }
 
index a1c9f65..2c54107 100644 (file)
@@ -5,7 +5,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 2409            # tests in require'd file
+use Test::More tests => 2402            # tests in require'd file
                          + 1;           # tests in this file
 
 use Math::BigFloat with => 'Math::BigInt::Subclass',
index 95c2927..8f7795a 100644 (file)
@@ -12,7 +12,6 @@
 
 package Math::BigRat;
 
-# anything older is untested, and unlikely to work
 use 5.006;
 use strict;
 use warnings;
@@ -21,24 +20,184 @@ use Carp ();
 
 use Math::BigFloat;
 
-our ($VERSION, @ISA, $upgrade, $downgrade,
-     $accuracy, $precision, $round_mode, $div_scale, $_trap_nan, $_trap_inf);
-
-@ISA = qw(Math::BigFloat);
-
-$VERSION = '0.260802';
+our $VERSION = '0.260804';
 $VERSION = eval $VERSION;
 
-# Inherit overload from Math::BigFloat, but disable the bitwise ops that don't
-# make much sense for rationals unless they're truncated or something first.
+our @ISA = qw(Math::BigFloat);
+
+our ($accuracy, $precision, $round_mode, $div_scale,
+     $upgrade, $downgrade, $_trap_nan, $_trap_inf);
 
 use overload
-  map {
-      my $op = $_;
-      ($op => sub {
-           Carp::croak("bitwise operation $op not supported in Math::BigRat");
-       });
-  } qw(& | ^ ~ << >> &= |= ^= <<= >>=);
+
+  # overload key: with_assign
+
+  '+'     =>      sub { $_[0] -> copy() -> badd($_[1]); },
+
+  '-'     =>      sub { my $c = $_[0] -> copy;
+                        $_[2] ? $c -> bneg() -> badd( $_[1])
+                              : $c -> bsub($_[1]); },
+
+  '*'     =>      sub { $_[0] -> copy() -> bmul($_[1]); },
+
+  '/'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bdiv($_[0])
+                              : $_[0] -> copy() -> bdiv($_[1]); },
+
+
+  '%'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bmod($_[0])
+                              : $_[0] -> copy() -> bmod($_[1]); },
+
+  '**'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bpow($_[0])
+                              : $_[0] -> copy() -> bpow($_[1]); },
+
+  '<<'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> blsft($_[0])
+                              : $_[0] -> copy() -> blsft($_[1]); },
+
+  '>>'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> brsft($_[0])
+                              : $_[0] -> copy() -> brsft($_[1]); },
+
+  # overload key: assign
+
+  '+='    =>      sub { $_[0]->badd($_[1]); },
+
+  '-='    =>      sub { $_[0]->bsub($_[1]); },
+
+  '*='    =>      sub { $_[0]->bmul($_[1]); },
+
+  '/='    =>      sub { scalar $_[0]->bdiv($_[1]); },
+
+  '%='    =>      sub { $_[0]->bmod($_[1]); },
+
+  '**='   =>      sub { $_[0]->bpow($_[1]); },
+
+
+  '<<='   =>      sub { $_[0]->blsft($_[1]); },
+
+  '>>='   =>      sub { $_[0]->brsft($_[1]); },
+
+#  'x='    =>      sub { },
+
+#  '.='    =>      sub { },
+
+  # overload key: num_comparison
+
+  '<'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> blt($_[0])
+                              : $_[0] -> blt($_[1]); },
+
+  '<='    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> ble($_[0])
+                              : $_[0] -> ble($_[1]); },
+
+  '>'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bgt($_[0])
+                              : $_[0] -> bgt($_[1]); },
+
+  '>='    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bge($_[0])
+                              : $_[0] -> bge($_[1]); },
+
+  '=='    =>      sub { $_[0] -> beq($_[1]); },
+
+  '!='    =>      sub { $_[0] -> bne($_[1]); },
+
+  # overload key: 3way_comparison
+
+  '<=>'   =>      sub { my $cmp = $_[0] -> bcmp($_[1]);
+                        defined($cmp) && $_[2] ? -$cmp : $cmp; },
+
+  'cmp'   =>      sub { $_[2] ? "$_[1]" cmp $_[0] -> bstr()
+                              : $_[0] -> bstr() cmp "$_[1]"; },
+
+  # overload key: str_comparison
+
+#  'lt'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrlt($_[0])
+#                              : $_[0] -> bstrlt($_[1]); },
+#
+#  'le'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrle($_[0])
+#                              : $_[0] -> bstrle($_[1]); },
+#
+#  'gt'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrgt($_[0])
+#                              : $_[0] -> bstrgt($_[1]); },
+#
+#  'ge'    =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrge($_[0])
+#                              : $_[0] -> bstrge($_[1]); },
+#
+#  'eq'    =>      sub { $_[0] -> bstreq($_[1]); },
+#
+#  'ne'    =>      sub { $_[0] -> bstrne($_[1]); },
+
+  # overload key: binary
+
+  '&'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> band($_[0])
+                              : $_[0] -> copy() -> band($_[1]); },
+
+  '&='    =>      sub { $_[0] -> band($_[1]); },
+
+  '|'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bior($_[0])
+                              : $_[0] -> copy() -> bior($_[1]); },
+
+  '|='    =>      sub { $_[0] -> bior($_[1]); },
+
+  '^'     =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bxor($_[0])
+                              : $_[0] -> copy() -> bxor($_[1]); },
+
+  '^='    =>      sub { $_[0] -> bxor($_[1]); },
+
+#  '&.'    =>      sub { },
+
+#  '&.='   =>      sub { },
+
+#  '|.'    =>      sub { },
+
+#  '|.='   =>      sub { },
+
+#  '^.'    =>      sub { },
+
+#  '^.='   =>      sub { },
+
+  # overload key: unary
+
+  'neg'   =>      sub { $_[0] -> copy() -> bneg(); },
+
+#  '!'     =>      sub { },
+
+  '~'     =>      sub { $_[0] -> copy() -> bnot(); },
+
+#  '~.'    =>      sub { },
+
+  # overload key: mutators
+
+  '++'    =>      sub { $_[0] -> binc() },
+
+  '--'    =>      sub { $_[0] -> bdec() },
+
+  # overload key: func
+
+  'atan2' =>      sub { $_[2] ? ref($_[0]) -> new($_[1]) -> batan2($_[0])
+                              : $_[0] -> copy() -> batan2($_[1]); },
+
+  'cos'   =>      sub { $_[0] -> copy() -> bcos(); },
+
+  'sin'   =>      sub { $_[0] -> copy() -> bsin(); },
+
+  'exp'   =>      sub { $_[0] -> copy() -> bexp($_[1]); },
+
+  'abs'   =>      sub { $_[0] -> copy() -> babs(); },
+
+  'log'   =>      sub { $_[0] -> copy() -> blog(); },
+
+  'sqrt'  =>      sub { $_[0] -> copy() -> bsqrt(); },
+
+  'int'   =>      sub { $_[0] -> copy() -> bint(); },
+
+  # overload key: conversion
+
+  'bool'  =>      sub { $_[0] -> is_zero() ? '' : 1; },
+
+  '""'    =>      sub { $_[0] -> bstr(); },
+
+  '0+'    =>      sub { $_[0] -> numify(); },
+
+  '='     =>      sub { $_[0]->copy(); },
+
+  ;
 
 BEGIN {
     *objectify = \&Math::BigInt::objectify;  # inherit this from BigInt
@@ -56,11 +215,11 @@ BEGIN {
 ##############################################################################
 # Global constants and flags. Access these only via the accessor methods!
 
-$accuracy = $precision = undef;
+$accuracy   = $precision = undef;
 $round_mode = 'even';
-$div_scale = 40;
-$upgrade = undef;
-$downgrade = undef;
+$div_scale  = 40;
+$upgrade    = undef;
+$downgrade  = undef;
 
 # These are internally, and not to be used from the outside at all!
 
@@ -69,267 +228,298 @@ $_trap_inf = 0;                         # are infs ok? set w/ config()
 
 # the package we are using for our private parts, defaults to:
 # Math::BigInt->config()->{lib}
+
 my $MBI = 'Math::BigInt::Calc';
 
 my $nan   = 'NaN';
-my $class = 'Math::BigRat';
+#my $class = 'Math::BigRat';
 
 sub isa {
-    return 0 if $_[1] =~ /^Math::Big(Int|Float)/; # we aren't
+    return 0 if $_[1] =~ /^Math::Big(Int|Float)/;       # we aren't
     UNIVERSAL::isa(@_);
 }
 
 ##############################################################################
 
-# If $x is a Math::BigRat object and $f is a Math::BigFloat object, then
-#
-#   $x -> _new_from_float($f)
-#
-# converts $x into a Math::BigRat with the value of $f.
-
-sub _new_from_float
-  {
-  # turn a single float input into a rational number (like '0.1')
-  my ($self,$f) = @_;
+sub new {
+    my $proto    = shift;
+    my $protoref = ref $proto;
+    my $class    = $protoref || $proto;
 
-  return $self->bnan() if $f->is_nan();
-  return $self->binf($f->{sign}) if $f->{sign} =~ /^[+-]inf$/;
+    # Check the way we are called.
 
-  $self->{_n} = $MBI->_copy($f->{_m}); # mantissa
-  $self->{_d} = $MBI->_one();
-  $self->{sign} = $f->{sign} || '+';
-  if ($f->{_es} eq '-')
-    {
-    # something like Math::BigRat->new('0.1');
-    # 1 / 1 => 1/10
-    $MBI->_lsft($self->{_d}, $f->{_e} ,10);
+    if ($protoref) {
+        Carp::croak("new() is a class method, not an instance method");
     }
-  else
-    {
-    # something like Math::BigRat->new('10');
-    # 1 / 1 => 10/1
-    $MBI->_lsft($self->{_n}, $f->{_e} ,10) unless
-      $MBI->_is_zero($f->{_e});
+
+    if (@_ < 1) {
+        #Carp::carp("Using new() with no argument is deprecated;",
+        #           " use bzero() or new(0) instead");
+        return $class -> bzero();
     }
-  return $self -> bnorm();
-  }
 
-# If $x is a Math::BigRat object and $i is a Math::BigInt object, then
-#
-#   $x -> _new_from_int($i)
-#
-# converts $x into a Math::BigRat with the value of $i.
+    if (@_ > 2) {
+        Carp::carp("Superfluous arguments to new() ignored.");
+    }
 
-sub _new_from_int {
-    my ($self, $i) = @_;
+    # Get numerator and denominator. If any of the arguments is undefined,
+    # return zero.
 
-    return $self -> bnan()             if $i -> is_nan();
-    return $self -> binf($i -> sign()) if $i -> is_inf();
+    my ($n, $d) = @_;
 
-    $self -> {_n}   = $MBI -> _copy($i -> {value});
-    $self -> {_d}   = $MBI -> _one();
-    $self -> {sign} = $i -> {sign};
-    return $self;
-}
+    if (@_ == 1 && !defined $n ||
+        @_ == 2 && (!defined $n || !defined $d))
+    {
+        #Carp::carp("Use of uninitialized value in new()");
+        return $class -> bzero();
+    }
 
-sub new {
-    my $self    = shift;
-    my $selfref = ref $self;
-    my $class   = $selfref || $self;
+    # Initialize a new object.
 
-    # Get numerator and denominator.
+    my $self = bless {}, $class;
 
-    my ($n, $d) = @_;
+    # One or two input arguments may be given. First handle the numerator $n.
 
-    # If called as a class method, initialize a new object.
+    if (ref($n)) {
+        $n = Math::BigFloat -> new($n, undef, undef)
+          unless ($n -> isa('Math::BigRat') ||
+                  $n -> isa('Math::BigInt') ||
+                  $n -> isa('Math::BigFloat'));
+    } else {
+        if (defined $d) {
+            # If the denominator is defined, the numerator is not a string
+            # fraction, e.g., "355/113".
+            $n = Math::BigFloat -> new($n, undef, undef);
+        } else {
+            # If the denominator is undefined, the numerator might be a string
+            # fraction, e.g., "355/113".
+            if ($n =~ m| ^ \s* (\S+) \s* / \s* (\S+) \s* $ |x) {
+                $n = Math::BigFloat -> new($1, undef, undef);
+                $d = Math::BigFloat -> new($2, undef, undef);
+            } else {
+                $n = Math::BigFloat -> new($n, undef, undef);
+            }
+        }
+    }
 
-    $self = bless {}, $class unless $selfref;
+    # At this point $n is an object and $d is either an object or undefined. An
+    # undefined $d means that $d was not specified by the caller (not that $d
+    # was specified as an undefined value).
 
-    # Input like $class->new($n), where there is no denominator, and where $n
-    # is a Math::BigInt or Math::BigFloat.
+    unless (defined $d) {
+        #return $n -> copy($n)               if $n -> isa('Math::BigRat');
+        return $class -> copy($n)           if $n -> isa('Math::BigRat');
+        return $class -> bnan()             if $n -> is_nan();
+        return $class -> binf($n -> sign()) if $n -> is_inf();
 
-    if ((!defined $d) && (ref $n) && (!$n->isa('Math::BigRat'))) {
-        if ($n->isa('Math::BigFloat')) {
-            $self->_new_from_float($n);
+        if ($n -> isa('Math::BigInt')) {
+            $self -> {_n}   = $MBI -> _new($n -> copy() -> babs() -> bstr());
+            $self -> {_d}   = $MBI -> _one();
+            $self -> {sign} = $n -> sign();
+            return $self;
         }
-        elsif ($n->isa('Math::BigInt')) {
-            # TODO: trap NaN, inf
-            $self->{_n} = $MBI->_copy($n->{value}); # "mantissa" = N
-            $self->{_d} = $MBI->_one();             # d => 1
-            $self->{sign} = $n->{sign};
-        }
-        elsif ($n->isa('Math::BigInt::Lite')) {
-            # TODO: trap NaN, inf
-            $self->{sign} = '+';
-            $self->{sign} = '-' if $$n < 0;
-            $self->{_n} = $MBI->_new(abs($$n)); # "mantissa" = N
-            $self->{_d} = $MBI->_one();         # d => 1
+
+        if ($n -> isa('Math::BigFloat')) {
+            my $m = $n -> mantissa() -> babs();
+            my $e = $n -> exponent();
+            $self -> {_n} = $MBI -> _new($m -> bstr());
+            $self -> {_d} = $MBI -> _one();
+
+            if ($e > 0) {
+                $self -> {_n} = $MBI -> _lsft($self -> {_n},
+                                              $MBI -> _new($e -> bstr()), 10);
+            } elsif ($e < 0) {
+                $self -> {_d} = $MBI -> _lsft($self -> {_d},
+                                              $MBI -> _new(-$e -> bstr()), 10);
+
+                my $gcd = $MBI -> _gcd($MBI -> _copy($self -> {_n}), $self -> {_d});
+                if (!$MBI -> _is_one($gcd)) {
+                    $self -> {_n} = $MBI -> _div($self->{_n}, $gcd);
+                    $self -> {_d} = $MBI -> _div($self->{_d}, $gcd);
+                }
+            }
+
+            $self -> {sign} = $n -> sign();
+            return $self;
         }
-        return $self->bnorm();  # normalize (120/100 => 6/5)
+
+        die "I don't know how to handle this";  # should never get here
     }
 
-    # Input like $class->new($n, $d) where $n and $d both are Math::BigInt
-    # objects or Math::BigInt::Lite objects.
-    if (ref($d) && ref($n)) {
+    # At the point we know that both $n and $d are defined. We know that $n is
+    # an object, but $d might still be a scalar. Now handle $d.
 
-        # do N first (for $self->{sign}):
-        if ($n->isa('Math::BigInt')) {
-            # TODO: trap NaN, inf
-            $self->{_n} = $MBI->_copy($n->{value}); # "mantissa" = N
-            $self->{sign} = $n->{sign};
-        }
-        elsif ($n->isa('Math::BigInt::Lite')) {
-            # TODO: trap NaN, inf
-            $self->{sign} = '+';
-            $self->{sign} = '-' if $$n < 0;
-            $self->{_n} = $MBI->_new(abs($$n)); # "mantissa" = $n
-        }
-        else {
-            Carp::croak(ref($n) . " is not a recognized object format for"
-                        . " Math::BigRat->new");
-        }
+    $d = Math::BigFloat -> new($d, undef, undef)
+      unless ref($d) && ($d -> isa('Math::BigRat') ||
+                         $d -> isa('Math::BigInt') ||
+                         $d -> isa('Math::BigFloat'));
 
-        # now D:
-        if ($d->isa('Math::BigInt')) {
-            # TODO: trap NaN, inf
-            $self->{_d} = $MBI->_copy($d->{value}); # "mantissa" = D
-            # +/+ or -/- => +, +/- or -/+ => -
-            $self->{sign} = $d->{sign} ne $self->{sign} ? '-' : '+';
-        } elsif ($d->isa('Math::BigInt::Lite')) {
-            # TODO: trap NaN, inf
-            $self->{_d} = $MBI->_new(abs($$d)); # "mantissa" = D
-            my $ds = '+';
-            $ds = '-' if $$d < 0;
-            # +/+ or -/- => +, +/- or -/+ => -
-            $self->{sign} = $ds ne $self->{sign} ? '-' : '+';
-        } else {
-            Carp::croak(ref($d) . " is not a recognized object format for"
-                        . " Math::BigRat->new");
-        }
+    # At this point both $n and $d are objects.
 
-        return $self->bnorm();  # normalize (120/100 => 6/5)
+    return $class -> bnan() if $n -> is_nan() || $d -> is_nan();
+
+    # At this point neither $n nor $d is a NaN.
+
+    if ($n -> is_zero()) {
+        return $class -> bnan() if $d -> is_zero();     # 0/0 = NaN
+        return $class -> bzero();
     }
 
-    return $n->copy() if ref $n; # already a BigRat
+    return $class -> binf($d -> sign()) if $d -> is_zero();
 
-    if (!defined $n) {
-        $self->{_n} = $MBI->_zero(); # undef => 0
-        $self->{_d} = $MBI->_one();
-        $self->{sign} = '+';
-        return $self;
+    # At this point, neither $n nor $d is a NaN or a zero.
+
+    if ($d < 0) {               # make sure denominator is positive
+        $n -> bneg();
+        $d -> bneg();
     }
 
-    # string input with / delimiter
-    if ($n =~ m|\s*/\s*|) {
-        return $class->bnan() if $n =~ m|/.*/|; # 1/2/3 isn't valid
-        return $class->bnan() if $n =~ m|/\s*$|; # 1/ isn't valid
-        ($n, $d) = split (/\//, $n);
-        # try as BigFloats first
-        if (($n =~ /[\.eE]/) || ($d =~ /[\.eE]/)) {
-            local $Math::BigFloat::accuracy = undef;
-            local $Math::BigFloat::precision = undef;
-
-            # one of them looks like a float
-            my $nf = Math::BigFloat->new($n, undef, undef);
-            $self->{sign} = '+';
-            return $self->bnan() if $nf->is_nan();
-
-            $self->{_n} = $MBI->_copy($nf->{_m}); # get mantissa
-
-            # now correct $self->{_n} due to $n
-            my $f = Math::BigFloat->new($d, undef, undef);
-            return $self->bnan() if $f->is_nan();
-            $self->{_d} = $MBI->_copy($f->{_m});
-
-            # calculate the difference between nE and dE
-            my $diff_e = $nf->exponent()->bsub($f->exponent);
-            if ($diff_e->is_negative()) {
-                # < 0: mul d with it
-                $MBI->_lsft($self->{_d}, $MBI->_new($diff_e->babs()), 10);
-            } elsif (!$diff_e->is_zero()) {
-                # > 0: mul n with it
-                $MBI->_lsft($self->{_n}, $MBI->_new($diff_e), 10);
-            }
-        } else {
-            # both d and n look like (big)ints
-
-            $self->{sign} = '+'; # no sign => '+'
-            $self->{_n} = undef;
-            $self->{_d} = undef;
-            if ($n =~ /^([+-]?)0*([0-9]+)\z/) { # first part ok?
-                $self->{sign} = $1 || '+'; # no sign => '+'
-                $self->{_n} = $MBI->_new($2 || 0);
-            }
+    if ($n -> is_inf()) {
+        return $class -> bnan() if $d -> is_inf();      # Inf/Inf = NaN
+        return $class -> binf($n -> sign());
+    }
 
-            if ($d =~ /^([+-]?)0*([0-9]+)\z/) { # second part ok?
-                $self->{sign} =~ tr/+-/-+/ if ($1 || '') eq '-'; # negate if second part neg.
-                $self->{_d} = $MBI->_new($2 || 0);
-            }
+    # At this point $n is finite.
 
-            if (!defined $self->{_n} || !defined $self->{_d}) {
-                $d = Math::BigInt->new($d, undef, undef) unless ref $d;
-                $n = Math::BigInt->new($n, undef, undef) unless ref $n;
-
-                if ($n->{sign} =~ /^[+-]$/ && $d->{sign} =~ /^[+-]$/) {
-                    # both parts are ok as integers (weird things like ' 1e0'
-                    $self->{_n} = $MBI->_copy($n->{value});
-                    $self->{_d} = $MBI->_copy($d->{value});
-                    $self->{sign} = $n->{sign};
-                    $self->{sign} =~ tr/+-/-+/ if $d->{sign} eq '-'; # -1/-2 => 1/2
-                    return $self->bnorm();
-                }
+    return $class -> bzero()            if $d -> is_inf();
+    return $class -> binf($d -> sign()) if $d -> is_zero();
 
-                $self->{sign} = '+'; # a default sign
-                return $self->bnan() if $n->is_nan() || $d->is_nan();
-
-                # handle inf cases:
-                if ($n->is_inf() || $d->is_inf()) {
-                    if ($n->is_inf()) {
-                        return $self->bnan() if $d->is_inf(); # both are inf => NaN
-                        my $s = '+'; # '+inf/+123' or '-inf/-123'
-                        $s = '-' if substr($n->{sign}, 0, 1) ne $d->{sign};
-                        # +-inf/123 => +-inf
-                        return $self->binf($s);
-                    }
-                    # 123/inf => 0
-                    return $self->bzero();
-                }
-            }
-        }
+    # At this point both $n and $d are finite and non-zero.
 
-        return $self->bnorm();
+    if ($n < 0) {
+        $n -> bneg();
+        $self -> {sign} = '-';
+    } else {
+        $self -> {sign} = '+';
     }
 
-    # simple string input
-    if (($n =~ /[\.eE]/) && $n !~ /^0x/) {
-        # looks like a float, quacks like a float, so probably is a float
-        $self->{sign} = 'NaN';
-        local $Math::BigFloat::accuracy = undef;
-        local $Math::BigFloat::precision = undef;
-        $self->_new_from_float(Math::BigFloat->new($n, undef, undef));
-    } else {
-        # for simple forms, use $MBI directly
-        if ($n =~ /^([+-]?)0*([0-9]+)\z/) {
-            $self->{sign} = $1 || '+';
-            $self->{_n} = $MBI->_new($2 || 0);
-            $self->{_d} = $MBI->_one();
+    if ($n -> isa('Math::BigRat')) {
+
+        if ($d -> isa('Math::BigRat')) {
+
+            # At this point both $n and $d is a Math::BigRat.
+
+            # p   r    p * s    (p / gcd(p, r)) * (s / gcd(s, q))
+            # - / -  = ----- =  ---------------------------------
+            # q   s    q * r    (q / gcd(s, q)) * (r / gcd(p, r))
+
+            my $p = $n -> {_n};
+            my $q = $n -> {_d};
+            my $r = $d -> {_n};
+            my $s = $d -> {_d};
+            my $gcd_pr = $MBI -> _gcd($MBI -> _copy($p), $r);
+            my $gcd_sq = $MBI -> _gcd($MBI -> _copy($s), $q);
+            $self -> {_n} = $MBI -> _mul($MBI -> _div($MBI -> _copy($p), $gcd_pr),
+                                         $MBI -> _div($MBI -> _copy($s), $gcd_sq));
+            $self -> {_d} = $MBI -> _mul($MBI -> _div($MBI -> _copy($q), $gcd_sq),
+                                         $MBI -> _div($MBI -> _copy($r), $gcd_pr));
+
+            return $self;       # no need for $self -> bnorm() here
         }
-        elsif ($n =~ /^\s*([+-]?)inf(inity)?\s*\z/i) {
-            my $sgn = $1 || '+';
-            $self->{sign} = $sgn . 'inf';   # set a default sign for bstr()
-            $self->binf($sgn);
+
+        # At this point, $n is a Math::BigRat and $d is a Math::Big(Int|Float).
+
+        my $p = $n -> {_n};
+        my $q = $n -> {_d};
+        my $m = $d -> mantissa();
+        my $e = $d -> exponent();
+
+        #                   /      p
+        #                  |  ------------  if e > 0
+        #                  |  q * m * 10^e
+        #                  |
+        # p                |    p
+        # - / (m * 10^e) = |  -----         if e == 0
+        # q                |  q * m
+        #                  |
+        #                  |  p * 10^-e
+        #                  |  --------      if e < 0
+        #                   \  q * m
+
+        $self -> {_n} = $MBI -> _copy($p);
+        $self -> {_d} = $MBI -> _mul($MBI -> _copy($q), $m);
+        if ($e > 0) {
+            $self -> {_d} = $MBI -> _lsft($self -> {_d}, $e, 10);
+        } elsif ($e < 0) {
+            $self -> {_n} = $MBI -> _lsft($self -> {_n}, -$e, 10);
         }
 
-        else {
-            my $n = Math::BigInt->new($n, undef, undef);
-            $self->{_n} = $MBI->_copy($n->{value});
-            $self->{_d} = $MBI->_one();
-            $self->{sign} = $n->{sign};
-            return $self->bnan() if $self->{sign} eq 'NaN';
+        return $self -> bnorm();
+
+    } else {
+
+        if ($d -> isa('Math::BigRat')) {
+
+            # At this point $n is a Math::Big(Int|Float) and $d is a
+            # Math::BigRat.
+
+            my $m = $n -> mantissa();
+            my $e = $n -> exponent();
+            my $p = $d -> {_n};
+            my $q = $d -> {_d};
+
+            #                   /  q * m * 10^e
+            #                  |   ------------  if e > 0
+            #                  |        p
+            #                  |
+            #              p   |   m * q
+            # (m * 10^e) / - = |   -----         if e == 0
+            #              q   |     p
+            #                  |
+            #                  |     q * m
+            #                  |   ---------     if e < 0
+            #                   \  p * 10^-e
+
+            $self -> {_n} = $MBI -> _mul($MBI -> _copy($q), $m);
+            $self -> {_d} = $MBI -> _copy($p);
+            if ($e > 0) {
+                $self -> {_n} = $MBI -> _lsft($self -> {_n}, $e, 10);
+            } elsif ($e < 0) {
+                $self -> {_d} = $MBI -> _lsft($self -> {_d}, -$e, 10);
+            }
+            return $self -> bnorm();
+
+        } else {
+
+            # At this point $n and $d are both a Math::Big(Int|Float)
+
+            my $m1 = $n -> mantissa();
+            my $e1 = $n -> exponent();
+            my $m2 = $d -> mantissa();
+            my $e2 = $d -> exponent();
+
+            #               /
+            #              |  m1 * 10^(e1 - e2)
+            #              |  -----------------  if e1 > e2
+            #              |         m2
+            #              |
+            # m1 * 10^e1   |  m1
+            # ---------- = |  --                 if e1 = e2
+            # m2 * 10^e2   |  m2
+            #              |
+            #              |         m1
+            #              |  -----------------  if e1 < e2
+            #              |  m2 * 10^(e2 - e1)
+            #               \
+
+            $self -> {_n} = $MBI -> _new($m1 -> bstr());
+            $self -> {_d} = $MBI -> _new($m2 -> bstr());
+            my $ediff = $e1 - $e2;
+            if ($ediff > 0) {
+                $self -> {_n} = $MBI -> _lsft($self -> {_n},
+                                              $MBI -> _new($ediff -> bstr()),
+                                              10);
+            } elsif ($ediff < 0) {
+                $self -> {_d} = $MBI -> _lsft($self -> {_d},
+                                              $MBI -> _new(-$ediff -> bstr()),
+                                              10);
+            }
+
+            return $self -> bnorm();
         }
     }
 
-    $self->bnorm();
+    return $self;
 }
 
 sub copy {
@@ -349,313 +539,376 @@ sub copy {
     $copy->{_a} = $self->{_a} if defined $self->{_a};
     $copy->{_p} = $self->{_p} if defined $self->{_p};
 
-    $copy;
+    #($copy, $copy->{_a}, $copy->{_p})
+    #  = $copy->_find_round_parameters(@_);
+
+    return $copy;
+}
+
+sub bnan {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    $self = bless {}, $class unless $selfref;
+
+    if ($_trap_nan) {
+        Carp::croak ("Tried to set a variable to NaN in $class->bnan()");
+    }
+
+    $self -> {sign} = $nan;
+    $self -> {_n}   = $MBI -> _zero();
+    $self -> {_d}   = $MBI -> _one();
+
+    ($self, $self->{_a}, $self->{_p})
+      = $self->_find_round_parameters(@_);
+
+    return $self;
+}
+
+sub binf {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    $self = bless {}, $class unless $selfref;
+
+    my $sign = shift();
+    $sign = defined($sign) && substr($sign, 0, 1) eq '-' ? '-inf' : '+inf';
+
+    if ($_trap_inf) {
+        Carp::croak ("Tried to set a variable to +-inf in $class->binf()");
+    }
+
+    $self -> {sign} = $sign;
+    $self -> {_n}   = $MBI -> _zero();
+    $self -> {_d}   = $MBI -> _one();
+
+    ($self, $self->{_a}, $self->{_p})
+      = $self->_find_round_parameters(@_);
+
+    return $self;
+}
+
+sub bone {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    $self = bless {}, $class unless $selfref;
+
+    my $sign = shift();
+    $sign = '+' unless defined($sign) && $sign eq '-';
+
+    $self -> {sign} = $sign;
+    $self -> {_n}   = $MBI -> _one();
+    $self -> {_d}   = $MBI -> _one();
+
+    ($self, $self->{_a}, $self->{_p})
+      = $self->_find_round_parameters(@_);
+
+    return $self;
+}
+
+sub bzero {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
+
+    $self = bless {}, $class unless $selfref;
+
+    $self -> {sign} = '+';
+    $self -> {_n}   = $MBI -> _zero();
+    $self -> {_d}   = $MBI -> _one();
+
+    ($self, $self->{_a}, $self->{_p})
+      = $self->_find_round_parameters(@_);
+
+    return $self;
 }
 
 ##############################################################################
 
-sub config
-  {
-  # return (later set?) configuration data as hash ref
-  my $class = shift || 'Math::BigRat';
+sub config {
+    # return (later set?) configuration data as hash ref
+    my $class = shift() || 'Math::BigRat';
 
-  if (@_ == 1 && ref($_[0]) ne 'HASH')
-    {
-    my $cfg = $class->SUPER::config();
-    return $cfg->{$_[0]};
+    if (@_ == 1 && ref($_[0]) ne 'HASH') {
+        my $cfg = $class->SUPER::config();
+        return $cfg->{$_[0]};
     }
 
-  my $cfg = $class->SUPER::config(@_);
+    my $cfg = $class->SUPER::config(@_);
+
+    # now we need only to override the ones that are different from our parent
+    $cfg->{class} = $class;
+    $cfg->{with}  = $MBI;
 
-  # now we need only to override the ones that are different from our parent
-  $cfg->{class} = $class;
-  $cfg->{with} = $MBI;
-  $cfg;
-  }
+    $cfg;
+}
 
 ##############################################################################
 
-sub bstr
-  {
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+sub bstr {
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-  if ($x->{sign} !~ /^[+-]$/)          # inf, NaN etc
-    {
-    my $s = $x->{sign}; $s =~ s/^\+//;         # +inf => inf
-    return $s;
+    if ($x->{sign} !~ /^[+-]$/) {               # inf, NaN etc
+        my $s = $x->{sign};
+        $s =~ s/^\+//;                          # +inf => inf
+        return $s;
     }
 
-  my $s = ''; $s = $x->{sign} if $x->{sign} ne '+';    # '+3/2' => '3/2'
+    my $s = '';
+    $s = $x->{sign} if $x->{sign} ne '+';       # '+3/2' => '3/2'
 
-  return $s . $MBI->_str($x->{_n}) if $MBI->_is_one($x->{_d});
-  $s . $MBI->_str($x->{_n}) . '/' . $MBI->_str($x->{_d});
-  }
+    return $s . $MBI->_str($x->{_n}) if $MBI->_is_one($x->{_d});
+    $s . $MBI->_str($x->{_n}) . '/' . $MBI->_str($x->{_d});
+}
 
-sub bsstr
-  {
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+sub bsstr {
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-  if ($x->{sign} !~ /^[+-]$/)          # inf, NaN etc
-    {
-    my $s = $x->{sign}; $s =~ s/^\+//;         # +inf => inf
-    return $s;
+    if ($x->{sign} !~ /^[+-]$/) {               # inf, NaN etc
+        my $s = $x->{sign}; 
+        $s =~ s/^\+//;                          # +inf => inf
+        return $s;
     }
 
-  my $s = ''; $s = $x->{sign} if $x->{sign} ne '+';    # +3 vs 3
-  $s . $MBI->_str($x->{_n}) . '/' . $MBI->_str($x->{_d});
-  }
+    my $s = '';
+    $s = $x->{sign} if $x->{sign} ne '+';       # +3 vs 3
+    $s . $MBI->_str($x->{_n}) . '/' . $MBI->_str($x->{_d});
+}
 
-sub bnorm
-  {
-  # reduce the number to the shortest form
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+sub bnorm {
+    # reduce the number to the shortest form
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-  # Both parts must be objects of whatever we are using today.
-  if (my $c = $MBI->_check($x->{_n}))
-    {
+    # Both parts must be objects of whatever we are using today.
+    if (my $c = $MBI->_check($x->{_n})) {
         Carp::croak("n did not pass the self-check ($c) in bnorm()");
     }
-  if (my $c = $MBI->_check($x->{_d}))
-    {
+    if (my $c = $MBI->_check($x->{_d})) {
         Carp::croak("d did not pass the self-check ($c) in bnorm()");
     }
 
-  # no normalize for NaN, inf etc.
-  return $x if $x->{sign} !~ /^[+-]$/;
+    # no normalize for NaN, inf etc.
+    return $x if $x->{sign} !~ /^[+-]$/;
 
-  # normalize zeros to 0/1
-  if ($MBI->_is_zero($x->{_n}))
-    {
-    $x->{sign} = '+';                                  # never leave a -0
-    $x->{_d} = $MBI->_one() unless $MBI->_is_one($x->{_d});
-    return $x;
+    # normalize zeros to 0/1
+    if ($MBI->_is_zero($x->{_n})) {
+        $x->{sign} = '+';                               # never leave a -0
+        $x->{_d} = $MBI->_one() unless $MBI->_is_one($x->{_d});
+        return $x;
     }
 
-  return $x if $MBI->_is_one($x->{_d});                        # no need to reduce
+    return $x if $MBI->_is_one($x->{_d});               # no need to reduce
 
-  # reduce other numbers
-  my $gcd = $MBI->_copy($x->{_n});
-  $gcd = $MBI->_gcd($gcd,$x->{_d});
-
-  if (!$MBI->_is_one($gcd))
-    {
-    $x->{_n} = $MBI->_div($x->{_n},$gcd);
-    $x->{_d} = $MBI->_div($x->{_d},$gcd);
+    # Compute the GCD.
+    my $gcd = $MBI->_gcd($MBI->_copy($x->{_n}), $x->{_d});
+    if (!$MBI->_is_one($gcd)) {
+        $x->{_n} = $MBI->_div($x->{_n}, $gcd);
+        $x->{_d} = $MBI->_div($x->{_d}, $gcd);
     }
-  $x;
-  }
+
+    $x;
+}
 
 ##############################################################################
 # sign manipulation
 
-sub bneg
-  {
-  # (BRAT or num_str) return BRAT
-  # negate number or make a negated number from string
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+sub bneg {
+    # (BRAT or num_str) return BRAT
+    # negate number or make a negated number from string
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-  return $x if $x->modify('bneg');
+    return $x if $x->modify('bneg');
 
-  # for +0 do not negate (to have always normalized +0). Does nothing for 'NaN'
-  $x->{sign} =~ tr/+-/-+/
-    unless ($x->{sign} eq '+' && $MBI->_is_zero($x->{_n}));
-  $x;
-  }
+    # for +0 do not negate (to have always normalized +0). Does nothing for 'NaN'
+    $x->{sign} =~ tr/+-/-+/
+      unless ($x->{sign} eq '+' && $MBI->_is_zero($x->{_n}));
+    $x;
+}
 
 ##############################################################################
 # special values
 
-sub _bnan
-  {
-  # used by parent class bnan() to initialize number to NaN
-  my $self = shift;
+sub _bnan {
+    # used by parent class bnan() to initialize number to NaN
+    my $self = shift;
 
-  if ($_trap_nan)
-    {
-    my $class = ref($self);
-    # "$self" below will stringify the object, this blows up if $self is a
-    # partial object (happens under trap_nan), so fix it beforehand
-    $self->{_d} = $MBI->_zero() unless defined $self->{_d};
-    $self->{_n} = $MBI->_zero() unless defined $self->{_n};
-    Carp::croak ("Tried to set $self to NaN in $class\::_bnan()");
+    if ($_trap_nan) {
+        my $class = ref($self);
+        # "$self" below will stringify the object, this blows up if $self is a
+        # partial object (happens under trap_nan), so fix it beforehand
+        $self->{_d} = $MBI->_zero() unless defined $self->{_d};
+        $self->{_n} = $MBI->_zero() unless defined $self->{_n};
+        Carp::croak ("Tried to set $self to NaN in $class\::_bnan()");
     }
-  $self->{_n} = $MBI->_zero();
-  $self->{_d} = $MBI->_zero();
-  }
+    $self->{_n} = $MBI->_zero();
+    $self->{_d} = $MBI->_zero();
+}
 
-sub _binf
-  {
-  # used by parent class bone() to initialize number to +inf/-inf
-  my $self = shift;
+sub _binf {
+    # used by parent class bone() to initialize number to +inf/-inf
+    my $self = shift;
 
-  if ($_trap_inf)
-    {
-    my $class = ref($self);
-    # "$self" below will stringify the object, this blows up if $self is a
-    # partial object (happens under trap_nan), so fix it beforehand
-    $self->{_d} = $MBI->_zero() unless defined $self->{_d};
-    $self->{_n} = $MBI->_zero() unless defined $self->{_n};
-    Carp::croak ("Tried to set $self to inf in $class\::_binf()");
+    if ($_trap_inf) {
+        my $class = ref($self);
+        # "$self" below will stringify the object, this blows up if $self is a
+        # partial object (happens under trap_nan), so fix it beforehand
+        $self->{_d} = $MBI->_zero() unless defined $self->{_d};
+        $self->{_n} = $MBI->_zero() unless defined $self->{_n};
+        Carp::croak ("Tried to set $self to inf in $class\::_binf()");
     }
-  $self->{_n} = $MBI->_zero();
-  $self->{_d} = $MBI->_zero();
-  }
-
-sub _bone
-  {
-  # used by parent class bone() to initialize number to +1/-1
-  my $self = shift;
-  $self->{_n} = $MBI->_one();
-  $self->{_d} = $MBI->_one();
-  }
-
-sub _bzero
-  {
-  # used by parent class bzero() to initialize number to 0
-  my $self = shift;
-  $self->{_n} = $MBI->_zero();
-  $self->{_d} = $MBI->_one();
-  }
+    $self->{_n} = $MBI->_zero();
+    $self->{_d} = $MBI->_zero();
+}
+
+sub _bone {
+    # used by parent class bone() to initialize number to +1/-1
+    my $self = shift;
+    $self->{_n} = $MBI->_one();
+    $self->{_d} = $MBI->_one();
+}
+
+sub _bzero {
+    # used by parent class bzero() to initialize number to 0
+    my $self = shift;
+    $self->{_n} = $MBI->_zero();
+    $self->{_d} = $MBI->_one();
+}
 
 ##############################################################################
 # mul/add/div etc
 
-sub badd
-  {
-  # add two rational numbers
+sub badd {
+    # add two rational numbers
 
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
     }
 
-  # +inf + +inf => +inf,  -inf + -inf => -inf
-  return $x->binf(substr($x->{sign},0,1))
-    if $x->{sign} eq $y->{sign} && $x->{sign} =~ /^[+-]inf$/;
+    # +inf + +inf => +inf, -inf + -inf => -inf
+    return $x->binf(substr($x->{sign}, 0, 1))
+      if $x->{sign} eq $y->{sign} && $x->{sign} =~ /^[+-]inf$/;
 
-  # +inf + -inf or -inf + +inf => NaN
-  return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
+    # +inf + -inf or -inf + +inf => NaN
+    return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
 
-  #  1   1    gcd(3,4) = 1    1*3 + 1*4    7
-  #  - + -                  = --------- = --
-  #  4   3                      4*3       12
+    #  1   1    gcd(3, 4) = 1    1*3 + 1*4    7
+    #  - + -                  = --------- = --
+    #  4   3                      4*3       12
 
-  # we do not compute the gcd() here, but simple do:
-  #  5   7    5*3 + 7*4   43
-  #  - + -  = --------- = --
-  #  4   3       4*3      12
+    # we do not compute the gcd() here, but simple do:
+    #  5   7    5*3 + 7*4   43
+    #  - + -  = --------- = --
+    #  4   3       4*3      12
 
-  # and bnorm() will then take care of the rest
+    # and bnorm() will then take care of the rest
 
-  # 5 * 3
-  $x->{_n} = $MBI->_mul($x->{_n}, $y->{_d});
+    # 5 * 3
+    $x->{_n} = $MBI->_mul($x->{_n}, $y->{_d});
 
-  # 7 * 4
-  my $m = $MBI->_mul($MBI->_copy($y->{_n}), $x->{_d});
+    # 7 * 4
+    my $m = $MBI->_mul($MBI->_copy($y->{_n}), $x->{_d});
 
-  # 5 * 3 + 7 * 4
-  ($x->{_n}, $x->{sign}) = _e_add($x->{_n}, $m, $x->{sign}, $y->{sign});
+    # 5 * 3 + 7 * 4
+    ($x->{_n}, $x->{sign}) = _e_add($x->{_n}, $m, $x->{sign}, $y->{sign});
 
-  # 4 * 3
-  $x->{_d} = $MBI->_mul($x->{_d}, $y->{_d});
+    # 4 * 3
+    $x->{_d} = $MBI->_mul($x->{_d}, $y->{_d});
 
-  # normalize result, and possible round
-  $x->bnorm()->round(@r);
-  }
+    # normalize result, and possible round
+    $x->bnorm()->round(@r);
+}
 
-sub bsub
-  {
-  # subtract two rational numbers
+sub bsub {
+    # subtract two rational numbers
 
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
     }
 
-  # flip sign of $x, call badd(), then flip sign of result
-  $x->{sign} =~ tr/+-/-+/
-    unless $x->{sign} eq '+' && $MBI->_is_zero($x->{_n});      # not -0
-  $x->badd($y,@r);                             # does norm and round
-  $x->{sign} =~ tr/+-/-+/
-    unless $x->{sign} eq '+' && $MBI->_is_zero($x->{_n});      # not -0
-  $x;
-  }
-
-sub bmul
-  {
-  # multiply two rational numbers
-
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
+    # flip sign of $x, call badd(), then flip sign of result
+    $x->{sign} =~ tr/+-/-+/
+      unless $x->{sign} eq '+' && $MBI->_is_zero($x->{_n}); # not -0
+    $x->badd($y, @r);           # does norm and round
+    $x->{sign} =~ tr/+-/-+/
+      unless $x->{sign} eq '+' && $MBI->_is_zero($x->{_n}); # not -0
+
+    $x;
+}
+
+sub bmul {
+    # multiply two rational numbers
+
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
     }
 
-  return $x->bnan() if ($x->{sign} eq 'NaN' || $y->{sign} eq 'NaN');
+    return $x->bnan() if ($x->{sign} eq 'NaN' || $y->{sign} eq 'NaN');
 
-  # inf handling
-  if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/))
-    {
-    return $x->bnan() if $x->is_zero() || $y->is_zero();
-    # result will always be +-inf:
-    # +inf * +/+inf => +inf, -inf * -/-inf => +inf
-    # +inf * -/-inf => -inf, -inf * +/+inf => -inf
-    return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
-    return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
-    return $x->binf('-');
+    # inf handling
+    if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/)) {
+        return $x->bnan() if $x->is_zero() || $y->is_zero();
+        # result will always be +-inf:
+        # +inf * +/+inf => +inf, -inf * -/-inf => +inf
+        # +inf * -/-inf => -inf, -inf * +/+inf => -inf
+        return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
+        return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
+        return $x->binf('-');
     }
 
-  # x== 0 # also: or y == 1 or y == -1
-  return wantarray ? ($x,$self->bzero()) : $x if $x->is_zero();
+    # x== 0 # also: or y == 1 or y == -1
+    return wantarray ? ($x, $class->bzero()) : $x if $x->is_zero();
 
-  # XXX TODO:
-  # According to Knuth, this can be optimized by doing gcd twice (for d and n)
-  # and reducing in one step. This would save us the bnorm() at the end.
+    # XXX TODO:
+    # According to Knuth, this can be optimized by doing gcd twice (for d and n)
+    # and reducing in one step. This would save us the bnorm() at the end.
 
-  #  1   2    1 * 2    2    1
-  #  - * - =  -----  = -  = -
-  #  4   3    4 * 3    12   6
+    #  1   2    1 * 2    2    1
+    #  - * - =  -----  = -  = -
+    #  4   3    4 * 3    12   6
 
-  $x->{_n} = $MBI->_mul($x->{_n}, $y->{_n});
-  $x->{_d} = $MBI->_mul($x->{_d}, $y->{_d});
+    $x->{_n} = $MBI->_mul($x->{_n}, $y->{_n});
+    $x->{_d} = $MBI->_mul($x->{_d}, $y->{_d});
 
-  # compute new sign
-  $x->{sign} = $x->{sign} eq $y->{sign} ? '+' : '-';
+    # compute new sign
+    $x->{sign} = $x->{sign} eq $y->{sign} ? '+' : '-';
 
-  $x->bnorm()->round(@r);
-  }
+    $x->bnorm()->round(@r);
+}
 
-sub bdiv
-  {
-  # (dividend: BRAT or num_str, divisor: BRAT or num_str) return
-  # (BRAT,BRAT) (quo,rem) or BRAT (only rem)
+sub bdiv {
+    # (dividend: BRAT or num_str, divisor: BRAT or num_str) return
+    # (BRAT, BRAT) (quo, rem) or BRAT (only rem)
 
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
     }
 
-  return $x if $x->modify('bdiv');
+    return $x if $x->modify('bdiv');
 
-    my $wantarray = wantarray;          # call only once
+    my $wantarray = wantarray;  # call only once
 
     # At least one argument is NaN. This is handled the same way as in
     # Math::BigInt -> bdiv(). See the comments in the code implementing that
     # method.
 
     if ($x -> is_nan() || $y -> is_nan()) {
-        return $wantarray ? ($x -> bnan(), $self -> bnan()) : $x -> bnan();
+        return $wantarray ? ($x -> bnan(), $class -> bnan()) : $x -> bnan();
     }
 
     # Divide by zero and modulo zero. This is handled the same way as in
@@ -681,1052 +934,1143 @@ sub bdiv
 
     if ($x -> is_inf()) {
         my ($quo, $rem);
-        $rem = $self -> bnan() if $wantarray;
+        $rem = $class -> bnan() if $wantarray;
         if ($y -> is_inf()) {
             $quo = $x -> bnan();
         } else {
-            my $sign = $x -> bcmp(0) == $y -> bcmp(0) ? '+' : '-';
-            $quo = $x -> binf($sign);
+            my $sign = $x -> bcmp(0) == $y -> bcmp(0) ? '+' : '-';
+            $quo = $x -> binf($sign);
+        }
+        return $wantarray ? ($quo, $rem) : $quo;
+    }
+
+    # Denominator (divisor) is +/-inf. This is handled the same way as in
+    # Math::BigFloat -> bdiv(). See the comments in the code implementing that
+    # method.
+
+    if ($y -> is_inf()) {
+        my ($quo, $rem);
+        if ($wantarray) {
+            if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
+                $rem = $x -> copy();
+                $quo = $x -> bzero();
+            } else {
+                $rem = $class -> binf($y -> {sign});
+                $quo = $x -> bone('-');
+            }
+            return ($quo, $rem);
+        } else {
+            if ($y -> is_inf()) {
+                if ($x -> is_nan() || $x -> is_inf()) {
+                    return $x -> bnan();
+                } else {
+                    return $x -> bzero();
+                }
+            }
+        }
+    }
+
+    # At this point, both the numerator and denominator are finite numbers, and
+    # the denominator (divisor) is non-zero.
+
+    # x == 0?
+    return wantarray ? ($x, $class->bzero()) : $x if $x->is_zero();
+
+    # XXX TODO: list context, upgrade
+    # According to Knuth, this can be optimized by doing gcd twice (for d and n)
+    # and reducing in one step. This would save us the bnorm() at the end.
+
+    # 1     1    1   3
+    # -  /  - == - * -
+    # 4     3    4   1
+
+    $x->{_n} = $MBI->_mul($x->{_n}, $y->{_d});
+    $x->{_d} = $MBI->_mul($x->{_d}, $y->{_n});
+
+    # compute new sign
+    $x->{sign} = $x->{sign} eq $y->{sign} ? '+' : '-';
+
+    $x -> bnorm();
+    if (wantarray) {
+        my $rem = $x -> copy();
+        $x -> bfloor();
+        $x -> round(@r);
+        $rem -> bsub($x -> copy()) -> bmul($y);
+        return $x, $rem;
+    } else {
+        $x -> round(@r);
+        return $x;
+    }
+}
+
+sub bmod {
+    # compute "remainder" (in Perl way) of $x / $y
+
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
+
+    return $x if $x->modify('bmod');
+
+    # At least one argument is NaN. This is handled the same way as in
+    # Math::BigInt -> bmod().
+
+    if ($x -> is_nan() || $y -> is_nan()) {
+        return $x -> bnan();
+    }
+
+    # Modulo zero. This is handled the same way as in Math::BigInt -> bmod().
+
+    if ($y -> is_zero()) {
+        return $x;
+    }
+
+    # Numerator (dividend) is +/-inf. This is handled the same way as in
+    # Math::BigInt -> bmod().
+
+    if ($x -> is_inf()) {
+        return $x -> bnan();
+    }
+
+    # Denominator (divisor) is +/-inf. This is handled the same way as in
+    # Math::BigInt -> bmod().
+
+    if ($y -> is_inf()) {
+        if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
+            return $x;
+        } else {
+            return $x -> binf($y -> sign());
+        }
+    }
+
+    # At this point, both the numerator and denominator are finite numbers, and
+    # the denominator (divisor) is non-zero.
+
+    return $x if $x->is_zero(); # 0 / 7 = 0, mod 0
+
+    # Compute $x - $y * floor($x/$y). This can probably be optimized by working
+    # on a lower level.
+
+    $x -> bsub($x -> copy() -> bdiv($y) -> bfloor() -> bmul($y));
+    return $x -> round(@r);
+}
+
+##############################################################################
+# bdec/binc
+
+sub bdec {
+    # decrement value (subtract 1)
+    my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+    return $x if $x->{sign} !~ /^[+-]$/; # NaN, inf, -inf
+
+    if ($x->{sign} eq '-') {
+        $x->{_n} = $MBI->_add($x->{_n}, $x->{_d}); # -5/2 => -7/2
+    } else {
+        if ($MBI->_acmp($x->{_n}, $x->{_d}) < 0) # n < d?
+        {
+            # 1/3 -- => -2/3
+            $x->{_n} = $MBI->_sub($MBI->_copy($x->{_d}), $x->{_n});
+            $x->{sign} = '-';
+        } else {
+            $x->{_n} = $MBI->_sub($x->{_n}, $x->{_d}); # 5/2 => 3/2
+        }
+    }
+    $x->bnorm()->round(@r);
+}
+
+sub binc {
+    # increment value (add 1)
+    my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+    return $x if $x->{sign} !~ /^[+-]$/; # NaN, inf, -inf
+
+    if ($x->{sign} eq '-') {
+        if ($MBI->_acmp($x->{_n}, $x->{_d}) < 0) {
+            # -1/3 ++ => 2/3 (overflow at 0)
+            $x->{_n} = $MBI->_sub($MBI->_copy($x->{_d}), $x->{_n});
+            $x->{sign} = '+';
+        } else {
+            $x->{_n} = $MBI->_sub($x->{_n}, $x->{_d}); # -5/2 => -3/2
+        }
+    } else {
+        $x->{_n} = $MBI->_add($x->{_n}, $x->{_d}); # 5/2 => 7/2
+    }
+    $x->bnorm()->round(@r);
+}
+
+##############################################################################
+# is_foo methods (the rest is inherited)
+
+sub is_int {
+    # return true if arg (BRAT or num_str) is an integer
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    return 1 if ($x->{sign} =~ /^[+-]$/) && # NaN and +-inf aren't
+      $MBI->_is_one($x->{_d});              # x/y && y != 1 => no integer
+    0;
+}
+
+sub is_zero {
+    # return true if arg (BRAT or num_str) is zero
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    return 1 if $x->{sign} eq '+' && $MBI->_is_zero($x->{_n});
+    0;
+}
+
+sub is_one {
+    # return true if arg (BRAT or num_str) is +1 or -1 if signis given
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    my $sign = $_[2] || ''; $sign = '+' if $sign ne '-';
+    return 1
+      if ($x->{sign} eq $sign && $MBI->_is_one($x->{_n}) && $MBI->_is_one($x->{_d}));
+    0;
+}
+
+sub is_odd {
+    # return true if arg (BFLOAT or num_str) is odd or false if even
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    return 1 if ($x->{sign} =~ /^[+-]$/) &&               # NaN & +-inf aren't
+      ($MBI->_is_one($x->{_d}) && $MBI->_is_odd($x->{_n})); # x/2 is not, but 3/1
+    0;
+}
+
+sub is_even {
+    # return true if arg (BINT or num_str) is even or false if odd
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    return 0 if $x->{sign} !~ /^[+-]$/; # NaN & +-inf aren't
+    return 1 if ($MBI->_is_one($x->{_d}) # x/3 is never
+                 && $MBI->_is_even($x->{_n})); # but 4/1 is
+    0;
+}
+
+##############################################################################
+# parts() and friends
+
+sub numerator {
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+
+    # NaN, inf, -inf
+    return Math::BigInt->new($x->{sign}) if ($x->{sign} !~ /^[+-]$/);
+
+    my $n = Math::BigInt->new($MBI->_str($x->{_n}));
+    $n->{sign} = $x->{sign};
+    $n;
+}
+
+sub denominator {
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+
+    # NaN
+    return Math::BigInt->new($x->{sign}) if $x->{sign} eq 'NaN';
+    # inf, -inf
+    return Math::BigInt->bone() if $x->{sign} !~ /^[+-]$/;
+
+    Math::BigInt->new($MBI->_str($x->{_d}));
+}
+
+sub parts {
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+
+    my $c = 'Math::BigInt';
+
+    return ($c->bnan(), $c->bnan()) if $x->{sign} eq 'NaN';
+    return ($c->binf(), $c->binf()) if $x->{sign} eq '+inf';
+    return ($c->binf('-'), $c->binf()) if $x->{sign} eq '-inf';
+
+    my $n = $c->new($MBI->_str($x->{_n}));
+    $n->{sign} = $x->{sign};
+    my $d = $c->new($MBI->_str($x->{_d}));
+    ($n, $d);
+}
+
+sub length {
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+    return $nan unless $x->is_int();
+    $MBI->_len($x->{_n});       # length(-123/1) => length(123)
+}
+
+sub digit {
+    my ($class, $x, $n) = ref($_[0]) ? (undef, $_[0], $_[1]) : objectify(1, @_);
+
+    return $nan unless $x->is_int();
+    $MBI->_digit($x->{_n}, $n || 0); # digit(-123/1, 2) => digit(123, 2)
+}
+
+##############################################################################
+# special calc routines
+
+sub bceil {
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+
+    return $x if ($x->{sign} !~ /^[+-]$/ ||     # not for NaN, inf
+                  $MBI->_is_one($x->{_d}));     # 22/1 => 22, 0/1 => 0
+
+    $x->{_n} = $MBI->_div($x->{_n}, $x->{_d});  # 22/7 => 3/1 w/ truncate
+    $x->{_d} = $MBI->_one();                    # d => 1
+    $x->{_n} = $MBI->_inc($x->{_n}) if $x->{sign} eq '+';   # +22/7 => 4/1
+    $x->{sign} = '+' if $x->{sign} eq '-' && $MBI->_is_zero($x->{_n}); # -0 => 0
+    $x;
+}
+
+sub bfloor {
+    my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+
+    return $x if ($x->{sign} !~ /^[+-]$/ ||     # not for NaN, inf
+                  $MBI->_is_one($x->{_d}));     # 22/1 => 22, 0/1 => 0
+
+    $x->{_n} = $MBI->_div($x->{_n}, $x->{_d});  # 22/7 => 3/1 w/ truncate
+    $x->{_d} = $MBI->_one();                    # d => 1
+    $x->{_n} = $MBI->_inc($x->{_n}) if $x->{sign} eq '-';   # -22/7 => -4/1
+    $x;
+}
+
+sub bint {
+    my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+
+    return $x if ($x->{sign} !~ /^[+-]$/ ||     # +/-inf or NaN
+                  $MBI -> _is_one($x->{_d}));   # already an integer
+
+    $x->{_n} = $MBI->_div($x->{_n}, $x->{_d});  # 22/7 => 3/1 w/ truncate
+    $x->{_d} = $MBI->_one();                    # d => 1
+    $x->{sign} = '+' if $x->{sign} eq '-' && $MBI -> _is_zero($x->{_n});
+    return $x;
+}
+
+sub bfac {
+    my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+    # if $x is not an integer
+    if (($x->{sign} ne '+') || (!$MBI->_is_one($x->{_d}))) {
+        return $x->bnan();
+    }
+
+    $x->{_n} = $MBI->_fac($x->{_n});
+    # since _d is 1, we don't need to reduce/norm the result
+    $x->round(@r);
+}
+
+sub bpow {
+    # power ($x ** $y)
+
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
+
+    return $x if $x->{sign} =~ /^[+-]inf$/; # -inf/+inf ** x
+    return $x->bnan() if $x->{sign} eq $nan || $y->{sign} eq $nan;
+    return $x->bone(@r) if $y->is_zero();
+    return $x->round(@r) if $x->is_one() || $y->is_one();
+
+    if ($x->{sign} eq '-' && $MBI->_is_one($x->{_n}) && $MBI->_is_one($x->{_d})) {
+        # if $x == -1 and odd/even y => +1/-1
+        return $y->is_odd() ? $x->round(@r) : $x->babs()->round(@r);
+        # my Casio FX-5500L has a bug here: -1 ** 2 is -1, but -1 * -1 is 1;
+    }
+    # 1 ** -y => 1 / (1 ** |y|)
+    # so do test for negative $y after above's clause
+
+    return $x->round(@r) if $x->is_zero(); # 0**y => 0 (if not y <= 0)
+
+    # shortcut if y == 1/N (is then sqrt() respective broot())
+    if ($MBI->_is_one($y->{_n})) {
+        return $x->bsqrt(@r) if $MBI->_is_two($y->{_d}); # 1/2 => sqrt
+        return $x->broot($MBI->_str($y->{_d}), @r);      # 1/N => root(N)
+    }
+
+    # shortcut y/1 (and/or x/1)
+    if ($MBI->_is_one($y->{_d})) {
+        # shortcut for x/1 and y/1
+        if ($MBI->_is_one($x->{_d})) {
+            $x->{_n} = $MBI->_pow($x->{_n}, $y->{_n}); # x/1 ** y/1 => (x ** y)/1
+            if ($y->{sign} eq '-') {
+                # 0.2 ** -3 => 1/(0.2 ** 3)
+                ($x->{_n}, $x->{_d}) = ($x->{_d}, $x->{_n}); # swap
+            }
+            # correct sign; + ** + => +
+            if ($x->{sign} eq '-') {
+                # - * - => +, - * - * - => -
+                $x->{sign} = '+' if $x->{sign} eq '-' && $MBI->_is_even($y->{_n});
+            }
+            return $x->round(@r);
+        }
+
+        # x/z ** y/1
+        $x->{_n} = $MBI->_pow($x->{_n}, $y->{_n}); # 5/2 ** y/1 => 5 ** y / 2 ** y
+        $x->{_d} = $MBI->_pow($x->{_d}, $y->{_n});
+        if ($y->{sign} eq '-') {
+            # 0.2 ** -3 => 1/(0.2 ** 3)
+            ($x->{_n}, $x->{_d}) = ($x->{_d}, $x->{_n}); # swap
+        }
+        # correct sign; + ** + => +
+        $x->{sign} = '+' if $x->{sign} eq '-' && $MBI->_is_even($y->{_n});
+        return $x->round(@r);
+    }
+
+    #  print STDERR "# $x $y\n";
+
+    # otherwise:
+
+    #      n/d     n  ______________
+    # a/b       =  -\/  (a/b) ** d
+
+    # (a/b) ** n == (a ** n) / (b ** n)
+    $MBI->_pow($x->{_n}, $y->{_n});
+    $MBI->_pow($x->{_d}, $y->{_n});
+
+    return $x->broot($MBI->_str($y->{_d}), @r); # n/d => root(n)
+}
+
+sub blog {
+    # Return the logarithm of the operand. If a second operand is defined, that
+    # value is used as the base, otherwise the base is assumed to be Euler's
+    # constant.
+
+    # Don't objectify the base, since an undefined base, as in $x->blog() or
+    # $x->blog(undef) signals that the base is Euler's number.
+
+    # set up parameters
+    my ($class, $x, $base, @r) = (ref($_[0]), @_);
+
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $base, @r) = objectify(1, @_);
+    }
+
+    return $x if $x->modify('blog');
+
+    # Handle all exception cases and all trivial cases. I have used Wolfram Alpha
+    # (http://www.wolframalpha.com) as the reference for these cases.
+
+    return $x -> bnan() if $x -> is_nan();
+
+    if (defined $base) {
+        $base = $class -> new($base) unless ref $base;
+        if ($base -> is_nan() || $base -> is_one()) {
+            return $x -> bnan();
+        } elsif ($base -> is_inf() || $base -> is_zero()) {
+            return $x -> bnan() if $x -> is_inf() || $x -> is_zero();
+            return $x -> bzero();
+        } elsif ($base -> is_negative()) {        # -inf < base < 0
+            return $x -> bzero() if $x -> is_one(); #     x = 1
+            return $x -> bone()  if $x == $base;    #     x = base
+            return $x -> bnan();                    #     otherwise
+        }
+        return $x -> bone() if $x == $base; # 0 < base && 0 < x < inf
+    }
+
+    # We now know that the base is either undefined or positive and finite.
+
+    if ($x -> is_inf()) {       # x = +/-inf
+        my $sign = defined $base && $base < 1 ? '-' : '+';
+        return $x -> binf($sign);
+    } elsif ($x -> is_neg()) {  # -inf < x < 0
+        return $x -> bnan();
+    } elsif ($x -> is_one()) {  # x = 1
+        return $x -> bzero();
+    } elsif ($x -> is_zero()) { # x = 0
+        my $sign = defined $base && $base < 1 ? '+' : '-';
+        return $x -> binf($sign);
+    }
+
+    # At this point we are done handling all exception cases and trivial cases.
+
+    $base = Math::BigFloat -> new($base) if defined $base;
+
+    my $xn = Math::BigFloat -> new($MBI -> _str($x->{_n}));
+    my $xd = Math::BigFloat -> new($MBI -> _str($x->{_d}));
+
+    my $xtmp = Math::BigRat -> new($xn -> bdiv($xd) -> blog($base, @r) -> bsstr());
+
+    $x -> {sign} = $xtmp -> {sign};
+    $x -> {_n}   = $xtmp -> {_n};
+    $x -> {_d}   = $xtmp -> {_d};
+
+    return $x;
+}
+
+sub bexp {
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
+
+    return $x->binf(@r)  if $x->{sign} eq '+inf';
+    return $x->bzero(@r) if $x->{sign} eq '-inf';
+
+    # we need to limit the accuracy to protect against overflow
+    my $fallback = 0;
+    my ($scale, @params);
+    ($x, @params) = $x->_find_round_parameters(@r);
+
+    # also takes care of the "error in _find_round_parameters?" case
+    return $x if $x->{sign} eq 'NaN';
+
+    # no rounding at all, so must use fallback
+    if (scalar @params == 0) {
+        # simulate old behaviour
+        $params[0] = $class->div_scale(); # and round to it as accuracy
+        $params[1] = undef;              # P = undef
+        $scale = $params[0]+4;           # at least four more for proper round
+        $params[2] = $r[2];              # round mode by caller or undef
+        $fallback = 1;                   # to clear a/p afterwards
+    } else {
+        # the 4 below is empirical, and there might be cases where it's not enough...
+        $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
+    }
+
+    return $x->bone(@params) if $x->is_zero();
+
+    # See the comments in Math::BigFloat on how this algorithm works.
+    # Basically we calculate A and B (where B is faculty(N)) so that A/B = e
+
+    my $x_org = $x->copy();
+    if ($scale <= 75) {
+        # set $x directly from a cached string form
+        $x->{_n} =
+          $MBI->_new("90933395208605785401971970164779391644753259799242");
+        $x->{_d} =
+          $MBI->_new("33452526613163807108170062053440751665152000000000");
+        $x->{sign} = '+';
+    } else {
+        # compute A and B so that e = A / B.
+
+        # After some terms we end up with this, so we use it as a starting point:
+        my $A = $MBI->_new("90933395208605785401971970164779391644753259799242");
+        my $F = $MBI->_new(42); my $step = 42;
+
+        # Compute how many steps we need to take to get $A and $B sufficiently big
+        my $steps = Math::BigFloat::_len_to_steps($scale - 4);
+        #    print STDERR "# Doing $steps steps for ", $scale-4, " digits\n";
+        while ($step++ <= $steps) {
+            # calculate $a * $f + 1
+            $A = $MBI->_mul($A, $F);
+            $A = $MBI->_inc($A);
+            # increment f
+            $F = $MBI->_inc($F);
+        }
+        # compute $B as factorial of $steps (this is faster than doing it manually)
+        my $B = $MBI->_fac($MBI->_new($steps));
+
+        #  print "A ", $MBI->_str($A), "\nB ", $MBI->_str($B), "\n";
+
+        $x->{_n} = $A;
+        $x->{_d} = $B;
+        $x->{sign} = '+';
+    }
+
+    # $x contains now an estimate of e, with some surplus digits, so we can round
+    if (!$x_org->is_one()) {
+        # raise $x to the wanted power and round it in one step:
+        $x->bpow($x_org, @params);
+    } else {
+        # else just round the already computed result
+        delete $x->{_a}; delete $x->{_p};
+        # shortcut to not run through _find_round_parameters again
+        if (defined $params[0]) {
+            $x->bround($params[0], $params[2]); # then round accordingly
+        } else {
+            $x->bfround($params[1], $params[2]); # then round accordingly
         }
-        return $wantarray ? ($quo, $rem) : $quo;
     }
-
-  # Denominator (divisor) is +/-inf. This is handled the same way as in
-  # Math::BigFloat -> bdiv(). See the comments in the code implementing that
-  # method.
-
-  if ($y -> is_inf()) {
-      my ($quo, $rem);
-      if ($wantarray) {
-          if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
-              $rem = $x -> copy();
-              $quo = $x -> bzero();
-          } else {
-              $rem = $self -> binf($y -> {sign});
-              $quo = $x -> bone('-');
-          }
-          return ($quo, $rem);
-      } else {
-          if ($y -> is_inf()) {
-              if ($x -> is_nan() || $x -> is_inf()) {
-                  return $x -> bnan();
-              } else {
-                  return $x -> bzero();
-              }
-          }
-      }
-  }
-
-  # At this point, both the numerator and denominator are finite numbers, and
-  # the denominator (divisor) is non-zero.
-
-  # x == 0?
-  return wantarray ? ($x,$self->bzero()) : $x if $x->is_zero();
-
-  # XXX TODO: list context, upgrade
-  # According to Knuth, this can be optimized by doing gcd twice (for d and n)
-  # and reducing in one step. This would save us the bnorm() at the end.
-
-  # 1     1    1   3
-  # -  /  - == - * -
-  # 4     3    4   1
-
-  $x->{_n} = $MBI->_mul($x->{_n}, $y->{_d});
-  $x->{_d} = $MBI->_mul($x->{_d}, $y->{_n});
-
-  # compute new sign
-  $x->{sign} = $x->{sign} eq $y->{sign} ? '+' : '-';
-
-  $x -> bnorm();
-  if (wantarray) {
-      my $rem = $x -> copy();
-      $x -> bfloor();
-      $x -> round(@r);
-      $rem -> bsub($x -> copy()) -> bmul($y);
-      return $x, $rem;
-  } else {
-      $x -> round(@r);
-      return $x;
-  }
-  }
-
-sub bmod
-  {
-  # compute "remainder" (in Perl way) of $x / $y
-
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
+    if ($fallback) {
+        # clear a/p after round, since user did not request it
+        delete $x->{_a}; delete $x->{_p};
     }
 
-  return $x if $x->modify('bmod');
+    $x;
+}
 
-    # At least one argument is NaN. This is handled the same way as in
-    # Math::BigInt -> bmod().
+sub bnok {
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
 
-    if ($x -> is_nan() || $y -> is_nan()) {
-        return $x -> bnan();
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
     }
 
-    # Modulo zero. This is handled the same way as in Math::BigInt -> bmod().
+    my $xint = Math::BigInt -> new($x -> bint() -> bsstr());
+    my $yint = Math::BigInt -> new($y -> bint() -> bsstr());
+    $xint -> bnok($yint);
 
-    if ($y -> is_zero()) {
-        return $x;
-    }
+    $x -> {sign} = $xint -> {sign};
+    $x -> {_n}   = $xint -> {_n};
+    $x -> {_d}   = $xint -> {_d};
 
-    # Numerator (dividend) is +/-inf. This is handled the same way as in
-    # Math::BigInt -> bmod().
+    return $x;
+}
 
-    if ($x -> is_inf()) {
-        return $x -> bnan();
+sub broot {
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
     }
 
-    # Denominator (divisor) is +/-inf. This is handled the same way as in
-    # Math::BigInt -> bmod().
-
-    if ($y -> is_inf()) {
-        if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
-            return $x;
-        } else {
-            return $x -> binf($y -> sign());
-        }
-    }
+    # Convert $x into a Math::BigFloat.
 
-  # At this point, both the numerator and denominator are finite numbers, and
-  # the denominator (divisor) is non-zero.
+    my $xd   = Math::BigFloat -> new($MBI -> _str($x->{_d}));
+    my $xflt = Math::BigFloat -> new($MBI -> _str($x->{_n})) -> bdiv($xd);
+    $xflt -> {sign} = $x -> {sign};
 
-  return $x if $x->is_zero();           # 0 / 7 = 0, mod 0
+    # Convert $y into a Math::BigFloat.
 
-  # Compute $x - $y * floor($x/$y). This can probably be optimized by working
-  # on a lower level.
+    my $yd   = Math::BigFloat -> new($MBI -> _str($y->{_d}));
+    my $yflt = Math::BigFloat -> new($MBI -> _str($y->{_n})) -> bdiv($yd);
+    $yflt -> {sign} = $y -> {sign};
 
-  $x -> bsub($x -> copy() -> bdiv($y) -> bfloor() -> bmul($y));
-  return $x -> round(@r);
-  }
+    # Compute the root and convert back to a Math::BigRat.
 
-##############################################################################
-# bdec/binc
+    $xflt -> broot($yflt, @r);
+    my $xtmp = Math::BigRat -> new($xflt -> bsstr());
 
-sub bdec
-  {
-  # decrement value (subtract 1)
-  my ($self,$x,@r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
+    $x -> {sign} = $xtmp -> {sign};
+    $x -> {_n}   = $xtmp -> {_n};
+    $x -> {_d}   = $xtmp -> {_d};
 
-  return $x if $x->{sign} !~ /^[+-]$/; # NaN, inf, -inf
+    return $x;
+}
 
-  if ($x->{sign} eq '-')
-    {
-    $x->{_n} = $MBI->_add($x->{_n}, $x->{_d});         # -5/2 => -7/2
-    }
-  else
-    {
-    if ($MBI->_acmp($x->{_n},$x->{_d}) < 0)            # n < d?
-      {
-      # 1/3 -- => -2/3
-      $x->{_n} = $MBI->_sub($MBI->_copy($x->{_d}), $x->{_n});
-      $x->{sign} = '-';
-      }
-    else
-      {
-      $x->{_n} = $MBI->_sub($x->{_n}, $x->{_d});       # 5/2 => 3/2
-      }
+sub bmodpow {
+    # set up parameters
+    my ($class, $x, $y, $m, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, $m, @r) = objectify(3, @_);
     }
-  $x->bnorm()->round(@r);
-  }
 
-sub binc
-  {
-  # increment value (add 1)
-  my ($self,$x,@r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
+    # Convert $x, $y, and $m into Math::BigInt objects.
 
-  return $x if $x->{sign} !~ /^[+-]$/; # NaN, inf, -inf
+    my $xint = Math::BigInt -> new($x -> copy() -> bint());
+    my $yint = Math::BigInt -> new($y -> copy() -> bint());
+    my $mint = Math::BigInt -> new($m -> copy() -> bint());
 
-  if ($x->{sign} eq '-')
-    {
-    if ($MBI->_acmp($x->{_n},$x->{_d}) < 0)
-      {
-      # -1/3 ++ => 2/3 (overflow at 0)
-      $x->{_n} = $MBI->_sub($MBI->_copy($x->{_d}), $x->{_n});
-      $x->{sign} = '+';
-      }
-    else
-      {
-      $x->{_n} = $MBI->_sub($x->{_n}, $x->{_d});       # -5/2 => -3/2
-      }
-    }
-  else
-    {
-    $x->{_n} = $MBI->_add($x->{_n},$x->{_d});          # 5/2 => 7/2
-    }
-  $x->bnorm()->round(@r);
-  }
+    $xint -> bmodpow($y, $m, @r);
+    my $xtmp = Math::BigRat -> new($xint -> bsstr());
 
-##############################################################################
-# is_foo methods (the rest is inherited)
+    $x -> {sign} = $xtmp -> {sign};
+    $x -> {_n}   = $xtmp -> {_n};
+    $x -> {_d}   = $xtmp -> {_d};
+    return $x;
+}
 
-sub is_int
-  {
-  # return true if arg (BRAT or num_str) is an integer
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
-
-  return 1 if ($x->{sign} =~ /^[+-]$/) &&      # NaN and +-inf aren't
-    $MBI->_is_one($x->{_d});                   # x/y && y != 1 => no integer
-  0;
-  }
-
-sub is_zero
-  {
-  # return true if arg (BRAT or num_str) is zero
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
-
-  return 1 if $x->{sign} eq '+' && $MBI->_is_zero($x->{_n});
-  0;
-  }
-
-sub is_one
-  {
-  # return true if arg (BRAT or num_str) is +1 or -1 if signis given
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
-
-  my $sign = $_[2] || ''; $sign = '+' if $sign ne '-';
-  return 1
-   if ($x->{sign} eq $sign && $MBI->_is_one($x->{_n}) && $MBI->_is_one($x->{_d}));
-  0;
-  }
-
-sub is_odd
-  {
-  # return true if arg (BFLOAT or num_str) is odd or false if even
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
-
-  return 1 if ($x->{sign} =~ /^[+-]$/) &&              # NaN & +-inf aren't
-    ($MBI->_is_one($x->{_d}) && $MBI->_is_odd($x->{_n})); # x/2 is not, but 3/1
-  0;
-  }
-
-sub is_even
-  {
-  # return true if arg (BINT or num_str) is even or false if odd
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
-
-  return 0 if $x->{sign} !~ /^[+-]$/;                  # NaN & +-inf aren't
-  return 1 if ($MBI->_is_one($x->{_d})                 # x/3 is never
-     && $MBI->_is_even($x->{_n}));                     # but 4/1 is
-  0;
-  }
+sub bmodinv {
+    # set up parameters
+    my ($class, $x, $y, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y, @r) = objectify(2, @_);
+    }
 
-##############################################################################
-# parts() and friends
+    # Convert $x and $y into Math::BigInt objects.
 
-sub numerator
-  {
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
+    my $xint = Math::BigInt -> new($x -> copy() -> bint());
+    my $yint = Math::BigInt -> new($y -> copy() -> bint());
 
-  # NaN, inf, -inf
-  return Math::BigInt->new($x->{sign}) if ($x->{sign} !~ /^[+-]$/);
+    $xint -> bmodinv($y, @r);
+    my $xtmp = Math::BigRat -> new($xint -> bsstr());
 
-  my $n = Math::BigInt->new($MBI->_str($x->{_n})); $n->{sign} = $x->{sign};
-  $n;
-  }
+    $x -> {sign} = $xtmp -> {sign};
+    $x -> {_n}   = $xtmp -> {_n};
+    $x -> {_d}   = $xtmp -> {_d};
+    return $x;
+}
 
-sub denominator
-  {
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
+sub bsqrt {
+    my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
 
-  # NaN
-  return Math::BigInt->new($x->{sign}) if $x->{sign} eq 'NaN';
-  # inf, -inf
-  return Math::BigInt->bone() if $x->{sign} !~ /^[+-]$/;
+    return $x->bnan() if $x->{sign} !~ /^[+]/; # NaN, -inf or < 0
+    return $x if $x->{sign} eq '+inf';         # sqrt(inf) == inf
+    return $x->round(@r) if $x->is_zero() || $x->is_one();
 
-  Math::BigInt->new($MBI->_str($x->{_d}));
-  }
+    local $Math::BigFloat::upgrade = undef;
+    local $Math::BigFloat::downgrade = undef;
+    local $Math::BigFloat::precision = undef;
+    local $Math::BigFloat::accuracy = undef;
+    local $Math::BigInt::upgrade = undef;
+    local $Math::BigInt::precision = undef;
+    local $Math::BigInt::accuracy = undef;
 
-sub parts
-  {
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
+    my $xn = Math::BigFloat -> new($MBI -> _str($x->{_n}));
+    my $xd = Math::BigFloat -> new($MBI -> _str($x->{_d}));
 
-  my $c = 'Math::BigInt';
+    my $xtmp = Math::BigRat -> new($xn -> bdiv($xd) -> bsqrt() -> bsstr());
 
-  return ($c->bnan(),$c->bnan()) if $x->{sign} eq 'NaN';
-  return ($c->binf(),$c->binf()) if $x->{sign} eq '+inf';
-  return ($c->binf('-'),$c->binf()) if $x->{sign} eq '-inf';
+    $x -> {sign} = $xtmp -> {sign};
+    $x -> {_n}   = $xtmp -> {_n};
+    $x -> {_d}   = $xtmp -> {_d};
 
-  my $n = $c->new($MBI->_str($x->{_n}));
-  $n->{sign} = $x->{sign};
-  my $d = $c->new($MBI->_str($x->{_d}));
-  ($n,$d);
-  }
+    $x->round(@r);
+}
 
-sub length
-  {
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+sub blsft {
+    my ($class, $x, $y, $b, @r) = objectify(2, @_);
 
-  return $nan unless $x->is_int();
-  $MBI->_len($x->{_n});                                # length(-123/1) => length(123)
-  }
+    $b = 2 if !defined $b;
+    $b = $class -> new($b) unless ref($b) && $b -> isa($class);
 
-sub digit
-  {
-  my ($self,$x,$n) = ref($_[0]) ? (undef,$_[0],$_[1]) : objectify(1,@_);
+    return $x -> bnan() if $x -> is_nan() || $y -> is_nan() || $b -> is_nan();
 
-  return $nan unless $x->is_int();
-  $MBI->_digit($x->{_n},$n || 0);              # digit(-123/1,2) => digit(123,2)
-  }
+    # shift by a negative amount?
+    return $x -> brsft($y -> copy() -> babs(), $b) if $y -> {sign} =~ /^-/;
 
-##############################################################################
-# special calc routines
+    $x -> bmul($b -> bpow($y));
+}
 
-sub bceil
-  {
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
-
-  return $x if $x->{sign} !~ /^[+-]$/ ||       # not for NaN, inf
-            $MBI->_is_one($x->{_d});           # 22/1 => 22, 0/1 => 0
-
-  $x->{_n} = $MBI->_div($x->{_n},$x->{_d});    # 22/7 => 3/1 w/ truncate
-  $x->{_d} = $MBI->_one();                     # d => 1
-  $x->{_n} = $MBI->_inc($x->{_n})
-    if $x->{sign} eq '+';                      # +22/7 => 4/1
-  $x->{sign} = '+' if $MBI->_is_zero($x->{_n});        # -0 => 0
-  $x;
-  }
-
-sub bfloor
-  {
-  my ($self,$x) = ref($_[0]) ? (ref($_[0]),$_[0]) : objectify(1,@_);
-
-  return $x if $x->{sign} !~ /^[+-]$/ ||       # not for NaN, inf
-            $MBI->_is_one($x->{_d});           # 22/1 => 22, 0/1 => 0
-
-  $x->{_n} = $MBI->_div($x->{_n},$x->{_d});    # 22/7 => 3/1 w/ truncate
-  $x->{_d} = $MBI->_one();                     # d => 1
-  $x->{_n} = $MBI->_inc($x->{_n})
-    if $x->{sign} eq '-';                      # -22/7 => -4/1
-  $x;
-  }
-
-sub bfac
-  {
-  my ($self,$x,@r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
-
-  # if $x is not an integer
-  if (($x->{sign} ne '+') || (!$MBI->_is_one($x->{_d})))
-    {
-    return $x->bnan();
-    }
+sub brsft {
+    my ($class, $x, $y, $b, @r) = objectify(2, @_);
 
-  $x->{_n} = $MBI->_fac($x->{_n});
-  # since _d is 1, we don't need to reduce/norm the result
-  $x->round(@r);
-  }
+    $b = 2 if !defined $b;
+    $b = $class -> new($b) unless ref($b) && $b -> isa($class);
 
-sub bpow
-  {
-  # power ($x ** $y)
+    return $x -> bnan() if $x -> is_nan() || $y -> is_nan() || $b -> is_nan();
 
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
-    }
+    # shift by a negative amount?
+    return $x -> blsft($y -> copy() -> babs(), $b) if $y -> {sign} =~ /^-/;
 
-  return $x if $x->{sign} =~ /^[+-]inf$/;       # -inf/+inf ** x
-  return $x->bnan() if $x->{sign} eq $nan || $y->{sign} eq $nan;
-  return $x->bone(@r) if $y->is_zero();
-  return $x->round(@r) if $x->is_one() || $y->is_one();
+    # the following call to bdiv() will return either quotient (scalar context)
+    # or quotient and remainder (list context).
+    $x -> bdiv($b -> bpow($y));
+}
 
-  if ($x->{sign} eq '-' && $MBI->_is_one($x->{_n}) && $MBI->_is_one($x->{_d}))
-    {
-    # if $x == -1 and odd/even y => +1/-1
-    return $y->is_odd() ? $x->round(@r) : $x->babs()->round(@r);
-    # my Casio FX-5500L has a bug here: -1 ** 2 is -1, but -1 * -1 is 1;
-    }
-  # 1 ** -y => 1 / (1 ** |y|)
-  # so do test for negative $y after above's clause
+sub band {
+    my $x     = shift;
+    my $xref  = ref($x);
+    my $class = $xref || $x;
 
-  return $x->round(@r) if $x->is_zero();  # 0**y => 0 (if not y <= 0)
+    Carp::croak 'band() is an instance method, not a class method' unless $xref;
+    Carp::croak 'Not enough arguments for band()' if @_ < 1;
 
-  # shortcut if y == 1/N (is then sqrt() respective broot())
-  if ($MBI->_is_one($y->{_n}))
-    {
-    return $x->bsqrt(@r) if $MBI->_is_two($y->{_d});   # 1/2 => sqrt
-    return $x->broot($MBI->_str($y->{_d}),@r);         # 1/N => root(N)
-    }
+    my $y = shift;
+    $y = $class -> new($y) unless ref($y);
 
-  # shortcut y/1 (and/or x/1)
-  if ($MBI->_is_one($y->{_d}))
-    {
-    # shortcut for x/1 and y/1
-    if ($MBI->_is_one($x->{_d}))
-      {
-      $x->{_n} = $MBI->_pow($x->{_n},$y->{_n});                # x/1 ** y/1 => (x ** y)/1
-      if ($y->{sign} eq '-')
-        {
-        # 0.2 ** -3 => 1/(0.2 ** 3)
-        ($x->{_n},$x->{_d}) = ($x->{_d},$x->{_n});     # swap
-        }
-      # correct sign; + ** + => +
-      if ($x->{sign} eq '-')
-        {
-        # - * - => +, - * - * - => -
-        $x->{sign} = '+' if $MBI->_is_even($y->{_n});
-        }
-      return $x->round(@r);
-      }
-    # x/z ** y/1
-    $x->{_n} = $MBI->_pow($x->{_n},$y->{_n});          # 5/2 ** y/1 => 5 ** y / 2 ** y
-    $x->{_d} = $MBI->_pow($x->{_d},$y->{_n});
-    if ($y->{sign} eq '-')
-      {
-      # 0.2 ** -3 => 1/(0.2 ** 3)
-      ($x->{_n},$x->{_d}) = ($x->{_d},$x->{_n});       # swap
-      }
-    # correct sign; + ** + => +
-    if ($x->{sign} eq '-')
-      {
-      # - * - => +, - * - * - => -
-      $x->{sign} = '+' if $MBI->_is_even($y->{_n});
-      }
-    return $x->round(@r);
-    }
+    my @r = @_;
 
-#  print STDERR "# $x $y\n";
+    my $xtmp = Math::BigInt -> new($x -> bint());   # to Math::BigInt
+    $xtmp -> band($y);
+    $xtmp = $class -> new($xtmp);                   # back to Math::BigRat
 
-  # otherwise:
+    $x -> {sign} = $xtmp -> {sign};
+    $x -> {_n}   = $xtmp -> {_n};
+    $x -> {_d}   = $xtmp -> {_d};
 
-  #      n/d     n  ______________
-  # a/b       =  -\/  (a/b) ** d
+    return $x -> round(@r);
+}
 
-  # (a/b) ** n == (a ** n) / (b ** n)
-  $MBI->_pow($x->{_n}, $y->{_n});
-  $MBI->_pow($x->{_d}, $y->{_n});
+sub bior {
+    my $x     = shift;
+    my $xref  = ref($x);
+    my $class = $xref || $x;
 
-  return $x->broot($MBI->_str($y->{_d}),@r);           # n/d => root(n)
-  }
+    Carp::croak 'bior() is an instance method, not a class method' unless $xref;
+    Carp::croak 'Not enough arguments for bior()' if @_ < 1;
 
-sub blog
-  {
-  # Return the logarithm of the operand. If a second operand is defined, that
-  # value is used as the base, otherwise the base is assumed to be Euler's
-  # constant.
+    my $y = shift;
+    $y = $class -> new($y) unless ref($y);
 
-  # Don't objectify the base, since an undefined base, as in $x->blog() or
-  # $x->blog(undef) signals that the base is Euler's number.
+    my @r = @_;
 
-  # set up parameters
-  my ($self,$x,$base,@r) = (ref($_[0]),@_);
+    my $xtmp = Math::BigInt -> new($x -> bint());   # to Math::BigInt
+    $xtmp -> bior($y);
+    $xtmp = $class -> new($xtmp);                   # back to Math::BigRat
 
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$base,@r) = objectify(1,$class,@_);
-    }
+    $x -> {sign} = $xtmp -> {sign};
+    $x -> {_n}   = $xtmp -> {_n};
+    $x -> {_d}   = $xtmp -> {_d};
 
-  return $x if $x->modify('blog');
-
-  # Handle all exception cases and all trivial cases. I have used Wolfram Alpha
-  # (http://www.wolframalpha.com) as the reference for these cases.
-
-  return $x -> bnan() if $x -> is_nan();
-
-  if (defined $base) {
-      $base = $self -> new($base) unless ref $base;
-      if ($base -> is_nan() || $base -> is_one()) {
-          return $x -> bnan();
-      } elsif ($base -> is_inf() || $base -> is_zero()) {
-          return $x -> bnan() if $x -> is_inf() || $x -> is_zero();
-          return $x -> bzero();
-      } elsif ($base -> is_negative()) {            # -inf < base < 0
-          return $x -> bzero() if $x -> is_one();   #     x = 1
-          return $x -> bone()  if $x == $base;      #     x = base
-          return $x -> bnan();                      #     otherwise
-      }
-      return $x -> bone() if $x == $base;           # 0 < base && 0 < x < inf
-  }
-
-  # We now know that the base is either undefined or positive and finite.
-
-  if ($x -> is_inf()) {                 # x = +/-inf
-      my $sign = defined $base && $base < 1 ? '-' : '+';
-      return $x -> binf($sign);
-  } elsif ($x -> is_neg()) {            # -inf < x < 0
-      return $x -> bnan();
-  } elsif ($x -> is_one()) {            # x = 1
-      return $x -> bzero();
-  } elsif ($x -> is_zero()) {           # x = 0
-      my $sign = defined $base && $base < 1 ? '+' : '-';
-      return $x -> binf($sign);
-  }
-
-  # At this point we are done handling all exception cases and trivial cases.
-
-  # Do it with Math::BigFloats and convert back to Math::BigRat.
-  $base = $base -> _as_float() if defined $base;
-  $x -> _new_from_float($x -> _as_float() -> blog($base, @r));
-  }
-
-sub bexp
-  {
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,$class,@_);
-    }
+    return $x -> round(@r);
+}
 
-  return $x->binf(@r) if $x->{sign} eq '+inf';
-  return $x->bzero(@r) if $x->{sign} eq '-inf';
+sub bxor {
+    my $x     = shift;
+    my $xref  = ref($x);
+    my $class = $xref || $x;
 
-  # we need to limit the accuracy to protect against overflow
-  my $fallback = 0;
-  my ($scale,@params);
-  ($x,@params) = $x->_find_round_parameters(@r);
+    Carp::croak 'bxor() is an instance method, not a class method' unless $xref;
+    Carp::croak 'Not enough arguments for bxor()' if @_ < 1;
 
-  # also takes care of the "error in _find_round_parameters?" case
-  return $x if $x->{sign} eq 'NaN';
+    my $y = shift;
+    $y = $class -> new($y) unless ref($y);
 
-  # no rounding at all, so must use fallback
-  if (scalar @params == 0)
-    {
-    # simulate old behaviour
-    $params[0] = $self->div_scale();   # and round to it as accuracy
-    $params[1] = undef;                        # P = undef
-    $scale = $params[0]+4;             # at least four more for proper round
-    $params[2] = $r[2];                        # round mode by caller or undef
-    $fallback = 1;                     # to clear a/p afterwards
-    }
-  else
-    {
-    # the 4 below is empirical, and there might be cases where it's not enough...
-    $scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
-    }
+    my @r = @_;
 
-  return $x->bone(@params) if $x->is_zero();
+    my $xtmp = Math::BigInt -> new($x -> bint());   # to Math::BigInt
+    $xtmp -> bxor($y);
+    $xtmp = $class -> new($xtmp);                   # back to Math::BigRat
 
-  # See the comments in Math::BigFloat on how this algorithm works.
-  # Basically we calculate A and B (where B is faculty(N)) so that A/B = e
+    $x -> {sign} = $xtmp -> {sign};
+    $x -> {_n}   = $xtmp -> {_n};
+    $x -> {_d}   = $xtmp -> {_d};
 
-  my $x_org = $x->copy();
-  if ($scale <= 75)
-    {
-    # set $x directly from a cached string form
-    $x->{_n} =
-        $MBI->_new("90933395208605785401971970164779391644753259799242");
-    $x->{_d} =
-        $MBI->_new("33452526613163807108170062053440751665152000000000");
-    $x->{sign} = '+';
-    }
-  else
-    {
-    # compute A and B so that e = A / B.
-
-    # After some terms we end up with this, so we use it as a starting point:
-    my $A = $MBI->_new("90933395208605785401971970164779391644753259799242");
-    my $F = $MBI->_new(42); my $step = 42;
-
-    # Compute how many steps we need to take to get $A and $B sufficiently big
-    my $steps = Math::BigFloat::_len_to_steps($scale - 4);
-#    print STDERR "# Doing $steps steps for ", $scale-4, " digits\n";
-    while ($step++ <= $steps)
-      {
-      # calculate $a * $f + 1
-      $A = $MBI->_mul($A, $F);
-      $A = $MBI->_inc($A);
-      # increment f
-      $F = $MBI->_inc($F);
-      }
-    # compute $B as factorial of $steps (this is faster than doing it manually)
-    my $B = $MBI->_fac($MBI->_new($steps));
-
-#  print "A ", $MBI->_str($A), "\nB ", $MBI->_str($B), "\n";
-
-    $x->{_n} = $A;
-    $x->{_d} = $B;
-    $x->{sign} = '+';
-    }
+    return $x -> round(@r);
+}
 
-  # $x contains now an estimate of e, with some surplus digits, so we can round
-  if (!$x_org->is_one())
-    {
-    # raise $x to the wanted power and round it in one step:
-    $x->bpow($x_org, @params);
-    }
-  else
-    {
-    # else just round the already computed result
-    delete $x->{_a}; delete $x->{_p};
-    # shortcut to not run through _find_round_parameters again
-    if (defined $params[0])
-      {
-      $x->bround($params[0],$params[2]);                # then round accordingly
-      }
-    else
-      {
-      $x->bfround($params[1],$params[2]);               # then round accordingly
-      }
-    }
-  if ($fallback)
-    {
-    # clear a/p after round, since user did not request it
-    delete $x->{_a}; delete $x->{_p};
-    }
+sub bnot {
+    my $x     = shift;
+    my $xref  = ref($x);
+    my $class = $xref || $x;
 
-  $x;
-  }
+    Carp::croak 'bnot() is an instance method, not a class method' unless $xref;
 
-sub bnok
-  {
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
+    my @r = @_;
 
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,$class,@_);
-    }
+    my $xtmp = Math::BigInt -> new($x -> bint());   # to Math::BigInt
+    $xtmp -> bnot();
+    $xtmp = $class -> new($xtmp);                   # back to Math::BigRat
 
-  # do it with floats
-  $x->_new_from_float($x->_as_float()->bnok(Math::BigFloat->new("$y"),@r));
-  }
+    $x -> {sign} = $xtmp -> {sign};
+    $x -> {_n}   = $xtmp -> {_n};
+    $x -> {_d}   = $xtmp -> {_d};
 
-sub _float_from_part
-  {
-  my $x = shift;
+    return $x -> round(@r);
+}
 
-  my $f = Math::BigFloat->bzero();
-  $f->{_m} = $MBI->_copy($x);
-  $f->{_e} = $MBI->_zero();
+##############################################################################
+# round
 
-  $f;
-  }
+sub round {
+    $_[0];
+}
 
-sub _as_float
-  {
-  my $x = shift;
+sub bround {
+    $_[0];
+}
 
-  local $Math::BigFloat::upgrade = undef;
-  local $Math::BigFloat::accuracy = undef;
-  local $Math::BigFloat::precision = undef;
-  # 22/7 => 3.142857143..
+sub bfround {
+    $_[0];
+}
 
-  my $a = $x->accuracy() || 0;
-  if ($a != 0 || !$MBI->_is_one($x->{_d}))
-    {
-    # n/d
-    return scalar Math::BigFloat->new($x->{sign} . $MBI->_str($x->{_n}))->bdiv($MBI->_str($x->{_d}), $x->accuracy());
-    }
-  # just n
-  Math::BigFloat->new($x->{sign} . $MBI->_str($x->{_n}));
-  }
-
-sub broot
-  {
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
-    }
+##############################################################################
+# comparing
 
-  if ($x->is_int() && $y->is_int())
-    {
-    return $self->new($x->as_number()->broot($y->as_number(),@r));
-    }
+sub bcmp {
+    # compare two signed numbers
 
-  # do it with floats
-  $x->_new_from_float($x->_as_float()->broot($y->_as_float(),@r))->bnorm()->bround(@r);
-  }
+    # set up parameters
+    my ($class, $x, $y) = (ref($_[0]), @_);
 
-sub bmodpow
-  {
-  # set up parameters
-  my ($self,$x,$y,$m,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,$m,@r) = objectify(3,@_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y) = objectify(2, @_);
     }
 
-  # $x or $y or $m are NaN or +-inf => NaN
-  return $x->bnan()
-   if $x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/ ||
-   $m->{sign} !~ /^[+-]$/;
-
-  if ($x->is_int() && $y->is_int() && $m->is_int())
-    {
-    return $self->new($x->as_number()->bmodpow($y->as_number(),$m,@r));
+    if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/) {
+        # $x is NaN and/or $y is NaN
+        return undef if $x->{sign} eq $nan || $y->{sign} eq $nan;
+        # $x and $y are both either +inf or -inf
+        return 0     if $x->{sign} eq $y->{sign} && $x->{sign} =~ /^[+-]inf$/;
+        # $x = +inf and $y < +inf
+        return +1    if $x->{sign} eq '+inf';
+        # $x = -inf and $y > -inf
+        return -1    if $x->{sign} eq '-inf';
+        # $x < +inf and $y = +inf
+        return -1    if $y->{sign} eq '+inf';
+        # $x > -inf and $y = -inf
+        return +1;
     }
 
-  warn ("bmodpow() not fully implemented");
-  $x->bnan();
-  }
+    # $x >= 0 and $y < 0
+    return  1 if $x->{sign} eq '+' && $y->{sign} eq '-';
+    # $x < 0 and $y >= 0
+    return -1 if $x->{sign} eq '-' && $y->{sign} eq '+';
 
-sub bmodinv
-  {
-  # set up parameters
-  my ($self,$x,$y,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y,@r) = objectify(2,@_);
-    }
+    # At this point, we know that $x and $y have the same sign.
 
-  # $x or $y are NaN or +-inf => NaN
-  return $x->bnan()
-   if $x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/;
+    # shortcut
+    my $xz = $MBI->_is_zero($x->{_n});
+    my $yz = $MBI->_is_zero($y->{_n});
+    return  0 if $xz && $yz;               # 0 <=> 0
+    return -1 if $xz && $y->{sign} eq '+'; # 0 <=> +y
+    return  1 if $yz && $x->{sign} eq '+'; # +x <=> 0
 
-  if ($x->is_int() && $y->is_int())
-    {
-    return $self->new($x->as_number()->bmodinv($y->as_number(),@r));
-    }
+    my $t = $MBI->_mul($MBI->_copy($x->{_n}), $y->{_d});
+    my $u = $MBI->_mul($MBI->_copy($y->{_n}), $x->{_d});
 
-  warn ("bmodinv() not fully implemented");
-  $x->bnan();
-  }
+    my $cmp = $MBI->_acmp($t, $u);     # signs are equal
+    $cmp = -$cmp if $x->{sign} eq '-'; # both are '-' => reverse
+    $cmp;
+}
 
-sub bsqrt
-  {
-  my ($self,$x,@r) = ref($_[0]) ? (ref($_[0]),@_) : objectify(1,@_);
+sub bacmp {
+    # compare two numbers (as unsigned)
 
-  return $x->bnan() if $x->{sign} !~ /^[+]/;    # NaN, -inf or < 0
-  return $x if $x->{sign} eq '+inf';            # sqrt(inf) == inf
-  return $x->round(@r) if $x->is_zero() || $x->is_one();
+    # set up parameters
+    my ($class, $x, $y) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
+        ($class, $x, $y) = objectify(2, @_);
+    }
 
-  local $Math::BigFloat::upgrade = undef;
-  local $Math::BigFloat::downgrade = undef;
-  local $Math::BigFloat::precision = undef;
-  local $Math::BigFloat::accuracy = undef;
-  local $Math::BigInt::upgrade = undef;
-  local $Math::BigInt::precision = undef;
-  local $Math::BigInt::accuracy = undef;
+    if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/)) {
+        # handle +-inf and NaN
+        return undef if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+        return 0 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} =~ /^[+-]inf$/;
+        return 1 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} !~ /^[+-]inf$/;
+        return -1;
+    }
 
-  $x->{_n} = _float_from_part($x->{_n})->bsqrt();
-  $x->{_d} = _float_from_part($x->{_d})->bsqrt();
+    my $t = $MBI->_mul($MBI->_copy($x->{_n}), $y->{_d});
+    my $u = $MBI->_mul($MBI->_copy($y->{_n}), $x->{_d});
+    $MBI->_acmp($t, $u);        # ignore signs
+}
 
-  # XXX TODO: we probably can optimize this:
+sub beq {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
 
-  # if sqrt(D) was not integer
-  if ($x->{_d}->{_es} ne '+')
-    {
-    $x->{_n}->blsft($x->{_d}->exponent()->babs(),10);  # 7.1/4.51 => 7.1/45.1
-    $x->{_d} = $MBI->_copy($x->{_d}->{_m});            # 7.1/45.1 => 71/45.1
-    }
-  # if sqrt(N) was not integer
-  if ($x->{_n}->{_es} ne '+')
-    {
-    $x->{_d}->blsft($x->{_n}->exponent()->babs(),10);  # 71/45.1 => 710/45.1
-    $x->{_n} = $MBI->_copy($x->{_n}->{_m});            # 710/45.1 => 710/451
-    }
+    Carp::croak 'beq() is an instance method, not a class method' unless $selfref;
+    Carp::croak 'Wrong number of arguments for beq()' unless @_ == 1;
 
-  # convert parts to $MBI again
-  $x->{_n} = $MBI->_lsft($MBI->_copy($x->{_n}->{_m}), $x->{_n}->{_e}, 10)
-    if ref($x->{_n}) ne $MBI && ref($x->{_n}) ne 'ARRAY';
-  $x->{_d} = $MBI->_lsft($MBI->_copy($x->{_d}->{_m}), $x->{_d}->{_e}, 10)
-    if ref($x->{_d}) ne $MBI && ref($x->{_d}) ne 'ARRAY';
+    my $cmp = $self -> bcmp(shift);
+    return defined($cmp) && ! $cmp;
+}
 
-  $x->bnorm()->round(@r);
-  }
+sub bne {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
 
-sub blsft
-  {
-  my ($self,$x,$y,$b,@r) = objectify(3,@_);
+    Carp::croak 'bne() is an instance method, not a class method' unless $selfref;
+    Carp::croak 'Wrong number of arguments for bne()' unless @_ == 1;
 
-  $b = 2 unless defined $b;
-  $b = $self->new($b) unless ref ($b);
-  $x->bmul($b->copy()->bpow($y), @r);
-  $x;
-  }
+    my $cmp = $self -> bcmp(shift);
+    return defined($cmp) && ! $cmp ? '' : 1;
+}
 
-sub brsft
-  {
-  my ($self,$x,$y,$b,@r) = objectify(3,@_);
+sub blt {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
 
-  $b = 2 unless defined $b;
-  $b = $self->new($b) unless ref ($b);
-  $x->bdiv($b->copy()->bpow($y), @r);
-  $x;
-  }
+    Carp::croak 'blt() is an instance method, not a class method' unless $selfref;
+    Carp::croak 'Wrong number of arguments for blt()' unless @_ == 1;
 
-##############################################################################
-# round
+    my $cmp = $self -> bcmp(shift);
+    return defined($cmp) && $cmp < 0;
+}
 
-sub round
-  {
-  $_[0];
-  }
+sub ble {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
 
-sub bround
-  {
-  $_[0];
-  }
+    Carp::croak 'ble() is an instance method, not a class method' unless $selfref;
+    Carp::croak 'Wrong number of arguments for ble()' unless @_ == 1;
 
-sub bfround
-  {
-  $_[0];
-  }
+    my $cmp = $self -> bcmp(shift);
+    return defined($cmp) && $cmp <= 0;
+}
 
-##############################################################################
-# comparing
+sub bgt {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
 
-sub bcmp
-  {
-  # compare two signed numbers
+    Carp::croak 'bgt() is an instance method, not a class method' unless $selfref;
+    Carp::croak 'Wrong number of arguments for bgt()' unless @_ == 1;
 
-  # set up parameters
-  my ($self,$x,$y) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y) = objectify(2,@_);
-    }
+    my $cmp = $self -> bcmp(shift);
+    return defined($cmp) && $cmp > 0;
+}
 
-  if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/))
-    {
-    # handle +-inf and NaN
-    return undef if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
-    return 0 if $x->{sign} eq $y->{sign} && $x->{sign} =~ /^[+-]inf$/;
-    return +1 if $x->{sign} eq '+inf';
-    return -1 if $x->{sign} eq '-inf';
-    return -1 if $y->{sign} eq '+inf';
-    return +1;
-    }
-  # check sign for speed first
-  return 1 if $x->{sign} eq '+' && $y->{sign} eq '-';   # does also 0 <=> -y
-  return -1 if $x->{sign} eq '-' && $y->{sign} eq '+';  # does also -x <=> 0
-
-  # shortcut
-  my $xz = $MBI->_is_zero($x->{_n});
-  my $yz = $MBI->_is_zero($y->{_n});
-  return 0 if $xz && $yz;                               # 0 <=> 0
-  return -1 if $xz && $y->{sign} eq '+';                # 0 <=> +y
-  return 1 if $yz && $x->{sign} eq '+';                 # +x <=> 0
-
-  my $t = $MBI->_mul($MBI->_copy($x->{_n}), $y->{_d});
-  my $u = $MBI->_mul($MBI->_copy($y->{_n}), $x->{_d});
-
-  my $cmp = $MBI->_acmp($t,$u);                                # signs are equal
-  $cmp = -$cmp if $x->{sign} eq '-';                   # both are '-' => reverse
-  $cmp;
-  }
-
-sub bacmp
-  {
-  # compare two numbers (as unsigned)
-
-  # set up parameters
-  my ($self,$x,$y) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1])))
-    {
-    ($self,$x,$y) = objectify(2,$class,@_);
-    }
+sub bge {
+    my $self    = shift;
+    my $selfref = ref $self;
+    my $class   = $selfref || $self;
 
-  if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/))
-    {
-    # handle +-inf and NaN
-    return undef if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
-    return 0 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} =~ /^[+-]inf$/;
-    return 1 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} !~ /^[+-]inf$/;
-    return -1;
-    }
+    Carp::croak 'bge() is an instance method, not a class method'
+        unless $selfref;
+    Carp::croak 'Wrong number of arguments for bge()' unless @_ == 1;
 
-  my $t = $MBI->_mul($MBI->_copy($x->{_n}), $y->{_d});
-  my $u = $MBI->_mul($MBI->_copy($y->{_n}), $x->{_d});
-  $MBI->_acmp($t,$u);                                  # ignore signs
-  }
+    my $cmp = $self -> bcmp(shift);
+    return defined($cmp) && $cmp >= 0;
+}
 
 ##############################################################################
-# output conversation
+# output conversion
+
+sub numify {
+    # convert 17/8 => float (aka 2.125)
+    my ($self, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-sub numify
-  {
-  # convert 17/8 => float (aka 2.125)
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+    # Non-finite number.
 
-  return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, NaN, etc
+    return $x->bstr() if $x->{sign} !~ /^[+-]$/;
 
-  # N/1 => N
-  my $neg = ''; $neg = '-' if $x->{sign} eq '-';
-  return $neg . $MBI->_num($x->{_n}) if $MBI->_is_one($x->{_d});
+    # Finite number.
 
-  $x->_as_float()->numify() + 0.0;
-  }
+    my $abs = $MBI->_is_one($x->{_d})
+            ? $MBI->_num($x->{_n})
+            : Math::BigFloat -> new($MBI->_str($x->{_n}))
+                             -> bdiv($MBI->_str($x->{_d}))
+                             -> bstr();
+    return $x->{sign} eq '-' ? 0 - $abs : 0 + $abs;
+}
+
+sub as_number {
+    my ($self, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-sub as_number
-  {
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+    # NaN, inf etc
+    return Math::BigInt->new($x->{sign}) if $x->{sign} !~ /^[+-]$/;
 
-  # NaN, inf etc
-  return Math::BigInt->new($x->{sign}) if $x->{sign} !~ /^[+-]$/;
+    my $u = Math::BigInt->bzero();
+    $u->{value} = $MBI->_div($MBI->_copy($x->{_n}), $x->{_d}); # 22/7 => 3
+    $u->bneg if $x->{sign} eq '-'; # no negative zero
+    $u;
+}
 
-  my $u = Math::BigInt->bzero();
-  $u->{value} = $MBI->_div($MBI->_copy($x->{_n}), $x->{_d});   # 22/7 => 3
-  $u->bneg if $x->{sign} eq '-'; # no negative zero
-  $u;
-  }
+sub as_float {
+    # return N/D as Math::BigFloat
 
-sub as_float
-  {
-  # return N/D as Math::BigFloat
+    # set up parameters
+    my ($class, $x, @r) = (ref($_[0]), @_);
+    # objectify is costly, so avoid it
+    ($class, $x, @r) = objectify(1, @_) unless ref $_[0];
 
-  # set up parameters
-  my ($self,$x,@r) = (ref($_[0]),@_);
-  # objectify is costly, so avoid it
-  ($self,$x,@r) = objectify(1,$class,@_) unless ref $_[0];
+    # NaN, inf etc
+    return Math::BigFloat->new($x->{sign}) if $x->{sign} !~ /^[+-]$/;
 
-  # NaN, inf etc
-  return Math::BigFloat->new($x->{sign}) if $x->{sign} !~ /^[+-]$/;
+    my $xd   = Math::BigFloat -> new($MBI -> _str($x->{_d}));
+    my $xflt = Math::BigFloat -> new($MBI -> _str($x->{_n}));
+    $xflt -> {sign} = $x -> {sign};
+    $xflt -> bdiv($xd, @r);
 
-  my $u = Math::BigFloat->bzero();
-  $u->{sign} = $x->{sign};
-  # n
-  $u->{_m} = $MBI->_copy($x->{_n});
-  $u->{_e} = $MBI->_zero();
-  $u->bdiv($MBI->_str($x->{_d}), @r);
-  # return $u
-  $u;
-  }
+    return $xflt;
+}
 
-sub as_bin
-  {
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+sub as_bin {
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-  return $x unless $x->is_int();
+    return $x unless $x->is_int();
 
-  my $s = $x->{sign}; $s = '' if $s eq '+';
-  $s . $MBI->_as_bin($x->{_n});
-  }
+    my $s = $x->{sign};
+    $s = '' if $s eq '+';
+    $s . $MBI->_as_bin($x->{_n});
+}
 
-sub as_hex
-  {
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+sub as_hex {
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-  return $x unless $x->is_int();
+    return $x unless $x->is_int();
 
-  my $s = $x->{sign}; $s = '' if $s eq '+';
-  $s . $MBI->_as_hex($x->{_n});
-  }
+    my $s = $x->{sign}; $s = '' if $s eq '+';
+    $s . $MBI->_as_hex($x->{_n});
+}
 
-sub as_oct
-  {
-  my ($self,$x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+sub as_oct {
+    my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
 
-  return $x unless $x->is_int();
+    return $x unless $x->is_int();
 
-  my $s = $x->{sign}; $s = '' if $s eq '+';
-  $s . $MBI->_as_oct($x->{_n});
-  }
+    my $s = $x->{sign}; $s = '' if $s eq '+';
+    $s . $MBI->_as_oct($x->{_n});
+}
 
 ##############################################################################
 
-sub from_hex
-  {
-  my $class = shift;
+sub from_hex {
+    my $class = shift;
 
-  $class->new(@_);
-  }
+    $class->new(@_);
+}
 
-sub from_bin
-  {
-  my $class = shift;
+sub from_bin {
+    my $class = shift;
 
-  $class->new(@_);
-  }
+    $class->new(@_);
+}
 
-sub from_oct
-  {
-  my $class = shift;
+sub from_oct {
+    my $class = shift;
 
-  my @parts;
-  for my $c (@_)
-    {
-    push @parts, Math::BigInt->from_oct($c);
+    my @parts;
+    for my $c (@_) {
+        push @parts, Math::BigInt->from_oct($c);
     }
-  $class->new (@parts);
-  }
+    $class->new (@parts);
+}
 
 ##############################################################################
 # import
 
-sub import
-  {
-  my $self = shift;
-  my $l = scalar @_;
-  my $lib = ''; my @a;
-  my $try = 'try';
+sub import {
+    my $class = shift;
+    my $l = scalar @_;
+    my $lib = ''; my @a;
+    my $try = 'try';
 
-  for (my $i = 0; $i < $l ; $i++)
-    {
-    if ($_[$i] eq ':constant')
-      {
-      # this rest causes overlord er load to step in
-      overload::constant float => sub { $self->new(shift); };
-      }
-#    elsif ($_[$i] eq 'upgrade')
-#      {
-#     # this causes upgrading
-#      $upgrade = $_[$i+1];            # or undef to disable
-#      $i++;
-#      }
-    elsif ($_[$i] eq 'downgrade')
-      {
-      # this causes downgrading
-      $downgrade = $_[$i+1];           # or undef to disable
-      $i++;
-      }
-    elsif ($_[$i] =~ /^(lib|try|only)\z/)
-      {
-      $lib = $_[$i+1] || '';           # default Calc
-      $try = $1;                       # lib, try or only
-      $i++;
-      }
-    elsif ($_[$i] eq 'with')
-      {
-      # this argument is no longer used
-      #$MBI = $_[$i+1] || 'Math::BigInt::Calc';        # default Math::BigInt::Calc
-      $i++;
-      }
-    else
-      {
-      push @a, $_[$i];
-      }
+    for (my $i = 0; $i < $l ; $i++) {
+        if ($_[$i] eq ':constant') {
+            # this rest causes overlord er load to step in
+            overload::constant float => sub { $class->new(shift); };
+        }
+        #    elsif ($_[$i] eq 'upgrade')
+        #      {
+        #     # this causes upgrading
+        #      $upgrade = $_[$i+1];             # or undef to disable
+        #      $i++;
+        #      }
+        elsif ($_[$i] eq 'downgrade') {
+            # this causes downgrading
+            $downgrade = $_[$i+1]; # or undef to disable
+            $i++;
+        } elsif ($_[$i] =~ /^(lib|try|only)\z/) {
+            $lib = $_[$i+1] || ''; # default Calc
+            $try = $1;             # lib, try or only
+            $i++;
+        } elsif ($_[$i] eq 'with') {
+            # this argument is no longer used
+            #$MBI = $_[$i+1] || 'Math::BigInt::Calc'; # default Math::BigInt::Calc
+            $i++;
+        } else {
+            push @a, $_[$i];
+        }
     }
-  require Math::BigInt;
+    require Math::BigInt;
 
-  # let use Math::BigInt lib => 'GMP'; use Math::BigRat; still have GMP
-  if ($lib ne '')
-    {
-    my @c = split /\s*,\s*/, $lib;
-    foreach (@c)
-      {
-      $_ =~ tr/a-zA-Z0-9://cd;                    # limit to sane characters
-      }
-    $lib = join(",", @c);
+    # let use Math::BigInt lib => 'GMP'; use Math::BigRat; still have GMP
+    if ($lib ne '') {
+        my @c = split /\s*,\s*/, $lib;
+        foreach (@c) {
+            $_ =~ tr/a-zA-Z0-9://cd; # limit to sane characters
+        }
+        $lib = join(",", @c);
     }
-  my @import = ('objectify');
-  push @import, $try => $lib if $lib ne '';
+    my @import = ('objectify');
+    push @import, $try => $lib if $lib ne '';
 
-  # MBI already loaded, so feed it our lib arguments
-  Math::BigInt->import(@import);
+    # MBI already loaded, so feed it our lib arguments
+    Math::BigInt->import(@import);
 
-  $MBI = Math::BigFloat->config()->{lib};
+    $MBI = Math::BigFloat->config()->{lib};
 
-  # register us with MBI to get notified of future lib changes
-  Math::BigInt::_register_callback($self, sub { $MBI = $_[0]; });
+    # register us with MBI to get notified of future lib changes
+    Math::BigInt::_register_callback($class, sub { $MBI = $_[0]; });
 
-  # any non :constant stuff is handled by our parent, Exporter (loaded
-  # by Math::BigFloat, even if @_ is empty, to give it a chance
-  $self->SUPER::import(@a);             # for subclasses
-  $self->export_to_level(1,$self,@a);   # need this, too
-  }
+    # any non :constant stuff is handled by our parent, Exporter (loaded
+    # by Math::BigFloat, even if @_ is empty, to give it a chance
+    $class->SUPER::import(@a);           # for subclasses
+    $class->export_to_level(1, $class, @a); # need this, too
+}
 
 1;
 
@@ -1740,17 +2084,17 @@ Math::BigRat - Arbitrary big rational numbers
 
 =head1 SYNOPSIS
 
-       use Math::BigRat;
+    use Math::BigRat;
 
-       my $x = Math::BigRat->new('3/7'); $x += '5/9';
+    my $x = Math::BigRat->new('3/7'); $x += '5/9';
 
-       print $x->bstr(),"\n";
-       print $x ** 2,"\n";
+    print $x->bstr(), "\n";
+    print $x ** 2, "\n";
 
-       my $y = Math::BigRat->new('inf');
-       print "$y ", ($y->is_inf ? 'is' : 'is not') , " infinity\n";
+    my $y = Math::BigRat->new('inf');
+    print "$y ", ($y->is_inf ? 'is' : 'is not'), " infinity\n";
 
-       my $z = Math::BigRat->new(144); $z->bsqrt();
+    my $z = Math::BigRat->new(144); $z->bsqrt();
 
 =head1 DESCRIPTION
 
@@ -1762,24 +2106,22 @@ for arbitrary big rational numbers.
 You can change the underlying module that does the low-level
 math operations by using:
 
-       use Math::BigRat try => 'GMP';
+    use Math::BigRat try => 'GMP';
 
 Note: This needs Math::BigInt::GMP installed.
 
 The following would first try to find Math::BigInt::Foo, then
 Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:
 
-       use Math::BigRat try => 'Foo,Math::BigInt::Bar';
+    use Math::BigRat try => 'Foo,Math::BigInt::Bar';
 
-If you want to get warned when the fallback occurs, replace "try" with
-"lib":
+If you want to get warned when the fallback occurs, replace "try" with "lib":
 
-       use Math::BigRat lib => 'Foo,Math::BigInt::Bar';
+    use Math::BigRat lib => 'Foo,Math::BigInt::Bar';
 
-If you want the code to die instead, replace "try" with
-"only":
+If you want the code to die instead, replace "try" with "only":
 
-       use Math::BigRat only => 'Foo,Math::BigInt::Bar';
+    use Math::BigRat only => 'Foo,Math::BigInt::Bar';
 
 =head1 METHODS
 
@@ -1787,316 +2129,481 @@ Any methods not listed here are derived from Math::BigFloat (or
 Math::BigInt), so make sure you check these two modules for further
 information.
 
-=head2 new()
+=over
 
-       $x = Math::BigRat->new('1/3');
+=item new()
+
+    $x = Math::BigRat->new('1/3');
 
 Create a new Math::BigRat object. Input can come in various forms:
 
-       $x = Math::BigRat->new(123);                            # scalars
-       $x = Math::BigRat->new('inf');                          # infinity
-       $x = Math::BigRat->new('123.3');                        # float
-       $x = Math::BigRat->new('1/3');                          # simple string
-       $x = Math::BigRat->new('1 / 3');                        # spaced
-       $x = Math::BigRat->new('1 / 0.1');                      # w/ floats
-       $x = Math::BigRat->new(Math::BigInt->new(3));           # BigInt
-       $x = Math::BigRat->new(Math::BigFloat->new('3.1'));     # BigFloat
-       $x = Math::BigRat->new(Math::BigInt::Lite->new('2'));   # BigLite
+    $x = Math::BigRat->new(123);                            # scalars
+    $x = Math::BigRat->new('inf');                          # infinity
+    $x = Math::BigRat->new('123.3');                        # float
+    $x = Math::BigRat->new('1/3');                          # simple string
+    $x = Math::BigRat->new('1 / 3');                        # spaced
+    $x = Math::BigRat->new('1 / 0.1');                      # w/ floats
+    $x = Math::BigRat->new(Math::BigInt->new(3));           # BigInt
+    $x = Math::BigRat->new(Math::BigFloat->new('3.1'));     # BigFloat
+    $x = Math::BigRat->new(Math::BigInt::Lite->new('2'));   # BigLite
 
-       # You can also give D and N as different objects:
-       $x = Math::BigRat->new(
-               Math::BigInt->new(-123),
-               Math::BigInt->new(7),
-               );                      # => -123/7
+    # You can also give D and N as different objects:
+    $x = Math::BigRat->new(
+            Math::BigInt->new(-123),
+            Math::BigInt->new(7),
+         );                      # => -123/7
 
-=head2 numerator()
+=item numerator()
 
-       $n = $x->numerator();
+    $n = $x->numerator();
 
 Returns a copy of the numerator (the part above the line) as signed BigInt.
 
-=head2 denominator()
+=item denominator()
 
-       $d = $x->denominator();
+    $d = $x->denominator();
 
 Returns a copy of the denominator (the part under the line) as positive BigInt.
 
-=head2 parts()
+=item parts()
 
-       ($n,$d) = $x->parts();
+    ($n, $d) = $x->parts();
 
 Return a list consisting of (signed) numerator and (unsigned) denominator as
 BigInts.
 
-=head2 numify()
+=item numify()
 
-       my $y = $x->numify();
+    my $y = $x->numify();
 
 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()|/as_int()E<sol>as_number()> or L</as_float()> instead.
+use L<as_int()|/"as_int()/as_number()"> or L</as_float()> instead.
 
 This routine is automatically used whenever a scalar is required:
 
-       my $x = Math::BigRat->new('3/1');
-       @array = (0,1,2,3);
-       $y = $array[$x];                # set $y to 3
+    my $x = Math::BigRat->new('3/1');
+    @array = (0, 1, 2, 3);
+    $y = $array[$x];                # set $y to 3
 
-=head2 as_int()/as_number()
+=item as_int()/as_number()
 
-       $x = Math::BigRat->new('13/7');
-       print $x->as_int(),"\n";                # '1'
+    $x = Math::BigRat->new('13/7');
+    print $x->as_int(), "\n";               # '1'
 
 Returns a copy of the object as BigInt, truncated to an integer.
 
 C<as_number()> is an alias for C<as_int()>.
 
-=head2 as_float()
+=item as_float()
 
-       $x = Math::BigRat->new('13/7');
-       print $x->as_float(),"\n";              # '1'
+    $x = Math::BigRat->new('13/7');
+    print $x->as_float(), "\n";             # '1'
 
-       $x = Math::BigRat->new('2/3');
-       print $x->as_float(5),"\n";             # '0.66667'
+    $x = Math::BigRat->new('2/3');
+    print $x->as_float(5), "\n";            # '0.66667'
 
 Returns a copy of the object as BigFloat, preserving the
 accuracy as wanted, or the default of 40 digits.
 
 This method was added in v0.22 of Math::BigRat (April 2008).
 
-=head2 as_hex()
+=item as_hex()
 
-       $x = Math::BigRat->new('13');
-       print $x->as_hex(),"\n";                # '0xd'
+    $x = Math::BigRat->new('13');
+    print $x->as_hex(), "\n";               # '0xd'
 
 Returns the BigRat as hexadecimal string. Works only for integers.
 
-=head2 as_bin()
+=item as_bin()
 
-       $x = Math::BigRat->new('13');
-       print $x->as_bin(),"\n";                # '0x1101'
+    $x = Math::BigRat->new('13');
+    print $x->as_bin(), "\n";               # '0x1101'
 
 Returns the BigRat as binary string. Works only for integers.
 
-=head2 as_oct()
+=item as_oct()
 
-       $x = Math::BigRat->new('13');
-       print $x->as_oct(),"\n";                # '015'
+    $x = Math::BigRat->new('13');
+    print $x->as_oct(), "\n";               # '015'
 
 Returns the BigRat as octal string. Works only for integers.
 
-=head2 from_hex()/from_bin()/from_oct()
+=item from_hex()
+
+    my $h = Math::BigRat->from_hex('0x10');
+
+Create a BigRat from a hexadecimal number in string form.
+
+=item from_oct()
+
+    my $o = Math::BigRat->from_oct('020');
+
+Create a BigRat from an octal number in string form.
+
+=item from_bin()
+
+    my $b = Math::BigRat->from_bin('0b10000000');
+
+Create a BigRat from an binary number in string form.
+
+=item bnan()
+
+    $x = Math::BigRat->bnan();
+
+Creates a new BigRat object representing NaN (Not A Number).
+If used on an object, it will set it to NaN:
+
+    $x->bnan();
+
+=item bzero()
 
-       my $h = Math::BigRat->from_hex('0x10');
-       my $b = Math::BigRat->from_bin('0b10000000');
-       my $o = Math::BigRat->from_oct('020');
+    $x = Math::BigRat->bzero();
 
-Create a BigRat from an hexadecimal, binary or octal number
-in string form.
+Creates a new BigRat object representing zero.
+If used on an object, it will set it to zero:
 
-=head2 length()
+    $x->bzero();
 
-       $len = $x->length();
+=item binf()
+
+    $x = Math::BigRat->binf($sign);
+
+Creates a new BigRat object representing infinity. The optional argument is
+either '-' or '+', indicating whether you want infinity or minus infinity.
+If used on an object, it will set it to infinity:
+
+    $x->binf();
+    $x->binf('-');
+
+=item bone()
+
+    $x = Math::BigRat->bone($sign);
+
+Creates a new BigRat object representing one. The optional argument is
+either '-' or '+', indicating whether you want one or minus one.
+If used on an object, it will set it to one:
+
+    $x->bone();                 # +1
+    $x->bone('-');              # -1
+
+=item length()
+
+    $len = $x->length();
 
 Return the length of $x in digits for integer values.
 
-=head2 digit()
+=item digit()
 
-       print Math::BigRat->new('123/1')->digit(1);     # 1
-       print Math::BigRat->new('123/1')->digit(-1);    # 3
+    print Math::BigRat->new('123/1')->digit(1);     # 1
+    print Math::BigRat->new('123/1')->digit(-1);    # 3
 
 Return the N'ths digit from X when X is an integer value.
 
-=head2 bnorm()
+=item bnorm()
 
-       $x->bnorm();
+    $x->bnorm();
 
 Reduce the number to the shortest form. This routine is called
 automatically whenever it is needed.
 
-=head2 bfac()
+=item bfac()
 
-       $x->bfac();
+    $x->bfac();
 
 Calculates the factorial of $x. For instance:
 
-       print Math::BigRat->new('3/1')->bfac(),"\n";    # 1*2*3
-       print Math::BigRat->new('5/1')->bfac(),"\n";    # 1*2*3*4*5
+    print Math::BigRat->new('3/1')->bfac(), "\n";   # 1*2*3
+    print Math::BigRat->new('5/1')->bfac(), "\n";   # 1*2*3*4*5
 
 Works currently only for integers.
 
-=head2 bround()/round()/bfround()
+=item bround()/round()/bfround()
 
 Are not yet implemented.
 
-=head2 bmod()
+=item bmod()
 
-       $x->bmod($y);
+    $x->bmod($y);
 
 Returns $x modulo $y. When $x is finite, and $y is finite and non-zero, the
 result is identical to the remainder after floored division (F-division). If,
 in addition, both $x and $y are integers, the result is identical to the result
 from Perl's % operator.
 
-=head2 bneg()
+=item bmodinv()
+
+    $x->bmodinv($mod);          # modular multiplicative inverse
+
+Returns the multiplicative inverse of C<$x> modulo C<$mod>. If
+
+    $y = $x -> copy() -> bmodinv($mod)
+
+then C<$y> is the number closest to zero, and with the same sign as C<$mod>,
+satisfying
+
+    ($x * $y) % $mod = 1 % $mod
+
+If C<$x> and C<$y> are non-zero, they must be relative primes, i.e.,
+C<bgcd($y, $mod)==1>. 'C<NaN>' is returned when no modular multiplicative
+inverse exists.
+
+=item bmodpow()
 
-       $x->bneg();
+    $num->bmodpow($exp,$mod);           # modular exponentiation
+                                        # ($num**$exp % $mod)
+
+Returns the value of C<$num> taken to the power C<$exp> in the modulus
+C<$mod> using binary exponentiation.  C<bmodpow> is far superior to
+writing
+
+    $num ** $exp % $mod
+
+because it is much faster - it reduces internal variables into
+the modulus whenever possible, so it operates on smaller numbers.
+
+C<bmodpow> also supports negative exponents.
+
+    bmodpow($num, -1, $mod)
+
+is exactly equivalent to
+
+    bmodinv($num, $mod)
+
+=item bneg()
+
+    $x->bneg();
 
 Used to negate the object in-place.
 
-=head2 is_one()
+=item is_one()
 
-       print "$x is 1\n" if $x->is_one();
+    print "$x is 1\n" if $x->is_one();
 
 Return true if $x is exactly one, otherwise false.
 
-=head2 is_zero()
+=item is_zero()
 
-       print "$x is 0\n" if $x->is_zero();
+    print "$x is 0\n" if $x->is_zero();
 
 Return true if $x is exactly zero, otherwise false.
 
-=head2 is_pos()/is_positive()
+=item is_pos()/is_positive()
 
-       print "$x is >= 0\n" if $x->is_positive();
+    print "$x is >= 0\n" if $x->is_positive();
 
 Return true if $x is positive (greater than or equal to zero), otherwise
 false. Please note that '+inf' is also positive, while 'NaN' and '-inf' aren't.
 
 C<is_positive()> is an alias for C<is_pos()>.
 
-=head2 is_neg()/is_negative()
+=item is_neg()/is_negative()
 
-       print "$x is < 0\n" if $x->is_negative();
+    print "$x is < 0\n" if $x->is_negative();
 
 Return true if $x is negative (smaller than zero), otherwise false. Please
 note that '-inf' is also negative, while 'NaN' and '+inf' aren't.
 
 C<is_negative()> is an alias for C<is_neg()>.
 
-=head2 is_int()
+=item is_int()
 
-       print "$x is an integer\n" if $x->is_int();
+    print "$x is an integer\n" if $x->is_int();
 
 Return true if $x has a denominator of 1 (e.g. no fraction parts), otherwise
 false. Please note that '-inf', 'inf' and 'NaN' aren't integer.
 
-=head2 is_odd()
+=item is_odd()
 
-       print "$x is odd\n" if $x->is_odd();
+    print "$x is odd\n" if $x->is_odd();
 
 Return true if $x is odd, otherwise false.
 
-=head2 is_even()
+=item is_even()
 
-       print "$x is even\n" if $x->is_even();
+    print "$x is even\n" if $x->is_even();
 
 Return true if $x is even, otherwise false.
 
-=head2 bceil()
+=item bceil()
 
-       $x->bceil();
+    $x->bceil();
 
 Set $x to the next bigger integer value (e.g. truncate the number to integer
 and then increment it by one).
 
-=head2 bfloor()
+=item bfloor()
 
-       $x->bfloor();
+    $x->bfloor();
 
 Truncate $x to an integer value.
 
-=head2 bsqrt()
+=item bint()
+
+    $x->bint();
+
+Round $x towards zero.
+
+=item bsqrt()
 
-       $x->bsqrt();
+    $x->bsqrt();
 
 Calculate the square root of $x.
 
-=head2 broot()
+=item broot()
 
-       $x->broot($n);
+    $x->broot($n);
 
 Calculate the N'th root of $x.
 
-=head2 badd()
+=item badd()
 
-        $x->badd($y);
+    $x->badd($y);
 
 Adds $y to $x and returns the result.
 
-=head2 bmul()
+=item bmul()
 
-        $x->bmul($y);
+    $x->bmul($y);
 
 Multiplies $y to $x and returns the result.
 
-=head2 bsub()
+=item bsub()
 
-        $x->bsub($y);
+    $x->bsub($y);
 
 Subtracts $y from $x and returns the result.
 
-=head2 bdiv()
+=item bdiv()
 
-        $q = $x->bdiv($y);
-        ($q, $r) = $x->bdiv($y);
+    $q = $x->bdiv($y);
+    ($q, $r) = $x->bdiv($y);
 
 In scalar context, divides $x by $y and returns the result. In list context,
 does floored division (F-division), returning an integer $q and a remainder $r
 so that $x = $q * $y + $r. The remainer (modulo) is equal to what is returned
 by C<$x->bmod($y)>.
 
-=head2 bdec()
+=item bdec()
 
-        $x->bdec();
+    $x->bdec();
 
 Decrements $x by 1 and returns the result.
 
-=head2 binc()
+=item binc()
 
-        $x->binc();
+    $x->binc();
 
 Increments $x by 1 and returns the result.
 
-=head2 copy()
+=item copy()
 
-       my $z = $x->copy();
+    my $z = $x->copy();
 
 Makes a deep copy of the object.
 
 Please see the documentation in L<Math::BigInt> for further details.
 
-=head2 bstr()/bsstr()
+=item bstr()/bsstr()
 
-       my $x = Math::BigInt->new('8/4');
-       print $x->bstr(),"\n";                  # prints 1/2
-       print $x->bsstr(),"\n";                 # prints 1/2
+    my $x = Math::BigRat->new('8/4');
+    print $x->bstr(), "\n";             # prints 1/2
+    print $x->bsstr(), "\n";            # prints 1/2
 
 Return a string representing this object.
 
-=head2 bacmp()/bcmp()
+=item bcmp()
 
-Used to compare numbers.
+    $x->bcmp($y);
 
-Please see the documentation in L<Math::BigInt> for further details.
+Compares $x with $y and takes the sign into account.
+Returns -1, 0, 1 or undef.
+
+=item bacmp()
+
+    $x->bacmp($y);
+
+Compares $x with $y while ignoring their sign. Returns -1, 0, 1 or undef.
 
-=head2 blsft()/brsft()
+=item beq()
+
+    $x -> beq($y);
+
+Returns true if and only if $x is equal to $y, and false otherwise.
+
+=item bne()
+
+    $x -> bne($y);
+
+Returns true if and only if $x is not equal to $y, and false otherwise.
+
+=item blt()
+
+    $x -> blt($y);
+
+Returns true if and only if $x is equal to $y, and false otherwise.
+
+=item ble()
+
+    $x -> ble($y);
+
+Returns true if and only if $x is less than or equal to $y, and false
+otherwise.
+
+=item bgt()
+
+    $x -> bgt($y);
+
+Returns true if and only if $x is greater than $y, and false otherwise.
+
+=item bge()
+
+    $x -> bge($y);
+
+Returns true if and only if $x is greater than or equal to $y, and false
+otherwise.
+
+=item blsft()/brsft()
 
 Used to shift numbers left/right.
 
 Please see the documentation in L<Math::BigInt> for further details.
 
-=head2 bpow()
+=item band()
+
+    $x->band($y);               # bitwise and
+
+=item bior()
+
+    $x->bior($y);               # bitwise inclusive or
+
+=item bxor()
+
+    $x->bxor($y);               # bitwise exclusive or
+
+=item bnot()
 
-       $x->bpow($y);
+    $x->bnot();                 # bitwise not (two's complement)
+
+=item bpow()
+
+    $x->bpow($y);
 
 Compute $x ** $y.
 
 Please see the documentation in L<Math::BigInt> for further details.
 
-=head2 bexp()
+=item blog()
+
+    $x->blog($base, $accuracy);         # logarithm of x to the base $base
+
+If C<$base> is not defined, Euler's number (e) is used:
 
-       $x->bexp($accuracy);            # calculate e ** X
+    print $x->blog(undef, 100);         # log(x) to 100 digits
+
+=item bexp()
+
+    $x->bexp($accuracy);        # calculate e ** X
 
 Calculates two integers A and B so that A/B is equal to C<e ** $x>, where C<e> is
 Euler's number.
@@ -2105,65 +2612,63 @@ This method was added in v0.20 of Math::BigRat (May 2007).
 
 See also C<blog()>.
 
-=head2 bnok()
+=item bnok()
 
-       $x->bnok($y);              # x over y (binomial coefficient n over k)
+    $x->bnok($y);               # x over y (binomial coefficient n over k)
 
 Calculates the binomial coefficient n over k, also called the "choose"
 function. The result is equivalent to:
 
-       ( n )      n!
-       | - |  = -------
-       ( k )    k!(n-k)!
+    ( n )      n!
+    | - |  = -------
+    ( k )    k!(n-k)!
 
 This method was added in v0.20 of Math::BigRat (May 2007).
 
-=head2 config()
+=item config()
 
-        use Data::Dumper;
+    use Data::Dumper;
 
-        print Dumper ( Math::BigRat->config() );
-        print Math::BigRat->config()->{lib},"\n";
+    print Dumper ( Math::BigRat->config() );
+    print Math::BigRat->config()->{lib}, "\n";
 
 Returns a hash containing the configuration, e.g. the version number, lib
 loaded etc. The following hash keys are currently filled in with the
 appropriate information.
 
-        key             RO/RW   Description
-                                Example
-        ============================================================
-        lib             RO      Name of the Math library
-                                Math::BigInt::Calc
-        lib_version     RO      Version of 'lib'
-                                0.30
-        class           RO      The class of config you just called
-                                Math::BigRat
-        version         RO      version number of the class you used
-                                0.10
-        upgrade         RW      To which class numbers are upgraded
-                                undef
-        downgrade       RW      To which class numbers are downgraded
-                                undef
-        precision       RW      Global precision
-                                undef
-        accuracy        RW      Global accuracy
-                                undef
-        round_mode      RW      Global round mode
-                                even
-        div_scale       RW      Fallback accuracy for div
-                                40
-        trap_nan        RW      Trap creation of NaN (undef = no)
-                                undef
-        trap_inf        RW      Trap creation of +inf/-inf (undef = no)
-                                undef
+    key             RO/RW   Description
+                            Example
+    ============================================================
+    lib             RO      Name of the Math library
+                            Math::BigInt::Calc
+    lib_version     RO      Version of 'lib'
+                            0.30
+    class           RO      The class of config you just called
+                            Math::BigRat
+    version         RO      version number of the class you used
+                            0.10
+    upgrade         RW      To which class numbers are upgraded
+                            undef
+    downgrade       RW      To which class numbers are downgraded
+                            undef
+    precision       RW      Global precision
+                            undef
+    accuracy        RW      Global accuracy
+                            undef
+    round_mode      RW      Global round mode
+                            even
+    div_scale       RW      Fallback accuracy for div
+                            40
+    trap_nan        RW      Trap creation of NaN (undef = no)
+                            undef
+    trap_inf        RW      Trap creation of +inf/-inf (undef = no)
+                            undef
 
 By passing a reference to a hash you may set the configuration values. This
 works only for values that a marked with a C<RW> above, anything else is
 read-only.
 
-=head2 objectify()
-
-This is an internal routine that turns scalars into objects.
+=back
 
 =head1 BUGS
 
index 3b45058..1ac46e5 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl
 
 # Test that accuracy() and precision() in BigInt/BigFloat do not disturb
 # the rounding force in BigRat.
@@ -12,61 +12,65 @@ use Math::BigInt;
 use Math::BigFloat;
 use Math::BigRat;
 
-my $proper       = Math::BigRat->new('12345678901234567890/2');
-my $proper_inc   = Math::BigRat->new('12345678901234567890/2')->binc();
-my $proper_dec   = Math::BigRat->new('12345678901234567890/2')->bdec();
-my $proper_int   = Math::BigInt->new('12345678901234567890');
-my $proper_float = Math::BigFloat->new('12345678901234567890');
-my $proper2      = Math::BigRat->new('12345678901234567890');
+my $proper       = Math::BigRat   -> new('12345678901234567890/2');
+my $proper_inc   = Math::BigRat   -> new('12345678901234567890/2') -> binc();
+my $proper_dec   = Math::BigRat   -> new('12345678901234567890/2') -> bdec();
+my $proper_int   = Math::BigInt   -> new('12345678901234567890');
+my $proper_float = Math::BigFloat -> new('12345678901234567890');
+my $proper2      = Math::BigRat   -> new('12345678901234567890');
 
-print "# Start\n";
-
-Math::BigInt->accuracy(3);
-Math::BigFloat->accuracy(5);
+Math::BigInt   -> accuracy(3);
+Math::BigFloat -> accuracy(5);
 
 my ($x, $y, $z);
 
 ##############################################################################
 # new()
 
-$z = Math::BigRat->new('12345678901234567890/2');
-is($z, $proper);
+note "Test new()";
 
-$z = Math::BigRat->new('1234567890123456789E1');
-is($z, $proper2);
+$z = Math::BigRat->new("12345678901234567890/2");
+is($z, $proper, q|Math::BigRat->new("12345678901234567890/2")|);
 
-$z = Math::BigRat->new('12345678901234567890/1E0');
-is($z, $proper2);
+$z = Math::BigRat->new("1234567890123456789E1");
+is($z, $proper2, q|Math::BigRat->new("1234567890123456789E1")|);
 
-$z = Math::BigRat->new('1234567890123456789e1/1');
-is($z, $proper2);
+$z = Math::BigRat->new("12345678901234567890/1E0");
+is($z, $proper2, q|Math::BigRat->new("12345678901234567890/1E0")|);
 
-$z = Math::BigRat->new('1234567890123456789e1/1E0');
-is($z, $proper2);
+$z = Math::BigRat->new("1234567890123456789e1/1");
+is($z, $proper2, q|Math::BigRat->new("1234567890123456789e1/1")|);
+
+$z = Math::BigRat->new("1234567890123456789e1/1E0");
+is($z, $proper2, q|Math::BigRat->new("1234567890123456789e1/1E0")|);
 
 $z = Math::BigRat->new($proper_int);
-is($z, $proper2);
+is($z, $proper2, qq|Math::BigRat->new("$proper_int")|);
 
 $z = Math::BigRat->new($proper_float);
-is($z, $proper2);
+is($z, $proper2, qq|Math::BigRat->new("$proper_float")|);
 
 ##############################################################################
 # bdiv
 
-$x = Math::BigRat->new('12345678901234567890');
-$y = Math::BigRat->new('2');
+note "Test bdiv()";
+
+$x = Math::BigRat->new("12345678901234567890");
+$y = Math::BigRat->new("2");
 $z = $x->copy->bdiv($y);
 is($z, $proper);
 
 ##############################################################################
 # bmul
 
+note "Test bmul()";
+
 $x = Math::BigRat->new("$proper");
-$y = Math::BigRat->new('1');
+$y = Math::BigRat->new("1");
 $z = $x->copy->bmul($y);
 is($z, $proper);
 
-$z = Math::BigRat->new('12345678901234567890/1E0');
+$z = Math::BigRat->new("12345678901234567890/1E0");
 is($z, $proper2);
 
 $z = Math::BigRat->new($proper_int);
@@ -78,29 +82,40 @@ is($z, $proper2);
 ##############################################################################
 # bdiv
 
-$x = Math::BigRat->new('12345678901234567890');
-$y = Math::BigRat->new('2');
+note "Test bdiv()";
+
+$x = Math::BigRat->new("12345678901234567890");
+$y = Math::BigRat->new("2");
 $z = $x->copy->bdiv($y);
 is($z, $proper);
 
 ##############################################################################
 # bmul
 
+note "Test bmul()";
+
 $x = Math::BigRat->new("$proper");
-$y = Math::BigRat->new('1');
+$y = Math::BigRat->new("1");
 $z = $x->copy->bmul($y);
 is($z, $proper);
 
 $x = Math::BigRat->new("$proper");
-$y = Math::BigRat->new('2');
+$y = Math::BigRat->new("2");
 $z = $x->copy->bmul($y);
 is($z, $proper2);
 
 ##############################################################################
-# binc/bdec
+# binc
+
+note "Test binc()";
 
 $x = $proper->copy()->binc();
 is($x, $proper_inc);
 
+##############################################################################
+# binc
+
+note "Test bdec()";
+
 $x = $proper->copy()->bdec();
 is($x, $proper_dec);
index 3c46000..4f36bde 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl
 
 use strict;
 use warnings;
index 9d729af..44f5962 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl
 
 # Test blog function (and bpow, since it uses blog), as well as bexp().
 
@@ -22,53 +22,51 @@ my $cl = "Math::BigRat";
 #############################################################################
 # test exp($n)
 
-is ($cl->new(1)->bexp()->as_int(), '2', "bexp(1)");
-is ($cl->new(2)->bexp()->as_int(), '7',"bexp(2)");
-is ($cl->new(3)->bexp()->as_int(), '20', "bexp(3)");
+is($cl->new(1)->bexp()->as_int(), '2',  qq|$cl->new(1)->bexp()->as_int()|);
+is($cl->new(2)->bexp()->as_int(), '7',  qq|$cl->new(1)->bexp()->as_int()|);
+is($cl->new(3)->bexp()->as_int(), '20', qq|$cl->new(1)->bexp()->as_int()|);
 
 # rounding not implemented yet
 #is ($cl->new(3)->bexp(10), '20', "bexp(3,10)");
 
 # $x < 0 => NaN
-ok ($cl->new(-2)->blog(), 'NaN');
-ok ($cl->new(-1)->blog(), 'NaN');
-ok ($cl->new(-10)->blog(), 'NaN');
-ok ($cl->new(-2,2)->blog(), 'NaN');
+is($cl->new(-2)->blog(),   'NaN', qq|$cl->new(-2)->blog()|);
+is($cl->new(-1)->blog(),   'NaN', qq|$cl->new(-1)->blog()|);
+is($cl->new(-10)->blog(),  'NaN', qq|$cl->new(-10)->blog()|);
+is($cl->new(-2,2)->blog(), 'NaN', qq|$cl->new(-2,2)->blog()|);
 
 #############################################################################
 # test bexp() with cached results
 
-is ($cl->new(1)->bexp(),
+is($cl->new(1)->bexp(),
   '90933395208605785401971970164779391644753259799242' . '/' .
   '33452526613163807108170062053440751665152000000000',
   'bexp(1)');
-is ($cl->new(2)->bexp(1,40), $cl->new(1)->bexp(1,45)->bpow(2,40), 'bexp(2)');
+is($cl->new(2)->bexp(1,40), $cl->new(1)->bexp(1,45)->bpow(2,40), 'bexp(2)');
 
-is ($cl->new("12.5")->bexp(1,61), $cl->new(1)->bexp(1,65)->bpow(12.5,61), 'bexp(12.5)');
+is($cl->new("12.5")->bexp(1,61), $cl->new(1)->bexp(1,65)->bpow(12.5,61), 'bexp(12.5)');
 
 #############################################################################
 # test bexp() with big values (non-cached)
 
-is ($cl->new(1)->bexp(1,100)->as_float(100),
+is($cl->new(1)->bexp(1,100)->as_float(100),
   '2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427',
  'bexp(100)');
 
-is ($cl->new("12.5")->bexp(1,91), $cl->new(1)->bexp(1,95)->bpow(12.5,91),
+is($cl->new("12.5")->bexp(1,91), $cl->new(1)->bexp(1,95)->bpow(12.5,91),
   'bexp(12.5) to 91 digits');
 
 #############################################################################
 # some integer results
-is ($cl->new(2)->bpow(32)->blog(2),  '32', "2 ** 32");
-is ($cl->new(3)->bpow(32)->blog(3),  '32', "3 ** 32");
-is ($cl->new(2)->bpow(65)->blog(2),  '65', "2 ** 65");
 
-my $x = Math::BigInt->new( '777' ) ** 256;
+is($cl->new(2)->bpow(32)->blog(2),  '32', "2 ** 32");
+is($cl->new(3)->bpow(32)->blog(3),  '32', "3 ** 32");
+is($cl->new(2)->bpow(65)->blog(2),  '65', "2 ** 65");
+
+my $x    = Math::BigInt->new( '777' ) ** 256;
 my $base = Math::BigInt->new( '12345678901234' );
-is ($x->copy()->blog($base), 56, 'blog(777**256, 12345678901234)');
+is($x->copy()->blog($base), 56, 'blog(777**256, 12345678901234)');
 
 $x = Math::BigInt->new( '777' ) ** 777;
 $base = Math::BigInt->new( '777' );
-is ($x->copy()->blog($base), 777, 'blog(777**777, 777)');
-
-# all done
-1;
+is($x->copy()->blog($base), 777, 'blog(777**777, 777)');
index 7ca3be3..fec6afd 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl
 
 use strict;
 use warnings;
@@ -27,7 +27,7 @@ is($x->isa('Math::BigInt'), 0);
 ##############################################################################
 # new and bnorm()
 
-foreach my $func (qw/new bnorm/) {
+foreach my $func (qw/ new bnorm /) {
     $x = $mbr->$func(1234);
     is($x, 1234, qq|\$x = $mbr->$func(1234)|);
 
@@ -108,50 +108,50 @@ foreach my $func (qw/new bnorm/) {
 my $n = 'numerator';
 my $d = 'denominator';
 
-$x =  $mbr->new('-0');
+$x = $mbr->new('-0');
 is($x, '0');
-        is($x->$n(), '0');
+is($x->$n(), '0');
 is($x->$d(), '1');
 
-$x =  $mbr->new('NaN');
+$x = $mbr->new('NaN');
 is($x, 'NaN');  is($x->$n(), 'NaN');
 is($x->$d(), 'NaN');
 
-$x =  $mbr->new('-NaN');
+$x = $mbr->new('-NaN');
 is($x, 'NaN');  is($x->$n(), 'NaN');
 is($x->$d(), 'NaN');
 
-$x =  $mbr->new('-1r4');
+$x = $mbr->new('-1r4');
 is($x, 'NaN');  is($x->$n(), 'NaN');
 is($x->$d(), 'NaN');
 
-$x =  $mbr->new('+inf');
+$x = $mbr->new('+inf');
 is($x, 'inf');  is($x->$n(), 'inf');
 is($x->$d(), '1');
 
-$x =  $mbr->new('-inf');
+$x = $mbr->new('-inf');
 is($x, '-inf');
 is($x->$n(), '-inf');
 is($x->$d(), '1');
 
-$x =  $mbr->new('123a4');
+$x = $mbr->new('123a4');
 is($x, 'NaN');
 is($x->$n(), 'NaN');
 is($x->$d(), 'NaN');
 
 # wrong inputs
-$x =  $mbr->new('1e2e2');
+$x = $mbr->new('1e2e2');
 is($x, 'NaN');
 is($x->$n(), 'NaN');
 is($x->$d(), 'NaN');
 
-$x =  $mbr->new('1+2+2');
+$x = $mbr->new('1+2+2');
 is($x, 'NaN');
 is($x->$n(), 'NaN');
 is($x->$d(), 'NaN');
 
 # failed due to BigFloat bug
-$x =  $mbr->new('1.2.2');
+$x = $mbr->new('1.2.2');
 is($x, 'NaN');
 is($x->$n(), 'NaN');
 is($x->$d(), 'NaN');
@@ -276,8 +276,8 @@ is($x, '4');
 
 $x = $mbr->new('3/4')->bsqrt();
 is($x,
-   '1732050807568877293527446341505872366943/'
-   .'2000000000000000000000000000000000000000');
+   '4330127018922193233818615853764680917357/' .
+   '5000000000000000000000000000000000000000');
 
 ##############################################################################
 # bpow
index 24f95ee..a5bb947 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl
 
 use strict;
 use warnings;
index 46d68f3..f424486 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl
 
 # Test whether $Math::BigInt::upgrade breaks our neck
 
@@ -33,7 +33,7 @@ is($x->bsqrt(), '3', 'bsqrt(144/16)');
 
 $x = $rat->new('1/3');
 is($x->bsqrt(),
-   '1000000000000000000000000000000000000000/1732050807568877293527446341505872366943',
+   '1443375672974064411272871951254893639119/2500000000000000000000000000000000000000',
    'bsqrt(1/3)');
 
 # all tests successful
index 8a89559..5be7faa 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl
 
 # Test broot function (and bsqrt() function, since it is used by broot()).
 
index a23c5dc..6bd499f 100644 (file)
@@ -3,19 +3,40 @@
 use strict;
 use warnings;
 
-use Test::More tests => 22;
+use Test::More tests => 2602;
 
-use Math::BigRat;
+my @classes = ('Math::BigRat');
 
-my $x = Math::BigRat->new('3/7');
+# We should test all the following operators:
+#
+#     & | ^ << >> &= |= ^= <<= >>=
+#
+# as well as the corresponding methods
+#
+#     band bior bxor blsft brsft
 
-for my $op (qw(& | ^ << >> &= |= ^= <<= >>=)) {
-    my $test = "\$y = \$x $op 42";
-    ok(!eval "my \$y = \$x $op 42; 1", $test);
-    like($@, qr/^bitwise operation \Q$op\E not supported in Math::BigRat/,
-         $test);
-}
+for my $class (@classes) {
+    use_ok($class);
+
+    for my $op (qw( & | ^ )) {
+        for (my $xscalar = 0 ; $xscalar <= 8 ; $xscalar += 0.5) {
+            for (my $yscalar = 0 ; $yscalar <= 8 ; $yscalar += 0.5) {
+
+                my $xint = int $xscalar;
+                my $yint = int $yscalar;
 
-my $test = "\$y = ~\$x";
-ok(!eval "my \$y = ~\$x; 1", $test);
-like($@, qr/^bitwise operation ~ not supported in Math::BigRat/, $test);
+                my $x = $class -> new("$xscalar");
+                my $y = $class -> new("$yscalar");
+
+                my $test     = "$x $op $y";
+                my $expected = eval "$xscalar $op $yscalar";
+                my $got      = eval "\$x $op \$y";
+
+                is($@, '', 'is $@ empty');
+                isa_ok($got, $class, $test);
+                is($got, $expected,
+                   "$x $op $y = $xint $op $yint = $expected");
+            }
+        }
+    }
+}
index 6de22e6..21b9304 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl
 
 # test for bug #34584: hang in exp(1/2)
 
@@ -11,7 +11,7 @@ use Math::BigRat;
 
 my $result = Math::BigRat->new('1/2')->bexp();
 
-is("$result", "9535900335500879457687887524133067574481/5783815921445270815783609372070483523265",
+is("$result", "824360635350064073424325393907081785827/500000000000000000000000000000000000000",
    "exp(1/2) worked");
 
 ##############################################################################
index eba2f66..6788783 100644 (file)
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl
 
 # check that simple requiring BigRat works
 
index a26da9f..0daef7a 100644 (file)
@@ -1,6 +1,6 @@
-#!/usr/bin/perl
+#!perl
 
-# test that config ( trap_nan => 1, trap_inf => 1) really works/dies
+# test that config( trap_nan => 1, trap_inf => 1) really works/dies
 
 use strict;
 use warnings;
@@ -10,67 +10,82 @@ use Test::More tests => 29;
 use Math::BigRat;
 
 my $mbi = 'Math::BigRat';
-my ($cfg,$x);
-
-foreach my $class ($mbi)
-  {
-  # can do and defaults are okay?
-  can_ok ($class, 'config');
-  is ($class->config()->{trap_nan}, 0);
-  is ($class->config()->{trap_inf}, 0);
-
-  # can set?
-  $cfg = $class->config( trap_nan => 1 ); is ($cfg->{trap_nan},1);
-
-  # can set via hash ref?
-  $cfg = $class->config( { trap_nan => 1 } ); is ($cfg->{trap_nan},1);
-
-  # also test that new() still works normally
-  eval ("\$x = \$class->new('42'); \$x->bnan();");
-  like ($@, qr/^Tried to set/);
-  is ($x,42);                          # after new() never modified
-
-  # can reset?
-  $cfg = $class->config( trap_nan => 0 ); is ($cfg->{trap_nan},0);
-
-  # can set?
-  $cfg = $class->config( trap_inf => 1 ); is ($cfg->{trap_inf},1);
-  eval ("\$x = \$class->new('4711'); \$x->binf();");
-  like ($@, qr/^Tried to set/);
-  is ($x,4711);                                # after new() never modified
-
-  # +$x/0 => +inf
-  eval ("\$x = \$class->new('4711'); \$x->bdiv(0);");
-  like ($@, qr/^Tried to set/);
-  is ($x,4711);                                # after new() never modified
-
-  # -$x/0 => -inf
-  eval ("\$x = \$class->new('-0815'); \$x->bdiv(0);");
-  like ($@, qr/^Tried to set/);
-  is ($x,-815);                                # after new() never modified
-
-  $cfg = $class->config( trap_nan => 1 );
-  # 0/0 => NaN
-  eval ("\$x = \$class->new('0'); \$x->bdiv(0);");
-  like ($@, qr/^Tried to set/);
-  is ($x,0);                           # after new() never modified
-  }
+my ($cfg, $x);
+
+foreach my $class ($mbi) {
+
+    # can do and defaults are okay?
+    can_ok($class, 'config');
+    is($class->config()->{trap_nan}, 0, qq|$class->config()->{trap_nan}|);
+    is($class->config()->{trap_inf}, 0, qq|$class->config()->{trap_inf}|);
+
+    # can set?
+    $cfg = $class->config( trap_nan => 1 );
+    is($cfg->{trap_nan}, 1, q|$cfg->{trap_nan}|);
+
+    # can set via hash ref?
+    $cfg = $class->config( { trap_nan => 1 } );
+    is($cfg->{trap_nan}, 1, q|$cfg->{trap_nan}|);
+
+    # also test that new() still works normally
+    eval("\$x = $class->new('42'); \$x->bnan();");
+    like($@, qr/^Tried to set/, "\$x = $class->new('42'); \$x->bnan();");
+    # after new() never modified
+    is($x, 42, "\$x = $class->new('42'); \$x->bnan();");
+
+    # can reset?
+    $cfg = $class->config( trap_nan => 0 );
+    is($cfg->{trap_nan}, 0, q|$cfg->{trap_nan}|);
+
+    # can set?
+    $cfg = $class->config( trap_inf => 1 );
+    is($cfg->{trap_inf}, 1, q|$cfg->{trap_inf}|);
+    eval("\$x = $class->new('4711'); \$x->binf();");
+    like($@, qr/^Tried to set/, "\$x = $class->new('4711'); \$x->binf();");
+    # after new() never modified
+    is($x, 4711, "\$x = $class->new('4711'); \$x->binf();");
+
+    # +$x/0 => +inf
+    eval("\$x =\$class->new('4711'); \$x->bdiv(0);");
+    like($@, qr/^Tried to set/, "\$x =\$class->new('4711'); \$x->bdiv(0);");
+    # after new() never modified
+    is($x, 4711, "\$x =\$class->new('4711'); \$x->bdiv(0);");
+
+    # -$x/0 => -inf
+    eval("\$x = $class->new('-0815'); \$x->bdiv(0);");
+    like($@, qr/^Tried to set/, "\$x = $class->new('-0815'); \$x->bdiv(0);");
+    # after new() never modified
+    is($x, -815, "\$x = $class->new('-0815'); \$x->bdiv(0);");
+
+    $cfg = $class->config( trap_nan => 1 );
+    # 0/0 => NaN
+    eval("\$x = $class->new('0'); \$x->bdiv(0);");
+    like($@, qr/^Tried to set/, "\$x = $class->new('0'); \$x->bdiv(0);");
+    # after new() never modified
+    is($x, 0, "\$x = $class->new('0'); \$x->bdiv(0);");
+}
 
 ##############################################################################
 # BigRat
 
-$cfg = Math::BigRat->config( trap_nan => 1 );
+Math::BigRat->config(trap_nan => 1,
+                     trap_inf => 1);
 
-for my $trap (qw/0.1a +inf inf -inf/)
-  {
-  my $x = Math::BigRat->new('7/4');
+for my $trap (qw/ 0.1a +inf inf -inf /) {
+    my $x = Math::BigRat->new('7/4');
 
-  eval ("\$x = \$mbi->new('$trap');");
-  is ($x,'7/4');                       # never modified since it dies
-  eval ("\$x = \$mbi->new('$trap');");
-  is ($x,'7/4');                       # never modified since it dies
-  eval ("\$x = \$mbi->new('$trap/7');");
-  is ($x,'7/4');                       # never modified since it dies
-  }
+    note("");           # this is just for some space in the output
+
+    # In each of the cases below, $x is not modified, because the code dies.
+
+    eval("\$x = $mbi->new('$trap');");
+    is($x, '7/4', "\$x = $mbi->new('$trap');");
+
+    eval("\$x = $mbi->new('$trap');");
+    is($x, '7/4', "\$x = $mbi->new('$trap');");
+
+    eval("\$x = $mbi->new('$trap/7');");
+    is($x, '7/4', "\$x = $mbi->new('$trap/7');");
+}
 
 # all tests done
index 8135773..5dee700 100644 (file)
@@ -361,7 +361,7 @@ Hello, this is pod.
 
   my $errs;
 
-  my ($vol, $dir, $basename) = File::Spec->splitpath(File::Spec->catdir($tmpdir, "Simple${test_num}", ($test_case->{filename} || 'Simple.pm')));
+  my ($vol, $dir, $basename) = File::Spec->splitpath(File::Spec->catfile($tmpdir, "Simple${test_num}", ($test_case->{filename} || 'Simple.pm')));
   my $pm_info = Module::Metadata->new_from_file(generate_file($dir, $basename, $code));
 
   my $got_name = $pm_info->name;
diff --git a/cpan/Parse-CPAN-Meta/corpus/CL018_yaml.meta b/cpan/Parse-CPAN-Meta/corpus/CL018_yaml.meta
new file mode 100644 (file)
index 0000000..4bbac95
--- /dev/null
@@ -0,0 +1,75 @@
+{
+   "abstract" : "Lexical Analyzer for Perl5",
+   "author" : [
+      "Masaaki Goshima (goccy) <goccy(at)cpan.org>"
+   ],
+   "dynamic_config" : 0,
+   "generated_by" : "Module::Build version 0.4205",
+   "license" : [
+      "perl_5"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : "2"
+   },
+   "name" : "Compiler-Lexer",
+   "no_index" : {
+      "directory" : [
+         "t",
+         "examples",
+         "builder"
+      ]
+   },
+   "prereqs" : {
+      "build" : {
+         "requires" : {
+            "ExtUtils::CBuilder" : "0"
+         }
+      },
+      "configure" : {
+         "requires" : {
+            "Module::Build" : "0.38",
+            "Module::Build::XSUtil" : "0.06"
+         }
+      }
+   },
+   "provides" : {
+      "Compiler::Lexer" : {
+         "file" : "lib/Compiler/Lexer.pm",
+         "version" : "0.18"
+      },
+      "Compiler::Lexer::Kind" : {
+         "file" : "lib/Compiler/Lexer/Constants.pm"
+      },
+      "Compiler::Lexer::SyntaxType" : {
+         "file" : "lib/Compiler/Lexer/Constants.pm"
+      },
+      "Compiler::Lexer::Token" : {
+         "file" : "lib/Compiler/Lexer/Token.pm"
+      },
+      "Compiler::Lexer::TokenType" : {
+         "file" : "lib/Compiler/Lexer/Constants.pm"
+      }
+   },
+   "release_status" : "stable",
+   "resources" : {
+      "bugtracker" : {
+         "web" : "https://github.com/goccy/p5-Compiler-Lexer/issues"
+      },
+      "homepage" : "https://github.com/goccy/p5-Compiler-Lexer",
+      "repository" : {
+         "type" : "git",
+         "url" : "git://github.com/goccy/p5-Compiler-Lexer.git"
+      }
+   },
+   "version" : "0.18",
+   "x_contributors" : [
+      "tokuhirom <tokuhirom@gmail.com>",
+      "Reini Urban <rurban@cpanel.net>",
+      "Fumihiro Itoh <fmhrit@gmail.com>",
+      "Masaaki Goshima <masaaki.goshima@mixi.co.jp>",
+      "moznion <moznion@gmail.com>",
+      "Olivier Mengué <dolmen@cpan.org>",
+      "Masaaki Goshima <goccy54@gmail.com>"
+   ]
+}
index fbe9eca..71bb249 100644 (file)
@@ -25,6 +25,9 @@
    "resources" : {
       "repository" : "git://git.codesimply.com/Version-Requirements.git"
    },
-   "version" : "0.101010"
+   "version" : "0.101010",
+   "x_contributors" : [
+      "Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>"
+   ]
 }
 
index 56d50dd..18b2350 100644 (file)
@@ -20,3 +20,5 @@ requires:
 resources:
   repository: git://git.codesimply.com/Version-Requirements.git
 version: 0.101010
+x_contributors:
+  - 'Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>'
index 7e4f430..85c4f1d 100644 (file)
@@ -19,3 +19,5 @@ requires:
 resources:
   repository: git://git.codesimply.com/Version-Requirements.git
 version: 0.101010
+x_contributors:
+  - 'Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>'
index fbe9eca..71bb249 100644 (file)
@@ -25,6 +25,9 @@
    "resources" : {
       "repository" : "git://git.codesimply.com/Version-Requirements.git"
    },
-   "version" : "0.101010"
+   "version" : "0.101010",
+   "x_contributors" : [
+      "Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>"
+   ]
 }
 
index 56d50dd..18b2350 100644 (file)
@@ -20,3 +20,5 @@ requires:
 resources:
   repository: git://git.codesimply.com/Version-Requirements.git
 version: 0.101010
+x_contributors:
+  - 'Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>'
index 77a0764..027b1fa 100644 (file)
@@ -3,7 +3,7 @@ use strict;
 package Parse::CPAN::Meta;
 # ABSTRACT: Parse META.yml and META.json CPAN metadata files
 
-our $VERSION = '1.4417';
+our $VERSION = '1.4422';
 
 use Exporter;
 use Carp 'croak';
@@ -50,7 +50,10 @@ sub load_yaml_string {
 
 sub load_json_string {
   my ($class, $string) = @_;
-  my $data = eval { $class->json_backend()->new->decode($string) };
+  require Encode;
+  # load_json_string takes characters, decode_json expects bytes
+  my $encoded = Encode::encode('UTF-8', $string, Encode::PERLQQ());
+  my $data = eval { $class->json_decoder()->can('decode_json')->($encoded) };
   croak $@ if $@;
   return $data || {};
 }
@@ -71,10 +74,28 @@ sub yaml_backend {
   }
 }
 
+sub json_decoder {
+  if (my $decoder = $ENV{CPAN_META_JSON_DECODER}) {
+    _can_load( $decoder )
+      or croak "Could not load CPAN_META_JSON_DECODER '$decoder'\n";
+    $decoder->can('decode_json')
+      or croak "No decode_json sub provided by CPAN_META_JSON_DECODER '$decoder'\n";
+    return $decoder;
+  }
+  return $_[0]->json_backend;
+}
+
 sub json_backend {
+  if (my $backend = $ENV{CPAN_META_JSON_BACKEND}) {
+    _can_load( $backend )
+      or croak "Could not load CPAN_META_JSON_BACKEND '$backend'\n";
+    $backend->can('new')
+      or croak "No constructor provided by CPAN_META_JSON_BACKEND '$backend'\n";
+    return $backend;
+  }
   if (! $ENV{PERL_JSON_BACKEND} or $ENV{PERL_JSON_BACKEND} eq 'JSON::PP') {
-    _can_load( 'JSON::PP' => 2.27103 )
-      or croak "JSON::PP 2.27103 is not available\n";
+    _can_load( 'JSON::PP' => 2.27300 )
+      or croak "JSON::PP 2.27300 is not available\n";
     return 'JSON::PP';
   }
   else {
@@ -137,7 +158,7 @@ Parse::CPAN::Meta - Parse META.yml and META.json CPAN metadata files
 
 =head1 VERSION
 
-version 1.4417
+version 1.4422
 
 =head1 SYNOPSIS
 
@@ -235,11 +256,22 @@ for details.
 
   my $backend = Parse::CPAN::Meta->json_backend;
 
-Returns the module name of the JSON serializer.  This will either
-be L<JSON::PP> or L<JSON>.  Even if C<PERL_JSON_BACKEND> is set,
+Returns the module name of the JSON serializer.  If C<CPAN_META_JSON_BACKEND>
+is set, this will be whatever that's set to.  If not, this will either
+be L<JSON::PP> or L<JSON>.  If C<PERL_JSON_BACKEND> is set,
 this will return L<JSON> as further delegation is handled by
 the L<JSON> module.  See L</ENVIRONMENT> for details.
 
+=head2 json_decoder
+
+  my $decoder = Parse::CPAN::Meta->json_decoder;
+
+Returns the module name of the JSON decoder.  Unlike L</json_backend>, this
+is not necessarily a full L<JSON>-style module, but only something that will
+provide a C<decode_json> subroutine.  If C<CPAN_META_JSON_DECODER> is set,
+this will be whatever that's set to.  If not, this will be whatever has
+been selected as L</json_backend>.  See L</ENVIRONMENT> for more notes.
+
 =head1 FUNCTIONS
 
 For maintenance clarity, no functions are exported by default.  These functions
@@ -261,13 +293,35 @@ Reads the YAML stream from a file instead of a string.
 
 =head1 ENVIRONMENT
 
+=head2 CPAN_META_JSON_DECODER
+
+By default, L<JSON::PP> will be used for deserializing JSON data.  If the
+C<CPAN_META_JSON_DECODER> environment variable exists, this is expected to
+be the name of a loadable module that provides a C<decode_json> subroutine,
+which will then be used for deserialization.  Relying only on the existence
+of said subroutine allows for maximum compatibility, since this API is
+provided by all of L<JSON::PP>, L<JSON::XS>, L<Cpanel::JSON::XS>,
+L<JSON::MaybeXS>, L<JSON::Tiny>, and L<Mojo::JSON>.
+
+=head2 CPAN_META_JSON_BACKEND
+
+By default, L<JSON::PP> will be used for deserializing JSON data.  If the
+C<CPAN_META_JSON_BACKEND> environment variable exists, this is expected to
+be the name of a loadable module that provides the L<JSON> API, since
+downstream code expects to be able to call C<new> on this class.  As such,
+while L<JSON::PP>, L<JSON::XS>, L<Cpanel::JSON::XS> and L<JSON::MaybeXS> will
+work for this, to use L<Mojo::JSON> or L<JSON::Tiny> for decoding requires
+setting L</CPAN_META_JSON_DECODER>.
+
 =head2 PERL_JSON_BACKEND
 
-By default, L<JSON::PP> will be used for deserializing JSON data. If the
+If the C<CPAN_META_JSON_BACKEND> environment variable does not exist, and if
 C<PERL_JSON_BACKEND> environment variable exists, is true and is not
 "JSON::PP", then the L<JSON> module (version 2.5 or greater) will be loaded and
 used to interpret C<PERL_JSON_BACKEND>.  If L<JSON> is not installed or is too
-old, an exception will be thrown.
+old, an exception will be thrown.  Note that at the time of writing, the only
+useful values are 1, which will tell L<JSON> to guess, or L<JSON::XS> - if
+you want to use a newer JSON module, see L</CPAN_META_JSON_BACKEND>.
 
 =head2 PERL_YAML_BACKEND
 
@@ -312,12 +366,20 @@ David Golden <dagolden@cpan.org>
 
 =head1 CONTRIBUTORS
 
-=for stopwords Graham Knop Joshua ben Jore Karen Etheridge Neil Bowers Ricardo Signes Steffen Mueller
+=for stopwords Andreas Koenig David Golden Graham Knop Joshua ben Jore Karen Etheridge Matt S Trout Neil Bowers Ricardo Signes Steffen Mueller
 
 =over 4
 
 =item *
 
+Andreas Koenig <andk@cpan.org>
+
+=item *
+
+David Golden <xdg@xdg.me>
+
+=item *
+
 Graham Knop <haarg@haarg.org>
 
 =item *
@@ -330,6 +392,10 @@ Karen Etheridge <ether@cpan.org>
 
 =item *
 
+Matt S Trout <mst@shadowcat.co.uk>
+
+=item *
+
 Neil Bowers <neil@bowers.com>
 
 =item *
@@ -344,7 +410,7 @@ Steffen Mueller <smueller@cpan.org>
 
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2015 by Adam Kennedy and Contributors.
+This software is copyright (c) 2016 by Adam Kennedy and Contributors.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
index 5f94bc7..3f82fc4 100644 (file)
@@ -2,6 +2,8 @@
 
 delete $ENV{PERL_YAML_BACKEND};
 delete $ENV{PERL_JSON_BACKEND};
+delete $ENV{CPAN_META_JSON_BACKEND};
+delete $ENV{CPAN_META_JSON_DECODER};
 
 # Testing of a known-bad file from an editor
 
@@ -17,6 +19,7 @@ use Parse::CPAN::Meta;
 use Parse::CPAN::Meta::Test;
 # use Test::More skip_all => 'Temporarily ignoring failing test';
 use Test::More 'no_plan';
+use utf8;
 
 #####################################################################
 # Testing that Perl::Smith config files work
@@ -47,14 +50,20 @@ my $want = {
      "repository" => "git://git.codesimply.com/Version-Requirements.git"
   },
   "version" => "0.101010",
+  "x_contributors" => [
+    "Dagfinn Ilmari Mannsåker <ilmari\@ilmari.org>",
+  ],
 };
 
 my $meta_json = catfile( test_data_directory(), 'META-VR.json' );
 my $meta_yaml = catfile( test_data_directory(), 'META-VR.yml' );
-my $yaml_meta = catfile( test_data_directory(), 'yaml.meta' );
-my $json_meta = catfile( test_data_directory(), 'json.meta' );
 my $bare_yaml_meta = catfile( test_data_directory(), 'bareyaml.meta' );
 my $bad_yaml_meta = catfile( test_data_directory(), 'BadMETA.yml' );
+my $CL018_yaml_meta = catfile( test_data_directory(), 'CL018_yaml.meta' );
+
+# These test YAML/JSON detection without the typical file name suffix
+my $yaml_meta = catfile( test_data_directory(), 'yaml.meta' );
+my $json_meta = catfile( test_data_directory(), 'json.meta' );
 
 ### YAML tests
 {
@@ -88,7 +97,16 @@ my $bad_yaml_meta = catfile( test_data_directory(), 'BadMETA.yml' );
 
   note '';
   is(Parse::CPAN::Meta->yaml_backend(), 'CPAN::Meta::YAML', 'yaml_backend(): CPAN::Meta::YAML');
-  my $yaml   = load_ok( 'META-VR.yml', $meta_yaml, 100);
+  my $from_yaml = Parse::CPAN::Meta->load_file( $CL018_yaml_meta );
+  like($from_yaml->{x_contributors}[5], qr/Olivier Mengu/, "Open question: what to expect from double encoded UTF-8");
+}
+
+{
+  local $ENV{PERL_YAML_BACKEND}; # ensure we get CPAN::META::YAML
+
+  note '';
+  is(Parse::CPAN::Meta->yaml_backend(), 'CPAN::Meta::YAML', 'yaml_backend(): CPAN::Meta::YAML');
+  my $yaml   = load_ok( $meta_yaml, $meta_yaml, 100, ":encoding(UTF-8)");
   my $from_yaml = Parse::CPAN::Meta->load_yaml_string( $yaml );
   is_deeply($from_yaml, $want, "load from YAML str results in expected data");
 }
@@ -110,7 +128,7 @@ SKIP: {
   local $ENV{PERL_YAML_BACKEND} = 'YAML';
 
   is(Parse::CPAN::Meta->yaml_backend(), 'YAML', 'yaml_backend(): YAML');
-  my $yaml   = load_ok( 'META-VR.yml', $meta_yaml, 100);
+  my $yaml   = load_ok( $meta_yaml, $meta_yaml, 100, ":encoding(UTF-8)");
   my $from_yaml = Parse::CPAN::Meta->load_yaml_string( $yaml );
   is_deeply($from_yaml, $want, "load_yaml_string using PERL_YAML_BACKEND");
 }
@@ -142,7 +160,7 @@ SKIP: {
 
   note '';
   is(Parse::CPAN::Meta->json_backend(), 'JSON::PP', 'json_backend(): JSON::PP');
-  my $json   = load_ok( 'META-VR.json', $meta_json, 100);
+  my $json   = load_ok( $meta_json, $meta_json, 100, "encoding(UTF-8)");
   my $from_json = Parse::CPAN::Meta->load_json_string( $json );
   is_deeply($from_json, $want, "load from JSON str results in expected data");
 }
@@ -153,7 +171,7 @@ SKIP: {
 
   note '';
   is(Parse::CPAN::Meta->json_backend(), 'JSON::PP', 'json_backend(): JSON::PP');
-  my $json   = load_ok( 'META-VR.json', $meta_json, 100);
+  my $json   = load_ok( $meta_json, $meta_json, 100, ":encoding(UTF-8)");
   my $from_json = Parse::CPAN::Meta->load_json_string( $json );
   is_deeply($from_json, $want, "load_json_string with PERL_JSON_BACKEND = 0");
 }
@@ -164,11 +182,25 @@ SKIP: {
 
   note '';
   is(Parse::CPAN::Meta->json_backend(), 'JSON::PP', 'json_backend(): JSON::PP');
-  my $json   = load_ok( 'META-VR.json', $meta_json, 100);
+  my $json   = load_ok( $meta_json, $meta_json, 100, ":encoding(UTF-8)");
   my $from_json = Parse::CPAN::Meta->load_json_string( $json );
   is_deeply($from_json, $want, "load_json_string with PERL_JSON_BACKEND = 'JSON::PP'");
 }
 
+{
+  # JSON tests with fake backend
+  { package MyJSONThingy; $INC{'MyJSONThingy.pm'} = __FILE__; require JSON::PP;
+    sub decode_json { JSON::PP::decode_json(@_) } }
+
+  local $ENV{CPAN_META_JSON_DECODER} = 'MyJSONThingy'; # request fake backend
+
+  note '';
+  is(Parse::CPAN::Meta->json_decoder(), 'MyJSONThingy', 'json_decoder(): MyJSONThingy');
+  my $json   = load_ok( $meta_json, $meta_json, 100, ":encoding(UTF-8)");
+  my $from_json = Parse::CPAN::Meta->load_json_string( $json );
+  is_deeply($from_json, $want, "load_json_string with PERL_JSON_DECODER = 'MyJSONThingy'");
+}
+
 SKIP: {
   note '';
   skip "JSON module version 2.5 not installed", 2
@@ -176,7 +208,7 @@ SKIP: {
   local $ENV{PERL_JSON_BACKEND} = 1;
 
   is(Parse::CPAN::Meta->json_backend(), 'JSON', 'json_backend(): JSON');
-  my $json   = load_ok( 'META-VR.json', $meta_json, 100);
+  my $json   = load_ok( $meta_json, $meta_json, 100, ":encoding(UTF-8)");
   my $from_json = Parse::CPAN::Meta->load_json_string( $json );
   is_deeply($from_json, $want, "load_json_string with PERL_JSON_BACKEND = 1");
 }
index b6bb4f7..e63920b 100644 (file)
@@ -60,10 +60,12 @@ sub yaml_error {
 
 sub slurp {
        my $file = shift;
+       my $layer = shift;
+       $layer = "" unless defined $layer;
        local $/ = undef;
-       open( FILE, " $file" ) or die "open($file) failed: $!";
-       my $source = <FILE>;
-       close( FILE ) or die "close($file) failed: $!";
+       open my $fh, "<$layer", $file or die "open($file) failed: $!";
+       my $source = <$fh>;
+       close( $fh ) or die "close($file) failed: $!";
        $source;
 }
 
@@ -71,9 +73,10 @@ sub load_ok {
        my $name = shift;
        my $file = shift;
        my $size = shift;
+       my $layer = shift;
        Test::More::ok( -f $file, "Found $name" ) or Test::More::diag("Searched at '$file'");
        Test::More::ok( -r $file, "Can read $name" );
-       my $content = slurp( $file );
+       my $content = slurp( $file, $layer );
        Test::More::ok( (defined $content and ! ref $content), "Loaded $name" );
        Test::More::ok( ($size < length $content), "Content of $name larger than $size bytes" );
        return $content;
index 8a91577..a72dd02 100644 (file)
@@ -4,7 +4,7 @@ use warnings;
 package Perl::OSType;
 # ABSTRACT: Map Perl operating system names to generic types
 
-our $VERSION = '1.009';
+our $VERSION = '1.010';
 
 require Exporter;
 our @ISA = qw(Exporter);
@@ -47,6 +47,7 @@ my %OSTYPES = qw(
   solaris     Unix
   sunos       Unix
   cygwin      Unix
+  msys        Unix
   os2         Unix
   interix     Unix
   gnu         Unix
@@ -96,7 +97,7 @@ Perl::OSType - Map Perl operating system names to generic types
 
 =head1 VERSION
 
-version 1.009
+version 1.010
 
 =head1 SYNOPSIS
 
@@ -175,7 +176,7 @@ David Golden <dagolden@cpan.org>
 
 =head1 CONTRIBUTORS
 
-=for stopwords Chris 'BinGOs' Williams Jonas B. Nielsen Owain G. Ainsworth Paul Green Piotr Roszatycki
+=for stopwords Chris 'BinGOs' Williams David Golden Graham Ollis Jonas B. Nielsen Owain G. Ainsworth Paul Green Piotr Roszatycki
 
 =over 4
 
@@ -185,6 +186,14 @@ Chris 'BinGOs' Williams <chris@bingosnet.co.uk>
 
 =item *
 
+David Golden <xdg@xdg.me>
+
+=item *
+
+Graham Ollis <plicease@cpan.org>
+
+=item *
+
 Jonas B. Nielsen <jonasbn@hoarfrost.local>
 
 =item *
@@ -203,7 +212,7 @@ Piotr Roszatycki <piotr.roszatycki@gmail.com>
 
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2015 by David Golden.
+This software is copyright (c) 2016 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.
index 6e0c88e..2a1be72 100644 (file)
@@ -4,7 +4,7 @@ use 5.006;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 BEGIN {
     if( $] < 5.008 ) {
@@ -51,7 +51,7 @@ sub _add_ts_hooks {
 
     #$hub->add_context_aquire(sub {$_[0]->{level} += $Level - 1});
 
-    $hub->filter(sub {
+    $hub->pre_filter(sub {
         my ($active_hub, $e) = @_;
 
         my $epkg = $$epkgr;
@@ -65,12 +65,11 @@ sub _add_ts_hooks {
 
         return $e unless $todo;
 
-
         # Turn a diag into a todo diag
         return Test::Builder::TodoDiag->new(%$e) if ref($e) eq 'Test2::Event::Diag';
 
         # Set todo on ok's
-        if ($hub == $active_hub && $e->isa('Test2::Event::Ok')) {
+        if ($e->isa('Test2::Event::Ok')) {
             $e->set_todo($todo);
             $e->set_effective_pass(1);
 
@@ -82,7 +81,7 @@ sub _add_ts_hooks {
         }
 
         return $e;
-    });
+    }, inherit => 1);
 }
 
 sub new {
@@ -177,14 +176,14 @@ sub child {
         class => 'Test2::Hub::Subtest',
     );
 
-    $hub->filter(sub {
+    $hub->pre_filter(sub {
         my ($active_hub, $e) = @_;
 
         # Turn a diag into a todo diag
         return Test::Builder::TodoDiag->new(%$e) if ref($e) eq 'Test2::Event::Diag';
 
         return $e;
-    }) if $orig_TODO;
+    }, inherit => 1) if $orig_TODO;
 
     $hub->listen(sub { push @$subevents => $_[1] });
 
@@ -1456,7 +1455,7 @@ sub todo_start {
     my $ctx = $self->ctx;
 
     my $hub = $ctx->hub;
-    my $filter = $hub->filter(sub {
+    my $filter = $hub->pre_filter(sub {
         my ($active_hub, $e) = @_;
 
         # Turn a diag into a todo diag
@@ -1493,7 +1492,7 @@ sub todo_end {
 
     $ctx->throw('todo_end() called without todo_start()') unless $set;
 
-    $ctx->hub->unfilter($set->[0]);
+    $ctx->hub->pre_unfilter($set->[0]);
 
     $ctx->release;
 
index bfa429a..389597f 100644 (file)
@@ -2,7 +2,7 @@ package Test::Builder::Formatter;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 BEGIN { require Test2::Formatter::TAP; our @ISA = qw(Test2::Formatter::TAP) }
 
index fbdcdc2..a1434f5 100644 (file)
@@ -7,7 +7,7 @@ use Test::Builder;
 require Exporter;
 our @ISA = qw(Exporter);
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 =head1 NAME
index 3fcf665..de5e5e6 100644 (file)
@@ -1,7 +1,7 @@
 package Test::Builder::Tester;
 
 use strict;
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 use Test::Builder;
 use Symbol;
index 8ed6c50..c28e5ad 100644 (file)
@@ -1,7 +1,7 @@
 package Test::Builder::Tester::Color;
 
 use strict;
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 require Test::Builder::Tester;
 
index 379ec3b..b716af9 100644 (file)
@@ -2,7 +2,7 @@ package Test::Builder::TodoDiag;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 BEGIN { require Test2::Event::Diag; our @ISA = qw(Test2::Event::Diag) }
 
diff --git a/cpan/Test-Simple/lib/Test/FAQ.pod b/cpan/Test-Simple/lib/Test/FAQ.pod
deleted file mode 100644 (file)
index 5de8d16..0000000
+++ /dev/null
@@ -1,371 +0,0 @@
-=pod
-
-=head1 NAME
-
-Test::FAQ - Frequently Asked Questions about testing with Perl
-
-=head1 DESCRIPTION
-
-Frequently Asked Questions about testing in general and specific
-issues with Perl.
-
-=head2 Is there any tutorial on testing?
-
-L<Test::Tutorial>
-
-=head2 Are there any modules for testing?
-
-A whole bunch.  Start with L<Test::Simple> then move onto Test::More.
-
-Then go onto L<http://search.cpan.org> and search for "Test".
-
-=head2 Are there any modules for testing web pages/CGI programs?
-
-L<Test::WWW::Mechanize>, L<Test::WWW::Selenium>
-
-=head2 Are there any modules for testing external programs?
-
-L<Test::Cmd>
-
-=head2 Can you do xUnit/JUnit style testing in Perl?
-
-Yes, L<Test::Class> allows you to write test methods while continuing to
-use all the usual CPAN testing modules.  It is the best and most
-perlish way to do xUnit style testing.
-
-L<Test::Unit> is a more direct port of xUnit to Perl, but it does not use
-the Perl conventions and does not play well with other CPAN testing
-modules.  As of this writing, it is abandoned.  B<Do not use>.
-
-The L<Test::Inline> (aka L<Pod::Tests>) is worth mentioning as it allows you to
-put tests into the POD in the same file as the code.
-
-
-=head2 How do I test my module is backwards/forwards compatible?
-
-First, install a bunch of perls of commonly used versions.  At the
-moment, you could try these
-
-    5.7.2
-    5.6.1
-    5.005_03
-    5.004_05
-
-if you're feeling brave, you might want to have on hand these
-
-    bleadperl
-    5.6.0
-    5.004_04
-    5.004
-
-going back beyond 5.003 is probably beyond the call of duty.
-
-You can then add something like this to your F<Makefile.PL>.  It
-overrides the L<ExtUtils::MakeMaker> C<test_via_harness()> method to run the tests
-against several different versions of Perl.
-
-    # If PERL_TEST_ALL is set, run "make test" against 
-    # other perls as well as the current perl.
-    {
-        package MY;
-
-        sub test_via_harness {
-            my($self, $orig_perl, $tests) = @_;
-
-            # names of your other perl binaries.
-            my @other_perls = qw(perl5.004_05 perl5.005_03 perl5.7.2);
-
-            my @perls = ($orig_perl);
-            push @perls, @other_perls if $ENV{PERL_TEST_ALL};
-
-            my $out;
-            foreach my $perl (@perls) {
-                $out .= $self->SUPER::test_via_harness($perl, $tests);
-            }
-
-            return $out;
-        }
-    }
-
-and re-run your F<Makefile.PL> with the C<PERL_TEST_ALL> environment
-variable set
-
-    PERL_TEST_ALL=1 perl Makefile.PL
-
-now C<make test> will run against each of your other perls.
-
-
-=head2 If I'm testing Foo::Bar, where do I put tests for Foo::Bar::Baz?
-
-=head2 How do I know when my tests are good enough?
-
-A: Use tools for measuring the code coverage of your tests, e.g. how many of
-your source code lines/subs/expressions/paths are executed (aka covered) by
-the test suite. The more, the better, of course, although you may not
-be able achieve 100%. If your testsuite covers under 100%, then
-the rest of your code is, basically, untested. Which means it may work in
-surprising ways (e.g. doesn't do things like they are intended or
-documented), have bugs (e.g. return wrong results) or it may not work at
-all.
-
-=head2 How do I measure the coverage of my test suite?
-
-L<Devel::Cover>
-
-=head2 How do I get tests to run in a certain order?
-
-Tests run in alphabetical order, so simply name your test files in the order
-you want them to run.  Numbering your test files works, too.
-
-    t/00_compile.t
-    t/01_config.t
-    t/zz_teardown.t
-
-0 runs first, z runs last.
-
-To achieve a specific order, try L<Test::Manifest>.
-
-Typically you do B<not> want your tests to require being run in a
-certain order, but it can be useful to do a compile check first or to
-run the tests on a very basic module before everything else.  This
-gives you early information if a basic module fails which will bring
-everything else down.
-
-Another use is if you have a suite wide setup/teardown, such as
-creating and delete a large test database, which may be too
-expensive to do for every test.
-
-We recommend B<against> numbering every test file.  For most files
-this ordering will be arbitrary and the leading number obscures the
-real name of the file.  See L<What should I name my test files?> for
-more information.
-
-
-=head2 What should I name my tests?
-
-=head2 What should I name my test files?
-
-A test filename serves three purposes:
-
-Most importantly, it serves to identify what is being tested.  Each
-test file should test a clear piece of functionality.  This could be
-at single class, a single method, even a single bug.
-
-The order in which tests are run is usually dictated by the filename.
-See L<How do I get tests to run in a certain order?> for details.
-
-Finally, the grouping of tests into common bits of functionality can
-be achieved by directory and filenames.  For example, all the tests
-for L<Test::Builder> are in the F<t/Builder/> directory.
-
-As an example, F<t/Builder/reset.t> contains the tests for
-C<< Test::Builder->reset >>.  F<t/00compile.t> checks that everything
-compiles, and it will run first.  F<t/dont_overwrite_die_handler.t>
-checks that we don't overwrite the C<< $SIG{__DIE__} >> handler.
-
-
-=head2 How do I deal with tests that sometimes pass and sometimes fail?
-
-=head2 How do I test with a database/network/server that the user may or may not have?
-
-=head2 What's a good way to test lists?
-
-C<is_deeply()> from L<Test::More> as well as L<Test::Deep>.
-
-=head2 Is there such a thing as untestable code?
-
-There's always compile/export checks.
-
-Code must be written with testability in mind.  Separation of form and
-functionality.
-
-=head2 What do I do when I can't make the code do the same thing twice?
-
-Force it to do the same thing twice.
-
-Even a random number generator can be tested.
-
-=head2 How do I test a GUI?
-
-=head2 How do I test an image generator?
-
-=head2 How do I test that my code handles failures gracefully?
-
-=head2 How do I check the right warnings are issued?
-
-L<Test::Warn>
-
-=head2 How do I test code that prints?
-
-L<Test::Output>
-
-=head2 I want to test that my code dies when I do X
-
-L<Test::Exception>
-
-=head2 I want to print out more diagnostic info on failure.
-
-C<ok(...) || diag "...";>
-
-=head2 How can I simulate failures to make sure that my code does the Right Thing in the face of them?
-
-
-=head2 Why use an ok() function?
-
-On Tue, Aug 28, 2001 at 02:12:46PM +0100, Robin Houston wrote:
-> Michael Schwern wrote:
-> > Ah HA!  I've been wondering why nobody ever thinks to write a simple
-> > ok() function for their tests!  perlhack has bad testing advice.
-> 
-> Could you explain the advantage of having a "simple ok() function"?
-
-Because writing:
-
-    print "not " unless some thing worked;
-    print "ok $test\n";  $test++;
-
-gets rapidly annoying.  This is why we made up subroutines in the
-first place.  It also looks like hell and obscures the real purpose.
-
-Besides, that will cause problems on VMS.
-
-
-> As somebody who has spent many painful hours debugging test failures,
-> I'm intimately familiar with the _disadvantages_. When you run the
-> test, you know that "test 113 failed". That's all you know, in general.
-
-Second advantage is you can easily upgrade the C<ok()> function to fix
-this, either by slapping this line in:
-
-        printf "# Failed test at line %d\n", (caller)[2];
-
-or simply junking the whole thing and switching to L<Test::Simple> or
-L<Test::More>, which does all sorts of nice diagnostics-on-failure for
-you.  Its C<ok()> function is backwards compatible with the above.
-
-There's some issues with using L<Test::Simple> to test really basic Perl
-functionality, you have to choose on a per test basis.  Since
-L<Test::Simple> doesn't use C<pack()> it's safe for F<t/op/pack.t> to use
-L<Test::Simple>.  I just didn't want to make the perlhack patching
-example too complicated.
-
-
-=head2 Dummy Mode
-
-> One compromise would be to use a test-generating script, which allows
-> the tests to be structured simply and _generates_ the actual test
-> code. One could then grep the generated test script to locate the
-> failing code.
-
-This is a very interesting, and very common, response to the problem.
-I'm going to make some observations about reactions to testing,
-they're not specific to you.
-
-If you've ever read the Bastard Operator From Hell series, you'll
-recall the Dummy Mode.
-
-    The words "power surging" and "drivers" have got her.  People hear
-    words like that and go into Dummy Mode and do ANYTHING you say.  I
-    could tell her to run naked across campus with a powercord rammed
-    up her backside and she'd probably do it...  Hmmm...
-
-There seems to be a Dummy Mode with respect to testing.  An otherwise competent
-person goes to write a test and they suddenly forget all basic
-programming practice.
-
-
-The reasons for using an C<ok()> function above are the same reasons to
-use functions in general, we should all know them.  We'd laugh our
-heads off at code that repeated as much as your average test does.
-These are newbie mistakes.
-
-And the normal 'can do' flair seems to disappear.  I know Robin.  I
-*know* that in any other situation he would have come up with the
-C<caller()> trick in about 15 seconds flat.  Instead weird, elaborate,
-inelegant hacks are thought up to solve the simplest problems.
-
-
-I guess there are certain programming idioms that are foreign enough
-to throw your brain into reverse if you're not ready for them.  Like
-trying to think in Lisp, for example.  Or being presented with OO for
-the first time.  I guess writing test is one of those.
-
-
-=head2 How do I use Test::More without depending on it?
-
-Install L<Test::More> into F<t/lib> under your source directory.  Then in your tests
-say C<use lib 't/lib'>.
-
-=head2 How do I deal with threads and forking?
-
-=head2 Why do I need more than ok?
-
-Since every test can be reduced to checking if a statement is true,
-C<ok()> can test everything.  But C<ok()> doesn't tell you why the test
-failed.  For that you need to tell the test more... which is why 
-you need L<Test::More>.
-
-    ok $pirate->name eq "Roberts", "person's name";
-
-    not ok 1 - person's name
-    # Failed test at pirates.t line 23.
-
-If the above fails, you don't know what C<< $person->name >> returned.
-You have to go in and add a C<diag> call.  This is time consuming.  If
-it's a heisenbug, it might not fail again!  If it's a user reporting a
-test failure, they might not be bothered to hack the tests to give you
-more information.
-
-    is $person->name, "Roberts", "person's name";
-
-    not ok 1 - person's name
-    # Failed test at pirates.t line 23.
-    #        got: 'Wesley'
-    #   expected: 'Roberts'
-
-Using C<is> from L<Test::More> you now know what value you got and
-what value you expected.
-
-The most useful functions in L<Test::More> are C<is()>, C<like()> and C<is_deeply()>.
-
-
-=head2 What's wrong with C<print $test ? "ok" : "not ok">?
-
-=head2 How do I check for an infinite loop?
-
-On Mon, Mar 18, 2002 at 03:57:55AM -0500, Mark-Jason Dominus wrote:
-> 
-> Michael The Schwern <schwern@pobox.com> says:
-> > Use alarm and skip the test if $Config{d_alarm} is false (see
-> > t/op/alarm.t for an example).  If you think the infinite loop is due
-> > to a programming glitch, as opposed to a cross-platform issue, this
-> > will be enough.
-> 
-> Thanks very much!
-> 
-
-=head2 How can I check that flock works?
-
-=head2 How do I use the comparison functions of a testing module without it being a test?
-
-Any testing function based on L<Test::Builder>, most are, can be quieted so it does
-not do any testing.  It simply returns true or false.  Use the following code...
-
-    use Test::More;     # or any testing module
-    
-    use Test::Builder;
-    use File::Spec;
-
-    # Get the internal Test::Builder object
-    my $tb = Test::Builder->new;
-
-    $tb->plan("no_plan");
-    
-    # Keep Test::Builder from displaying anything
-    $tb->no_diag(1);
-    $tb->no_ending(1);
-    $tb->no_header(1);
-    $tb->output( File::Spec->devnull );
-
-    # Now you can use the testing function.
-    print is_deeply( "foo", "bar" ) ? "Yes" : "No";
index 275de7a..66208c4 100644 (file)
@@ -17,7 +17,7 @@ sub _carp {
     return warn @_, " at $file line $line\n";
 }
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 use Test::Builder::Module;
 our @ISA    = qw(Test::Builder::Module);
@@ -724,7 +724,7 @@ sub new_ok {
 
 =item B<subtest>
 
-    subtest $name => \&code;
+    subtest $name => \&code, @args;
 
 C<subtest()> runs the &code as its own little test with its own plan and
 its own result.  The main test counts this as a single test using the
@@ -783,11 +783,20 @@ subtests are equivalent:
       done_testing();
   };
 
+Extra arguments given to C<subtest> are passed to the callback. For example:
+
+    sub my_subtest {
+        my $range = shift;
+        ...
+    }
+
+    for my $range (1, 10, 100, 1000) {
+        subtest "testing range $range", \&my_subtest, $range;
+    }
+
 =cut
 
 sub subtest {
-    my ($name, $subtests) = @_;
-
     my $tb = Test::More->builder;
     return $tb->subtest(@_);
 }
index d42f401..273eee7 100644 (file)
@@ -4,7 +4,7 @@ use 5.006;
 
 use strict;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 use Test::Builder::Module;
 our @ISA    = qw(Test::Builder::Module);
index 28a3acb..adbaac9 100644 (file)
@@ -18,7 +18,7 @@ require Exporter;
 
 use vars qw( @ISA @EXPORT );
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 @EXPORT = qw( run_tests check_tests check_test cmp_results show_space );
 @ISA = qw( Exporter );
index d486dca..5a440c7 100644 (file)
@@ -2,7 +2,7 @@ use strict;
 
 package Test::Tester::Capture;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Test::Builder;
index 3b0d688..4c282bf 100644 (file)
@@ -3,7 +3,7 @@ use strict;
 
 package Test::Tester::CaptureRunner;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Test::Tester::Capture;
index 8b1f167..d331496 100644 (file)
@@ -3,7 +3,7 @@ use warnings;
 
 package Test::Tester::Delegate;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use vars '$AUTOLOAD';
index 769b30f..e1e4b98 100644 (file)
@@ -1,7 +1,7 @@
 package Test::use::ok;
 use 5.005;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 __END__
index 3f4c819..c67ad19 100644 (file)
@@ -2,7 +2,7 @@ package Test2;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 1;
index 55e359a..6f91667 100644 (file)
@@ -2,7 +2,7 @@ package Test2::API;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 my $INST;
@@ -416,8 +416,9 @@ sub intercept(&) {
 sub run_subtest {
     my ($name, $code, $params, @args) = @_;
 
-    $params = { buffered => $params } unless ref $params;
-    my $buffered = delete $params->{buffered};
+    $params = {buffered => $params} unless ref $params;
+    my $buffered      = delete $params->{buffered};
+    my $inherit_trace = delete $params->{inherit_trace};
 
     my $ctx = context();
 
@@ -442,6 +443,17 @@ sub run_subtest {
         }
     }
 
+    if ($inherit_trace) {
+        my $orig = $code;
+        $code = sub {
+            my $st_ctx = Test2::API::Context->new(
+                trace => $ctx->trace,
+                hub   => $hub,
+            );
+            $st_ctx->do_in_context($orig, @args);
+        };
+    }
+
     my ($ok, $err, $finished);
     T2_SUBTEST_WRAPPER: {
         # Do not use 'try' cause it localizes __DIE__
@@ -534,9 +546,9 @@ publicly exposed.
 
 This is done primarily to avoid the problems Test::Builder had by exposing its
 singleton. We do not want anyone to replace this singleton, rebless it, or
-directly muck with its internals. If you need to do something, and cannot
-because of the restrictions placed here then please report it as an issue. If
-possible we will create a way for you to implement your functionality without
+directly muck with its internals. If you need to do something and cannot
+because of the restrictions placed here, then please report it as an issue. If
+possible, we will create a way for you to implement your functionality without
 exposing things that should not be exposed.
 
 =head1 DESCRIPTION
@@ -611,13 +623,13 @@ generated by the test system:
 
 =head1 MAIN API EXPORTS
 
-All exports are optional, you must specify subs to import.
+All exports are optional. You must specify subs to import.
 
     use Test2::API qw/context intercept run_subtest/;
 
 This is the list of exports that are most commonly needed. If you are simply
-writing a tool then this is probably all you need. If you need something and
-you cannot find it here then you can also look at L</OTHER API EXPORTS>.
+writing a tool, then this is probably all you need. If you need something and
+you cannot find it here, then you can also look at L</OTHER API EXPORTS>.
 
 These exports lack the 'test2_' prefix because of how important/common they
 are. Exports in the L</OTHER API EXPORTS> section have the 'test2_' prefix to
@@ -635,9 +647,9 @@ Usage:
 
 =back
 
-The C<context()> function will always return the current context to you. If
-there is already a context active it will be returned. If there is not an
-active context one will be generated. When a context is generated it will
+The C<context()> function will always return the current context. If
+there is already a context active, it will be returned. If there is not an
+active context, one will be generated. When a context is generated it will
 default to using the file and line number where the currently running sub was
 called from.
 
@@ -697,7 +709,7 @@ with the intent that it should return a context object.
         $ctx->release;
     }
 
-If you do not do this than tools you call that also check for a context will
+If you do not do this, then tools you call that also check for a context will
 notice that the context they grabbed was created at the same stack depth, which
 will trigger protective measures that warn you and destroy the existing
 context.
@@ -738,7 +750,7 @@ the callback will be the context object itself.
 
 This lets you provide a callback sub that will be called when the context
 instance is released. This callback will be added to the returned context even
-if an existing context is returned. If multiple calls to context add callbacks
+if an existing context is returned. If multiple calls to context add callbacks,
 then all will be called in reverse order when the context is finally released.
 
     sub foo {
@@ -818,7 +830,7 @@ will ensure a context is acquired. It will capture and rethrow any exception. It
 will insure the context is released when you are done. It preserves the
 subroutine call context (array, scalar, void).
 
-This is the safest way to write a test tool. The only 2 downsides to this are a
+This is the safest way to write a test tool. The only two downsides to this are a
 slight performance decrease, and some extra indentation in your source. If the
 indentation is a problem for you then you can take a peek at the next section.
 
@@ -909,10 +921,26 @@ The code to run inside the subtest.
 If this is a simple scalar then it will be treated as a boolean for the
 'buffered' setting. If this is a hash reference then it will be used as a
 parameters hash. The param hash will be used for hub construction (with the
-'buffered' key removed).
+specified keys removed).
+
+Keys that are removed and used by run_subtest:
+
+=over 4
 
-If this is true, or a hashref with a true value for the 'buffered' key, then
-the subtest will be buffered.
+=item 'buffered' => $bool
+
+Toggle buffered status.
+
+=item 'inherit_trace' => $bool
+
+Normally the subtest hub is pushed and the sub is allowed to generate its own
+root context for the hub. When this setting is turned on a root context will be
+created for the hub that shares the same trace as the current context.
+
+Set this to true if your tool is producing subtests without user-specified
+subs.
+
+=back
 
 =item @ARGS
 
@@ -936,7 +964,7 @@ eventually used to populate the C<subevents> attribute on the
 L<Test2::Event::Subtest> event that is generated at the end of the subtest.
 This flag has no effect on this part, it always happens.
 
-At the end of the subtest the final L<Test2::Event::Subtest> event is sent to
+At the end of the subtest, the final L<Test2::Event::Subtest> event is sent to
 the formatter.
 
 =item Things that are effected by this flag
@@ -960,11 +988,12 @@ sent independently of the final subtest event.
 
 An example of how this is used is the L<Test2::Formatter::TAP> formatter. For
 unbuffered subtests the events are rendered as they are generated. At the end
-of the subtest the final subtest event is rendered, but the C<subevents>
+of the subtest, the final subtest event is rendered, but the C<subevents>
 attribute is ignored. For buffered subtests the opposite occurs, the events are
 NOT rendered as they are generated, instead the C<subevents> attribute is used
 to render them all at once. This is useful when running subtests tests in
-parallel, without it the subtests would be garbled.
+parallel, since without it the output from subtests would be interleaved
+together.
 
 =head1 OTHER API EXPORTS
 
@@ -974,7 +1003,7 @@ EXPORTS> section before looking here. This section is one where "Great power
 comes with great responsibility". It is possible to break things badly if you
 are not careful with these.
 
-All exports are optional, you need to list which ones you want at import time:
+All exports are optional. You need to list which ones you want at import time:
 
     use Test2::API qw/test2_init_done .../;
 
@@ -988,7 +1017,7 @@ These provide access to internal state and object instances.
 
 This will return true if the stack and IPC instances have already been
 initialized. It will return false if they have not. Init happens as late as
-possible, it happens as soon as a tool requests the IPC instance, the
+possible. It happens as soon as a tool requests the IPC instance, the
 formatter, or the stack.
 
 =item $bool = test2_load_done()
@@ -1011,7 +1040,7 @@ multiple END phases.
 
 =item $bool = test2_get_is_end()
 
-Check if test2 believes it is the END phase.
+Check if Test2 believes it is the END phase.
 
 =item $stack = test2_stack()
 
@@ -1065,7 +1094,7 @@ If Test2 has already finished loading then the callback will be run immediately.
 
 Add a callback that will be called every time someone tries to acquire a
 context. This will be called on EVERY call to C<context()>. It gets a single
-argument, a reference the the hash of parameters being used the construct the
+argument, a reference to the hash of parameters being used the construct the
 context. This is your chance to change the parameters by directly altering the
 hash.
 
index 7f99fa4..580e091 100644 (file)
@@ -2,7 +2,7 @@ package Test2::API::Breakage;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Test2::Util qw/pkg_to_file/;
@@ -30,6 +30,7 @@ sub upgrade_required {
         'Test::Modern'            => '0.012',
         'Test::SharedFork'        => '0.34',
         'Test::Alien'             => '0.04',
+        'Test::UseAllModules'     => '0.14',
 
         'Test::Clustericious::Cluster' => '0.30',
     );
index a7939e3..6e9362f 100644 (file)
@@ -2,7 +2,7 @@ package Test2::API::Context;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Carp qw/confess croak longmess/;
@@ -19,7 +19,7 @@ my %LOADED = (
         my $file = "Test2/Event/$_.pm";
         require $file unless $INC{$file};
         ( $pkg => $pkg, $_ => $pkg )
-    } qw/Ok Diag Note Plan Bail Exception Waiting Skip Subtest/
+    } qw/Ok Diag Note Info Plan Bail Exception Waiting Skip Subtest/
 );
 
 use Test2::Util::ExternalMeta qw/meta get_meta set_meta delete_meta/;
@@ -224,7 +224,7 @@ sub build_event {
 
 sub ok {
     my $self = shift;
-    my ($pass, $name, $diag) = @_;
+    my ($pass, $name, $on_fail) = @_;
 
     my $hub = $self->{+HUB};
 
@@ -240,8 +240,15 @@ sub ok {
 
     $self->failure_diag($e);
 
-    if ($diag && @$diag) {
-        $self->diag($_) for @$diag
+    if ($on_fail && @$on_fail) {
+        for my $of (@$on_fail) {
+            if (ref($of)) {
+                $self->info($of, diagnostics => 1);
+            }
+            else {
+                $self->diag($of);
+            }
+        }
     }
 
     return $e;
@@ -286,6 +293,12 @@ sub skip {
     );
 }
 
+sub info {
+    my $self = shift;
+    my ($renderer, %params) = @_;
+    $self->send_event('Info', renderer => $renderer, %params);
+}
+
 sub note {
     my $self = shift;
     my ($message) = @_;
@@ -537,15 +550,21 @@ The value of C<$@> when the context was created.
 
 =item $event = $ctx->ok($bool, $name)
 
-=item $event = $ctx->ok($bool, $name, \@diag)
+=item $event = $ctx->ok($bool, $name, \@on_fail)
 
 This will create an L<Test2::Event::Ok> object for you. If C<$bool> is false
 then an L<Test2::Event::Diag> event will be sent as well with details about the
 failure. If you do not want automatic diagnostics you should use the
 C<send_event()> method directly.
 
-The C<\@diag> can contain diagnostics messages you wish to have displayed in the
-event of a failure. For a passing test the diagnostics array will be ignored.
+The third argument C<\@on_fail>) is an optional set of diagnostics to be sent in
+the event of a test failure. Plain strings will be sent as
+L<Test2::Event::Diag> events. References will be used to construct
+L<Test2::Event::Info> events with C<< diagnostics => 1 >>.
+
+=item $event = $ctx->info($renderer, diagnostics => $bool, %other_params)
+
+Send an L<Test2::Event::Info>.
 
 =item $event = $ctx->note($message)
 
index 8938040..7275e18 100644 (file)
@@ -2,7 +2,7 @@ package Test2::API::Instance;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 our @CARP_NOT = qw/Test2::API Test2::API::Instance Test2::IPC::Driver Test2::Formatter/;
index c6478d1..ec19553 100644 (file)
@@ -2,7 +2,7 @@ package Test2::API::Stack;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Test2::Hub();
index d350210..83365b5 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Test2::Util::HashBase qw/trace nested in_subtest subtest_id/;
@@ -142,8 +142,8 @@ instead so that a harness will hide it outside of verbose mode.
 =item $msg = $e->summary
 
 This is intended to be a human readable summary of the event. This should
-ideally only be 1-line long, but you can use multiple lines if necessary. This
-is intended for human consumption, you do not need to make it easy for machines
+ideally only be one line long, but you can use multiple lines if necessary. This
+is intended for human consumption. You do not need to make it easy for machines
 to understand.
 
 The default is to simply return the event package name.
index 4f8ae0f..44688b3 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Bail;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
index c50e9a9..afb4d6f 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Diag;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
index 1280ada..5e914fc 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Exception;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
index 92b04fb..4a7d332 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 use Carp qw/croak/;
 use Scalar::Util qw/reftype/;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
 use Test2::Util::HashBase;
diff --git a/cpan/Test-Simple/lib/Test2/Event/Info.pm b/cpan/Test-Simple/lib/Test2/Event/Info.pm
new file mode 100644 (file)
index 0000000..029ab54
--- /dev/null
@@ -0,0 +1,127 @@
+package Test2::Event::Info;
+use strict;
+use warnings;
+
+use Scalar::Util qw/blessed/;
+
+our $VERSION = '1.302045';
+
+BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
+use Test2::Util::HashBase qw/diagnostics renderer/;
+
+sub init {
+    my $self = shift;
+
+    my $r = $self->{+RENDERER} or $self->trace->throw("'renderer' is a required attribute");
+
+    return if ref($r) eq 'CODE';
+    return if blessed($r) && $r->can('render');
+
+    $self->trace->throw("renderer '$r' is not a valid renderer, must be a coderef or an object implementing the 'render()' method");
+}
+
+sub render {
+    my $self = shift;
+    my ($fmt) = @_;
+
+    $fmt ||= 'text';
+
+    my $r = $self->{+RENDERER};
+
+    return $r->($fmt) if ref($r) eq 'CODE';
+    return $r->render($fmt);
+}
+
+sub summary { $_[0]->render($_[1] || 'text') }
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+Test2::Event::Info - Info event base class
+
+=head1 DESCRIPTION
+
+Successor for note and diag events. This event base class supports multiple
+formats. This event makes it possible to send additional information such as
+color and highlighting to the harness.
+
+=head1 SYNOPSIS
+
+    use Test2::API::Context qw/context/;
+
+    $ctx->info($obj, diagnostics => $bool);
+
+=head1 FORMATS
+
+Format will be passed in to C<render()> and C<summary()> as a string. Any
+string is considered valid, if your event does not recognize the format it
+should fallback to 'text'.
+
+=over 4
+
+=item 'text'
+
+Plain and ordinary text.
+
+=item 'ansi'
+
+Text that may include ansi sequences such as colors.
+
+=item 'html'
+
+HTML formatted text.
+
+=back
+
+=head1 ACCESSORS
+
+=over 4
+
+=item $bool = $info->diagnostics()
+
+=item $info->set_diagnostics($bool)
+
+True if this info is essential for diagnostics. The implication is that
+diagnostics will got to STDERR while everything else goes to STDOUT, but that
+is formatter/harness specific.
+
+=back
+
+=head1 SOURCE
+
+The source code repository for Test2 can be found at
+F<http://github.com/Test-More/test-more/>.
+
+=head1 MAINTAINERS
+
+=over 4
+
+=item Chad Granum E<lt>exodist@cpan.orgE<gt>
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item Chad Granum E<lt>exodist@cpan.orgE<gt>
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright 2016 Chad Granum E<lt>exodist@cpan.orgE<gt>.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See F<http://dev.perl.org/licenses/>
+
+=cut
index b35a29a..c277296 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Note;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
index a3ea262..341dc06 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Ok;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
@@ -84,7 +84,6 @@ or:
         'Ok',
         pass => $bool,
         name => $name,
-        diag => \@diag
     );
 
 =head1 ACCESSORS
@@ -100,10 +99,6 @@ reduced down to 1 or 0).
 
 Name of the test.
 
-=item $diag = $e->diag
-
-An arrayref full of diagnostics strings to print in the event of a failure.
-
 =item $b = $e->effective_pass
 
 This is the true/false value of the test after TODO and similar modifiers are
index 599df67..904f6e9 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Plan;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
index ef08022..9b7aa64 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Skip;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }
index 0d95424..45ba0f5 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Subtest;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }
index 15d0b0a..15db583 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Event::Waiting;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
index 7e1313a..77d023d 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Formatter;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 my %ADDED;
@@ -50,7 +50,7 @@ A formatter is any package or object with a C<write($event, $num)> method.
 
     1;
 
-The C<write> method is a method, so it either gets a class or instance. The 2
+The C<write> method is a method, so it either gets a class or instance. The two
 arguments are the C<$event> object it should record, and the C<$assert_num>
 which is the number of the current assertion (ok), or the last assertion if
 this even is not itself an assertion. The assertion number may be any integer 0
index 20086e1..09211f0 100644 (file)
@@ -1,8 +1,9 @@
 package Test2::Formatter::TAP;
 use strict;
 use warnings;
+require PerlIO;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Test2::Util::HashBase qw{
@@ -108,8 +109,13 @@ sub write {
 sub _open_handles {
     my $self = shift;
 
-    open( my $out, '>&', STDOUT ) or die "Can't dup STDOUT:  $!";
-    open( my $err, '>&', STDERR ) or die "Can't dup STDERR:  $!";
+    my %seen;
+    open(my $out, '>&', STDOUT) or die "Can't dup STDOUT:  $!";
+    binmode($out, join(":", "", "raw", grep { $_ ne 'unix' and !$seen{$_}++ } PerlIO::get_layers(STDOUT)));
+
+    %seen = ();
+    open(my $err, '>&', STDERR) or die "Can't dup STDERR:  $!";
+    binmode($err, join(":", "", "raw", grep { $_ ne 'unix' and !$seen{$_}++ } PerlIO::get_layers(STDERR)));
 
     _autoflush($out);
     _autoflush($err);
@@ -381,7 +387,7 @@ order to do this you use the C<register_event()> class method.
     use Test2::Formatter::TAP;
 
     use base 'Test2::Event';
-    use Test2::Util::HashBase accessors => [qw/pass name diag note/];
+    use Test2::Util::HashBase qw/pass name diag note/;
 
     Test2::Formatter::TAP->register_event(
         __PACKAGE__,
index 0b0d33b..707c585 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Hub;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Carp qw/carp croak confess/;
@@ -83,6 +83,10 @@ sub inherit {
         push @{$self->{+_LISTENERS}} => grep { $_->{inherit} } @$ls;
     }
 
+    if (my $pfs = $from->{+_PRE_FILTERS}) {
+        push @{$self->{+_PRE_FILTERS}} => grep { $_->{inherit} } @$pfs;
+    }
+
     if (my $fs = $from->{+_FILTERS}) {
         push @{$self->{+_FILTERS}} => grep { $_->{inherit} } @$fs;
     }
@@ -472,7 +476,7 @@ handle thread/fork sync, filters, listeners, TAP output, etc.
 
 =head2 ALTERING OR REMOVING EVENTS
 
-You can use either C<filter()> or C<pre_filter()>, which one depends on your
+You can use either C<filter()> or C<pre_filter()>, depending on your
 needs. Both have identical syntax, so only C<filter()> is shown here.
 
     $hub->filter(sub {
@@ -495,7 +499,7 @@ needs. Both have identical syntax, so only C<filter()> is shown here.
         die "Should not happen";
     });
 
-By default filters are not inherited by child hubs, that means if you start a
+By default, filters are not inherited by child hubs. That means if you start a
 subtest, the subtest will not inherit the filter. You can change this behavior
 with the C<inherit> parameter:
 
@@ -511,7 +515,7 @@ with the C<inherit> parameter:
         # return is ignored
     });
 
-By default listeners are not inherited by child hubs, that means if you start a
+By default listeners are not inherited by child hubs. That means if you start a
 subtest, the subtest will not inherit the listener. You can change this behavior
 with the C<inherit> parameter:
 
@@ -528,7 +532,7 @@ with the C<inherit> parameter:
         # Return is ignored
     });
 
-follow_up subs are called only once, ether when done_testing is called, or in
+follow_up subs are called only once, either when done_testing is called, or in
 an END block.
 
 =head2 SETTING THE FORMATTER
@@ -539,7 +543,7 @@ By default an instance of L<Test2::Formatter::TAP> is created and used.
 
 Setting the formatter will REPLACE any existing formatter. You may set the
 formatter to undef to prevent output. The old formatter will be returned if one
-was already set. Only 1 formatter is allowed at a time.
+was already set. Only one formatter is allowed at a time.
 
 =head1 METHODS
 
index 006e3b6..f81284d 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Hub::Interceptor;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Test2::Hub::Interceptor::Terminator();
index 98a1209..1666274 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Hub::Interceptor::Terminator;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 1;
index 4e3a8bc..835090a 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Hub::Subtest;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::Hub; our @ISA = qw(Test2::Hub) }
index d2626d9..c09293a 100644 (file)
@@ -2,7 +2,7 @@ package Test2::IPC;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Test2::API::Instance;
index 4c29e42..521e4ce 100644 (file)
@@ -2,7 +2,7 @@ package Test2::IPC::Driver;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Carp qw/confess longmess/;
index 53530d7..7cf62c8 100644 (file)
@@ -2,7 +2,7 @@ package Test2::IPC::Driver::Files;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 BEGIN { require Test2::IPC::Driver; our @ISA = qw(Test2::IPC::Driver) }
@@ -18,6 +18,51 @@ use POSIX();
 use Test2::Util qw/try get_tid pkg_to_file IS_WIN32/;
 use Test2::API qw/test2_ipc_set_pending/;
 
+BEGIN {
+    if (IS_WIN32) {
+        my $max_tries = 5;
+
+        *do_rename = sub {
+            my ($from, $to) = @_;
+
+            my $err;
+            for (1 .. $max_tries) {
+                return (1) if rename($from, $to);
+                $err = "$!";
+                last if $_ == $max_tries;
+                sleep 1;
+            }
+
+            return (0, $err);
+        };
+        *do_unlink = sub {
+            my ($file) = @_;
+
+            my $err;
+            for (1 .. $max_tries) {
+                return (1) if unlink($file);
+                $err = "$!";
+                last if $_ == $max_tries;
+                sleep 1;
+            }
+
+            return (0, "$!");
+        };
+    }
+    else {
+        *do_rename = sub {
+            my ($from, $to) = @_;
+            return (1) if rename($from, $to);
+            return (0, "$!");
+        };
+        *do_unlink = sub {
+            my ($file) = @_;
+            return (1) if unlink($file);
+            return (0, "$!");
+        };
+    }
+}
+
 sub use_shm { 1 }
 sub shm_size() { 64 }
 
@@ -107,10 +152,12 @@ sub drop_hub {
         unless get_tid() == $tid;
 
     if ($ENV{T2_KEEP_TEMPDIR}) {
-        rename($hfile, File::Spec->canonpath("$hfile.complete")) or $self->abort_trace("Could not rename file '$hfile' -> '$hfile.complete'");
+        my ($ok, $err) = do_rename($hfile, File::Spec->canonpath("$hfile.complete"));
+        $self->abort_trace("Could not rename file '$hfile' -> '$hfile.complete': $err") unless $ok
     }
     else {
-        unlink($hfile) or $self->abort_trace("Could not remove file for hub '$hid'");
+        my ($ok, $err) = do_unlink($hfile);
+        $self->abort_trace("Could not remove file for hub '$hid': $err") unless $ok
     }
 
     opendir(my $dh, $tdir) or $self->abort_trace("Could not open temp dir!");
@@ -170,7 +217,11 @@ do so if Test::Builder is loaded for legacy reasons.
     # Write and rename the file.
     my ($ok, $err) = try {
         Storable::store($e, $file);
-        rename($file, $ready) or $self->abort("Could not rename file '$file' -> '$ready'");
+        my ($ok, $err) = do_rename("$file", $ready);
+        unless ($ok) {
+            POSIX::sigprocmask(POSIX::SIG_SETMASK(), $old, POSIX::SigSet->new()) if defined $blocked;
+            $self->abort("Could not rename file '$file' -> '$ready': $err");
+        };
         test2_ipc_set_pending(substr($file, -(shm_size)));
     };
 
@@ -214,35 +265,22 @@ sub cull {
     opendir(my $dh, $tempdir) or $self->abort("could not open IPC temp dir ($tempdir)!");
 
     my @out;
-    for my $file (sort readdir($dh)) {
-        next if substr($file, 0, 1) eq '.';
-
-        next unless substr($file, -6, 6) eq '.ready';
-
-        my $global   = substr($file, 0, 6) eq 'GLOBAL';
-        my $hid_len = length($hid);
-        my $have_hid = !$global && substr($file, 0, $hid_len) eq $hid && substr($file, $hid_len, 1) eq '-';
-
-        next unless $have_hid || $global;
-
-        next if $global && $self->{+GLOBALS}->{$hid}->{$file}++;
-
-        # Untaint the path.
-        my $full = File::Spec->catfile($tempdir, $file);
-        ($full) = ($full =~ m/^(.*)$/gs);
-
+    for my $info (sort cmp_events map { $self->should_read_event($hid, $_) } readdir($dh)) {
+        my $full = $info->{full_path};
         my $obj = $self->read_event_file($full);
         push @out => $obj;
 
         # Do not remove global events
-        next if $global;
+        next if $info->{global};
 
-        my $complete = File::Spec->canonpath("$full.complete");
         if ($ENV{T2_KEEP_TEMPDIR}) {
-            rename($full, $complete) or $self->abort("Could not rename IPC file '$full', '$complete'");
+            my $complete = File::Spec->canonpath("$full.complete");
+            my ($ok, $err) = do_rename($full, $complete);
+            $self->abort("Could not rename IPC file '$full', '$complete': $err") unless $ok;
         }
         else {
-            unlink($full) or $self->abort("Could not unlink IPC file: $file");
+            my ($ok, $err) = do_unlink("$full");
+            $self->abort("Could not unlink IPC file '$full': $err") unless $ok;
         }
     }
 
@@ -250,6 +288,64 @@ sub cull {
     return @out;
 }
 
+sub parse_event_filename {
+    my $self = shift;
+    my ($file) = @_;
+
+    # The || is to force 0 in false
+    my $complete = substr($file, -9, 9) eq '.complete' || 0 and substr($file, -9, 9, "");
+    my $ready    = substr($file, -6, 6) eq '.ready'    || 0 and substr($file, -6, 6, "");
+
+    my @parts = split '-', $file;
+    my ($global, $hid) = $parts[0] eq 'GLOBAL' ? (1, shift @parts) : (0, join '-' => splice(@parts, 0, 3));
+    my ($pid, $tid, $eid) = splice(@parts, 0, 3);
+    my $type = join '::' => @parts;
+
+    return {
+        ready    => $ready,
+        complete => $complete,
+        global   => $global,
+        type     => $type,
+        hid      => $hid,
+        pid      => $pid,
+        tid      => $tid,
+        eid      => $eid,
+    };
+}
+
+sub should_read_event {
+    my $self = shift;
+    my ($hid, $file) = @_;
+
+    return if substr($file, 0, 1) eq '.';
+
+    my $parsed = $self->parse_event_filename($file);
+
+    return if $parsed->{complete};
+    return unless $parsed->{ready};
+    return unless $parsed->{global} || $parsed->{hid} eq $hid;
+
+    return if $parsed->{global} && $self->{+GLOBALS}->{$hid}->{$file}++;
+
+    # Untaint the path.
+    my $full = File::Spec->catfile($self->{+TEMPDIR}, $file);
+    ($full) = ($full =~ m/^(.*)$/gs) if ${^TAINT};
+
+    $parsed->{full_path} = $full;
+
+    return $parsed;
+}
+
+sub cmp_events {
+    # Globals first
+    return -1 if $a->{global} && !$b->{global};
+    return  1 if $b->{global} && !$a->{global};
+
+    return $a->{pid} <=> $b->{pid}
+        || $a->{tid} <=> $b->{tid}
+        || $a->{eid} <=> $b->{eid};
+}
+
 sub read_event_file {
     my $self = shift;
     my ($file) = @_;
@@ -306,7 +402,8 @@ sub DESTROY {
             $full =~ m/^(.*)$/;
             $full = $1; # Untaint it
             next if $ENV{T2_KEEP_TEMPDIR};
-            unlink($full) or $self->abort("Could not unlink IPC file: $full");
+            my ($ok, $err) = do_unlink($full);
+            $self->abort("Could not unlink IPC file '$full': $err") unless $ok;
             next;
         }
 
index a14f22e..95f9d77 100644 (file)
@@ -248,6 +248,14 @@ tool.
 
 Fixed in version: 0.012
 
+=item Test::UseAllModules
+
+Version 0.14 relied on C<< Test::Builder->history >> which was available in
+Test::Builder 1.5. Versions 0.12 and 0.13 relied on other Test::Builder
+internals.
+
+Fixed in version: 0.15
+
 =back
 
 =head2 STILL BROKEN
@@ -258,14 +266,14 @@ Fixed in version: 0.012
 
 This distribution directly accesses the hash keys in the L<Test::Builder>
 singleton. It also approaches the problem from the wrong angle, please consider
-using L<Test2::Harness> (not yet released) or L<App::ForkProve> which both
-solve the same problem at the harness level.
+using L<Test2::Harness> or L<App::ForkProve> which both solve the same problem
+at the harness level.
 
 Still broken as of version: 0.373
 
 =item Test::Wrapper
 
-This module directly uses hash keys in the L<Test::BuildeR> singleton. This
+This module directly uses hash keys in the L<Test::Builder> singleton. This
 module is also obsolete thanks to the benefits of L<Test2>. Use C<intercept()>
 from L<Test2::API> to achieve a similar result.
 
index a903b6c..c44a752 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Util;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Config qw/%Config/;
@@ -157,7 +157,7 @@ Collection of tools used by L<Test2> and friends.
 
 =head1 EXPORTS
 
-All exports are optional, you must specify subs to import.
+All exports are optional. You must specify subs to import.
 
 =over 4
 
index 1083ace..e7555e3 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Util::ExternalMeta;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Carp qw/croak/;
index d3583a4..1121385 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Util::HashBase;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 require Carp;
index 5afeccf..0dc99fe 100644 (file)
@@ -2,7 +2,7 @@ package Test2::Util::Trace;
 use strict;
 use warnings;
 
-our $VERSION = '1.302026';
+our $VERSION = '1.302045';
 
 
 use Test2::Util qw/get_tid/;
index 8670163..5f3dd1c 100644 (file)
@@ -1,5 +1,5 @@
 package ok;
-$ok::VERSION = '1.302026';
+$ok::VERSION = '1.302045';
 
 use strict;
 use Test::More ();
diff --git a/cpan/Test-Simple/t/Legacy/Regression/683_thread_todo.t b/cpan/Test-Simple/t/Legacy/Regression/683_thread_todo.t
new file mode 100644 (file)
index 0000000..c5eb7cb
--- /dev/null
@@ -0,0 +1,31 @@
+use strict;
+use warnings;
+
+use Test2::Util qw/CAN_THREAD/;
+BEGIN {
+    unless(CAN_THREAD) {
+        require Test::More;
+        Test::More->import(skip_all => "threads are not supported");
+    }
+}
+
+use threads;
+use Test::More;
+
+my $t = threads->create(
+    sub {
+        local $TODO = "Some good reason";
+
+        fail "Crap";
+
+        42;
+    }
+);
+
+is(
+    $t->join,
+    42,
+    "Thread exitted successfully"
+);
+
+done_testing;
diff --git a/cpan/Test-Simple/t/Test2/behavior/run_subtest_inherit.t b/cpan/Test-Simple/t/Test2/behavior/run_subtest_inherit.t
new file mode 100644 (file)
index 0000000..3f15bc8
--- /dev/null
@@ -0,0 +1,84 @@
+use strict;
+use warnings;
+
+BEGIN { require "t/tools.pl" };
+
+use Test2::API qw/run_subtest intercept context/;
+
+# Test a subtest that should inherit the trace from the tool that calls it
+my ($file, $line) = (__FILE__, __LINE__ + 1);
+my $events = intercept { my_tool_inherit() };
+
+is(@$events, 1, "got 1 event");
+my $e = shift @$events;
+ok($e->isa('Test2::Event::Subtest'), "got a subtest event");
+is($e->trace->file, $file, "subtest is at correct file");
+is($e->trace->line, $line, "subtest is at correct line");
+my $plan = pop @{$e->subevents};
+ok($plan->isa('Test2::Event::Plan'), "Removed plan");
+for my $se (@{$e->subevents}) {
+    is($se->trace->file, $file, "subtest event ($se->{name}) is at correct file");
+    is($se->trace->line, $line, "subtest event ($se->{name}) is at correct line");
+    ok($se->pass, "subtest event ($se->{name}) passed");
+}
+
+
+
+
+# Test a subtest that should NOT inherit the trace from the tool that calls it
+($file, $line) = (__FILE__, __LINE__ + 1);
+$events = intercept { my_tool_no_inherit() };
+
+is(@$events, 1, "got 1 event");
+$e = shift @$events;
+ok($e->isa('Test2::Event::Subtest'), "got a subtest event");
+is($e->trace->file, $file, "subtest is at correct file");
+is($e->trace->line, $line, "subtest is at correct line");
+$plan = pop @{$e->subevents};
+ok($plan->isa('Test2::Event::Plan'), "Removed plan");
+for my $se (@{$e->subevents}) {
+    ok($se->trace->file ne $file, "subtest event ($se->{name}) is not in our file");
+    ok($se->trace->line ne $line, "subtest event ($se->{name}) is not on our line");
+    ok($se->pass, "subtest event ($se->{name}) passed");
+}
+
+done_testing;
+
+# Make these tools appear to be in a different file/line
+#line 100 'fake.pm'
+
+sub my_tool_inherit {
+    my $ctx = context();
+
+    run_subtest(
+        'foo',
+        sub {
+            ok(1, 'a');
+            ok(2, 'b');
+            is_deeply(\@_, [qw/arg1 arg2/], "got args");
+        },
+        {buffered => 1, inherit_trace => 1},
+        'arg1', 'arg2'
+    );
+
+    $ctx->release;
+}
+
+sub my_tool_no_inherit {
+    my $ctx = context();
+
+    run_subtest(
+        'foo',
+        sub {
+            ok(1, 'a');
+            ok(2, 'b');
+            is_deeply(\@_, [qw/arg1 arg2/], "got args");
+        },
+        {buffered => 1, inherit_trace => 0},
+        'arg1', 'arg2'
+    );
+
+    $ctx->release;
+}
+
+
index b4ca009..6badc4f 100644 (file)
@@ -333,10 +333,15 @@ sub {
 }->();
 
 {
+    {
+        package An::Info::Thingy;
+        sub render { 'zzz' }
+    }
+
     my ($e1, $e2);
     my $events = intercept {
         my $ctx = context();
-        $e1 = $ctx->ok(0, 'foo', ['xxx']);
+        $e1 = $ctx->ok(0, 'foo', ['xxx', sub { 'yyy' }, bless({}, 'An::Info::Thingy')]);
         $e2 = $ctx->ok(0, 'foo');
         $ctx->release;
     };
@@ -345,9 +350,19 @@ sub {
     ok($e2->isa('Test2::Event::Ok'), "returned ok event");
 
     is($events->[0], $e1, "got ok event 1");
-    is($events->[3], $e2, "got ok event 2");
 
     is($events->[2]->message, 'xxx', "event 1 diag 2");
+    ok($events->[2]->isa('Test2::Event::Diag'), "event 1 diag 2 is diag");
+
+    is($events->[3]->summary,     'yyy', "event 1 info 1");
+    is($events->[3]->diagnostics, 1,     "event 1 info 1 is diagnostics");
+    ok($events->[3]->isa('Test2::Event::Info'), "event 1 info 1 is an info");
+
+    is($events->[4]->summary,     'zzz', "event 1 info 2");
+    is($events->[4]->diagnostics, 1,     "event 1 info 2 is diagnostics");
+    ok($events->[4]->isa('Test2::Event::Info'), "event 2 info 1 is an info");
+
+    is($events->[5], $e2, "got ok event 2");
 }
 
 sub {
diff --git a/cpan/Test-Simple/t/Test2/modules/Event/Info.t b/cpan/Test-Simple/t/Test2/modules/Event/Info.t
new file mode 100644 (file)
index 0000000..8bf9d78
--- /dev/null
@@ -0,0 +1,45 @@
+use strict;
+use warnings;
+
+BEGIN { require "t/tools.pl" };
+
+use Test2::Event::Info;
+use Test2::Util::Trace;
+
+my @got;
+
+my $info = Test2::Event::Info->new(
+    trace => Test2::Util::Trace->new(frame => [__PACKAGE__, __FILE__, __LINE__]),
+    renderer => sub { @got = @_; 'foo' },
+);
+
+is($info->summary, 'foo', "summary is just rendering");
+is_deeply(\@got, ['text'], "got text");
+
+is($info->summary('blah'), 'foo', "summary is just rendering (arg)");
+is_deeply(\@got, ['blah'], "got arg");
+
+{
+    package An::Info::Thingy;
+    sub render { shift; @got = @_; 'foo' }
+}
+
+$info = Test2::Event::Info->new(
+    trace => Test2::Util::Trace->new(frame => [__PACKAGE__, __FILE__, __LINE__]),
+    renderer => bless({}, 'An::Info::Thingy'),
+);
+
+is($info->summary, 'foo', "summary is just rendering");
+is_deeply(\@got, ['text'], "got text");
+
+is($info->summary('blah'), 'foo', "summary is just rendering (arg)");
+is_deeply(\@got, ['blah'], "got arg");
+
+eval { Test2::Event::Info->new(trace => Test2::Util::Trace->new(frame => ['Foo', 'foo.pl', 42])) };
+like(
+    $@,
+    qr/'renderer' is a required attribute at foo\.pl line 42/,
+    "Got expected error"
+);
+
+done_testing;
index 5cda691..1691751 100644 (file)
@@ -2,6 +2,7 @@ BEGIN { require "t/tools.pl" };
 use Test2::Util qw/get_tid USE_THREADS try/;
 use File::Temp qw/tempfile/;
 use File::Spec qw/catfile/;
+use List::Util qw/shuffle/;
 use strict;
 use warnings;
 
@@ -40,7 +41,7 @@ ok(-d $ipc->tempdir, "created temp dir");
 is($ipc->pid, $$, "stored pid");
 is($ipc->tid, get_tid(), "stored the tid");
 
-my $hid = '12345';
+my $hid = '12345-1-1';
 
 $ipc->add_hub($hid);
 my $hubfile = File::Spec->catfile($ipc->tempdir, "HUB-$hid");
@@ -171,8 +172,8 @@ ok(!-d $tmpdir, "cleaned up temp dir");
     like($out->{STDERR}, qr/IPC Temp Dir: \Q$tmpdir\E/m, "Got temp dir path");
     like($out->{STDERR}, qr/^# Not removing temp dir: \Q$tmpdir\E$/m, "Notice about not closing tempdir");
 
-    like($out->{STDERR}, qr/^IPC Fatal Error: File for hub '12345' already exists/m, "Got message for duplicate hub");
-    like($out->{STDERR}, qr/^IPC Fatal Error: File for hub '12345' does not exist/m, "Cannot remove hub twice");
+    like($out->{STDERR}, qr/^IPC Fatal Error: File for hub '12345-1-1' already exists/m, "Got message for duplicate hub");
+    like($out->{STDERR}, qr/^IPC Fatal Error: File for hub '12345-1-1' does not exist/m, "Cannot remove hub twice");
 
     $out = capture {
         my $ipc = Test2::IPC::Driver::Files->new();
@@ -185,7 +186,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
 
     like($out->{STDERR}, qr/IPC Fatal Error:/, "Got fatal error");
     like($out->{STDERR}, qr/There was an error writing an event/, "Explanation");
-    like($out->{STDERR}, qr/Destination: 12345/, "Got dest");
+    like($out->{STDERR}, qr/Destination: 12345-1-1/, "Got dest");
     like($out->{STDERR}, qr/Origin PID:\s+$$/, "Got pid");
     like($out->{STDERR}, qr/Error: Can't store GLOB items/, "Got cause");
 
@@ -196,7 +197,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
         print STDERR $@ unless $@ =~ m/^255/;
         $ipc = undef;
     };
-    like($out->{STDERR}, qr/IPC Fatal Error: hub '12345' is not available, failed to send event!/, "Cannot send to missing hub");
+    like($out->{STDERR}, qr/IPC Fatal Error: hub '12345-1-1' is not available, failed to send event!/, "Cannot send to missing hub");
 
     $out = capture {
         my $ipc = Test2::IPC::Driver::Files->new();
@@ -208,7 +209,7 @@ ok(!-d $tmpdir, "cleaned up temp dir");
         print STDERR $@ unless $@ =~ m/^255/;
     };
     $cleanup->();
-    like($out->{STDERR}, qr/IPC Fatal Error: Not all files from hub '12345' have been collected/, "Leftover files");
+    like($out->{STDERR}, qr/IPC Fatal Error: Not all files from hub '12345-1-1' have been collected/, "Leftover files");
     like($out->{STDERR}, qr/IPC Fatal Error: Leftover files in the directory \(.*\.ready\)/, "What file");
 
     $out = capture {
@@ -294,5 +295,232 @@ ok(!-d $tmpdir, "cleaned up temp dir");
     $ipc = undef;
 }
 
-done_testing;
+{
+    my @list = shuffle (
+        {global => 0, pid => 2, tid => 1, eid => 1},
+        {global => 0, pid => 2, tid => 1, eid => 2},
+        {global => 0, pid => 2, tid => 1, eid => 3},
+
+        {global => 1, pid => 1,  tid => 1, eid => 1},
+        {global => 1, pid => 12, tid => 1, eid => 3},
+        {global => 1, pid => 11, tid => 1, eid => 2},
+
+        {global => 0, pid => 2, tid => 3, eid => 1},
+        {global => 0, pid => 2, tid => 3, eid => 10},
+        {global => 0, pid => 2, tid => 3, eid => 100},
+
+        {global => 0, pid => 5, tid => 3, eid => 2},
+        {global => 0, pid => 5, tid => 3, eid => 20},
+        {global => 0, pid => 5, tid => 3, eid => 200},
+    );
+
+    my @sorted;
+    {
+        package Test2::IPC::Driver::Files;
+        @sorted = sort cmp_events @list;
+    }
+
+    is_deeply(
+        \@sorted,
+        [
+            {global => 1, pid => 1,  tid => 1, eid => 1},
+            {global => 1, pid => 11, tid => 1, eid => 2},
+            {global => 1, pid => 12, tid => 1, eid => 3},
+
+            {global => 0, pid => 2, tid => 1, eid => 1},
+            {global => 0, pid => 2, tid => 1, eid => 2},
+            {global => 0, pid => 2, tid => 1, eid => 3},
+
+            {global => 0, pid => 2, tid => 3, eid => 1},
+            {global => 0, pid => 2, tid => 3, eid => 10},
+            {global => 0, pid => 2, tid => 3, eid => 100},
+
+            {global => 0, pid => 5, tid => 3, eid => 2},
+            {global => 0, pid => 5, tid => 3, eid => 20},
+            {global => 0, pid => 5, tid => 3, eid => 200},
+        ],
+        "Sort by global, pid, tid and then eid"
+    );
+}
+
+{
+    my $ipc = 'Test2::IPC::Driver::Files';
+
+    is_deeply(
+        $ipc->parse_event_filename('GLOBAL-123-456-789-Event-Type-Foo.ready.complete'),
+        {
+            ready    => 1,
+            complete => 1,
+            global   => 1,
+            type     => "Event::Type::Foo",
+            hid      => "GLOBAL",
+            pid      => "123",
+            tid      => "456",
+            eid      => "789",
+        },
+        "Parsed global complete"
+    );
+
+    is_deeply(
+        $ipc->parse_event_filename('GLOBAL-123-456-789-Event-Type-Foo.ready'),
+        {
+            ready    => 1,
+            complete => 0,
+            global   => 1,
+            type     => "Event::Type::Foo",
+            hid      => "GLOBAL",
+            pid      => "123",
+            tid      => "456",
+            eid      => "789",
+        },
+        "Parsed global ready"
+    );
+
+    is_deeply(
+        $ipc->parse_event_filename('GLOBAL-123-456-789-Event-Type-Foo'),
+        {
+            ready    => 0,
+            complete => 0,
+            global   => 1,
+            type     => "Event::Type::Foo",
+            hid      => "GLOBAL",
+            pid      => "123",
+            tid      => "456",
+            eid      => "789",
+        },
+        "Parsed global not ready"
+    );
+
+    is_deeply(
+        $ipc->parse_event_filename('1-1-1-123-456-789-Event-Type-Foo.ready.complete'),
+        {
+            ready    => 1,
+            complete => 1,
+            global   => 0,
+            type     => "Event::Type::Foo",
+            hid      => "1-1-1",
+            pid      => "123",
+            tid      => "456",
+            eid      => "789",
+        },
+        "Parsed event complete"
+    );
+
+    is_deeply(
+        $ipc->parse_event_filename('1-2-3-123-456-789-Event-Type-Foo.ready'),
+        {
+            ready    => 1,
+            complete => 0,
+            global   => 0,
+            type     => "Event::Type::Foo",
+            hid      => "1-2-3",
+            pid      => "123",
+            tid      => "456",
+            eid      => "789",
+        },
+        "Parsed event ready"
+    );
+
+    is_deeply(
+        $ipc->parse_event_filename('3-2-11-123-456-789-Event'),
+        {
+            ready    => 0,
+            complete => 0,
+            global   => 0,
+            type     => "Event",
+            hid      => "3-2-11",
+            pid      => "123",
+            tid      => "456",
+            eid      => "789",
+        },
+        "Parsed event not ready"
+    );
+}
+
+{
+    my $ipc = Test2::IPC::Driver::Files->new();
+
+    my $hid = "1-1-1";
+
+    is_deeply(
+        $ipc->should_read_event($hid, "GLOBAL-123-456-789-Event-Type-Foo.ready.complete") ? 1 : 0,
+        0,
+        "Do not read complete global"
+    );
 
+    is_deeply(
+        $ipc->should_read_event($hid, "GLOBAL-123-456-789-Event-Type-Foo.ready") ? 1 : 0,
+        1,
+        "Should read ready global the first time"
+    );
+    is_deeply(
+        $ipc->should_read_event($hid, "GLOBAL-123-456-789-Event-Type-Foo.ready") ? 1 : 0,
+        0,
+        "Should not read ready global again"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, "GLOBAL-123-456-789-Event-Type-Foo") ? 1 : 0,
+        0,
+        "Should not read un-ready global"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, "$hid-123-456-789-Event-Type-Foo.ready.complete") ? 1 : 0,
+        0,
+        "Do not read complete our hid"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, "$hid-123-456-789-Event-Type-Foo.ready") ? 1 : 0,
+        1,
+        "Should read ready our hid"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, "$hid-123-456-789-Event-Type-Foo.ready") ? 1 : 0,
+        1,
+        "Should read ready our hid (again, no duplicate checking)"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, "$hid-123-456-789-Event-Type-Foo") ? 1 : 0,
+        0,
+        "Should not read un-ready our hid"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, "1-2-3-123-456-789-Event-Type-Foo.ready.complete") ? 1 : 0,
+        0,
+        "Not ours - complete"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, "1-2-3-123-456-789-Event-Type-Foo.ready") ? 1 : 0,
+        0,
+        "Not ours - ready"
+    );
+
+    is_deeply(
+        $ipc->should_read_event($hid, "1-2-3-123-456-789-Event-Type-Foo") ? 1 : 0,
+        0,
+        "Not ours - unready"
+    );
+
+    my @got = $ipc->should_read_event($hid, "$hid-123-456-789-Event-Type-Foo");
+    ok(!@got, "return empty list for false");
+
+    @got = $ipc->should_read_event($hid, "$hid-123-456-789-Event-Type-Foo.ready");
+    is(@got, 1, "got 1 item on true");
+
+    like(delete $got[0]->{full_path}, qr{^.+\Q$hid\E-123-456-789-Event-Type-Foo\.ready$}, "Got full path");
+    is_deeply(
+        $got[0],
+        $ipc->parse_event_filename("$hid-123-456-789-Event-Type-Foo.ready"),
+        "Apart from full_path we get entire parsed filename"
+    );
+
+    $ipc = undef;
+}
+
+done_testing;
diff --git a/cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t b/cpan/Test-Simple/t/Test2/regression/693_ipc_ordering.t
new file mode 100644 (file)
index 0000000..c365b8a
--- /dev/null
@@ -0,0 +1,30 @@
+BEGIN { require "t/tools.pl" };
+use strict;
+use warnings;
+
+skip_all("Test cannot run on perls below 5.8.8") unless "$]" > 5.008007;
+
+use Test2::Util qw/CAN_THREAD/;
+use Test2::IPC;
+use Test2::API qw/context intercept/;
+
+skip_all('System does not have threads') unless CAN_THREAD();
+
+require threads;
+threads->import;
+
+my $events = intercept {
+    threads->create(
+        sub {
+            ok 1, "something $_ nonlocal" for (1 .. 15);
+        }
+    )->join;
+};
+
+is_deeply(
+    [map { $_->{name} } @$events],
+    [map "something $_ nonlocal", 1 .. 15],
+    "Culled sub-thread events in correct order"
+);
+
+done_testing;
diff --git a/cpan/Test-Simple/t/regression/684-nested_todo_diag.t b/cpan/Test-Simple/t/regression/684-nested_todo_diag.t
new file mode 100644 (file)
index 0000000..cccd27e
--- /dev/null
@@ -0,0 +1,23 @@
+use Test::More;
+use strict;
+use warnings;
+
+use Test2::API qw/intercept/;
+my @events;
+
+intercept {
+    local $TODO = "broken";
+
+    Test2::API::test2_stack->top->listen(sub { push @events => $_[1] }, inherit => 1);
+
+    subtest foo => sub {
+        subtest bar => sub {
+            ok(0, 'oops');
+        };
+    };
+};
+
+my ($event) = grep { $_->trace->line == 16 && ref($_) eq 'Test::Builder::TodoDiag'} @events;
+ok($event, "nested todo diag on line 16 was changed to TodoDiag (STDOUT instead of STDERR)");
+
+done_testing;
index 5e043f5..c1aabce 100644 (file)
@@ -13,7 +13,7 @@ our ($PACKAGE, @EXPORT_OK, $accuracy, $precision, $round_mode, $div_scale);
 
 our @ISA = qw(Exporter Math::BigFloat);
 
-our $VERSION = '0.42';
+our $VERSION = '0.43';
 
 use overload;                   # inherit overload from BigFloat
 
index 646c05f..e780e66 100644 (file)
@@ -13,7 +13,7 @@ our ($PACKAGE, @EXPORT_OK, $accuracy, $precision, $round_mode, $div_scale);
 
 our @ISA = qw(Exporter Math::BigInt);
 
-our $VERSION = '0.42';
+our $VERSION = '0.43';
 
 use overload;                   # inherit overload from BigInt
 
index a47191e..fa30eb8 100644 (file)
@@ -4,7 +4,7 @@ use 5.006;
 use strict;
 use warnings;
 
-our $VERSION = '0.42';
+our $VERSION = '0.43';
 
 use Exporter;
 our @ISA            = qw( Exporter );
@@ -359,8 +359,8 @@ sub import {
     }
 }
 
-sub inf () { Math::BigInt::binf(); }
-sub NaN () { Math::BigInt::bnan(); }
+sub inf () { Math::BigInt->binf(); }
+sub NaN () { Math::BigInt->bnan(); }
 
 sub PI () { Math::BigInt->new(3); }
 sub e () { Math::BigInt->new(2); }
index 90d5db5..bf2881e 100644 (file)
@@ -4,7 +4,7 @@ use 5.006;
 use strict;
 use warnings;
 
-our $VERSION = '0.42';
+our $VERSION = '0.43';
 
 use Exporter;
 our @ISA            = qw( bigint );
index 79fe84d..8557fc9 100644 (file)
@@ -4,7 +4,7 @@ use 5.006;
 use strict;
 use warnings;
 
-our $VERSION = '0.42';
+our $VERSION = '0.43';
 
 use Exporter;
 our @ISA            = qw( bigint );
index 03355a5..61d39b2 100644 (file)
@@ -12,7 +12,6 @@ use bignum;
 
 my $ln_ev = -7 / (10 ** 17);
 my $ev    = exp($ln_ev);
-
 is(sprintf('%0.5f', $ev),       '1.00000', '($ev) is approx. 1');
 is(sprintf('%0.5f', 1 - $ev),   '0.00000', '(1-$ev) is approx. 0');
 is(sprintf('%0.5f', 1 - "$ev"), '0.00000', '(1-"$ev") is approx. 0');
index 64d6959..6efc003 100644 (file)
@@ -66,7 +66,7 @@ MAIN: {
         ABSTRACT => 'Collection of network protocol modules',
         AUTHOR   => 'Graham Barr <gbarr@pobox.com>, Steve Hay <shay@cpan.org>',
         LICENSE  => 'perl_5',
-        VERSION  => '3.08',
+        VERSION  => '3.09',
 
         META_MERGE => {
             'meta-spec' => {
@@ -120,7 +120,7 @@ MAIN: {
                     prereqs => {
                         runtime => {
                             requires => {
-                                'IO::Socket::IP' => '0.20'
+                                'IO::Socket::IP' => '0.25'
                             # or IO::Socket::INET6 2.62
                             }
                         }
index 2242600..3f102b9 100644 (file)
@@ -28,7 +28,7 @@ BEGIN {
   }
 }
 
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 our @ISA     = qw(Exporter);
 our @EXPORT  = qw(CMD_INFO CMD_OK CMD_MORE CMD_REJECT CMD_ERROR CMD_PENDING);
 
@@ -190,6 +190,8 @@ sub set_status {
   1;
 }
 
+sub timeout { 0 }
+
 sub _syswrite_with_timeout {
   my $cmd = shift;
   my $line = shift;
@@ -748,6 +750,12 @@ command server.
 
 Returns undef upon failure.
 
+=item timeout ()
+
+Returns the timeout value for this class, in seconds. The timeout provided
+by the default implementation is 0; subclasses may override this if they
+choose.
+
 =item unsupported ()
 
 Sets the status code to 580 and the response text to 'Unsupported command'.
index 3aa547e..ff2b841 100644 (file)
@@ -20,7 +20,7 @@ use Socket qw(inet_aton inet_ntoa);
 
 our @EXPORT  = qw(%NetConfig);
 our @ISA     = qw(Net::LocalCfg Exporter);
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 our($CONFIGURE, $LIBNET_CFG);
 
index e2be3b1..6b650b8 100644 (file)
@@ -21,7 +21,7 @@ use Net::Config;
 
 our @ISA       = qw(Exporter);
 our @EXPORT_OK = qw(hostname hostdomain hostfqdn domainname);
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 my ($host, $domain, $fqdn) = (undef, undef, undef);
 
index c0904c6..2bf6fc9 100644 (file)
@@ -25,7 +25,7 @@ use Net::Config;
 use Socket;
 use Time::Local;
 
-our $VERSION = '3.08';
+our $VERSION = '3.09';
 
 our $IOCLASS;
 my $family_key;
@@ -45,7 +45,7 @@ BEGIN {
   my $inet6_class = eval {
     require IO::Socket::IP;
     no warnings 'numeric';
-    IO::Socket::IP->VERSION(0.20);
+    IO::Socket::IP->VERSION(0.25);
   } && 'IO::Socket::IP' || eval {
     require IO::Socket::INET6;
     no warnings 'numeric';
index a1ae30b..5dc16fa 100644 (file)
@@ -13,7 +13,7 @@ use Carp;
 use Net::FTP::dataconn;
 
 our @ISA     = qw(Net::FTP::dataconn);
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 our $buf;
 
index cf09d90..5f77665 100644 (file)
@@ -8,6 +8,6 @@ use warnings;
 use Net::FTP::I;
 
 our @ISA = qw(Net::FTP::I);
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 1;
index b014f08..25d14c0 100644 (file)
@@ -13,7 +13,7 @@ use Carp;
 use Net::FTP::dataconn;
 
 our @ISA     = qw(Net::FTP::dataconn);
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 our $buf;
 
index d13efe7..1809194 100644 (file)
@@ -8,6 +8,6 @@ use warnings;
 use Net::FTP::I;
 
 our @ISA = qw(Net::FTP::I);
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 1;
index 8d82030..24b2ac7 100644 (file)
@@ -13,7 +13,7 @@ use Carp;
 use Errno;
 use Net::Cmd;
 
-our $VERSION = '3.08';
+our $VERSION = '3.09';
 
 $Net::FTP::IOCLASS or die "please load Net::FTP before Net::FTP::dataconn";
 our @ISA = $Net::FTP::IOCLASS;
index 0d690de..803692b 100644 (file)
@@ -21,7 +21,7 @@ use Net::Cmd;
 use Net::Config;
 use Time::Local;
 
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 # Code for detecting if we can use SSL
 my $ssl_class = eval {
@@ -39,7 +39,7 @@ my $family_key = 'Domain';
 my $inet6_class = eval {
   require IO::Socket::IP;
   no warnings 'numeric';
-  IO::Socket::IP->VERSION(0.20) || die;
+  IO::Socket::IP->VERSION(0.25) || die;
   $family_key = 'Family';
 } && 'IO::Socket::IP' || eval {
   require IO::Socket::INET6;
@@ -845,10 +845,10 @@ NNTP server, a value of zero will cause all IO operations to block.
 B<Debug> - Enable the printing of debugging information to STDERR
 
 B<Reader> - If the remote server is INN then initially the connection
-will be to nnrpd, by default C<Net::NNTP> will issue a C<MODE READER> command
-so that the remote server becomes innd. If the C<Reader> option is given
+will be to innd, by default C<Net::NNTP> will issue a C<MODE READER> command
+so that the remote server becomes nnrpd. If the C<Reader> option is given
 with a value of zero, then this command will not be sent and the
-connection will be left talking to nnrpd.
+connection will be left talking to innd.
 
 B<LocalAddr> and B<LocalPort> - These parameters are passed directly
 to IO::Socket to allow binding the socket to a specific local address and port.
index 4945604..5988606 100644 (file)
@@ -18,7 +18,7 @@ use warnings;
 use Carp;
 use FileHandle;
 
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 our $TESTING;
 
index bccdfb0..eaff511 100644 (file)
@@ -20,7 +20,7 @@ use IO::Socket;
 use Net::Cmd;
 use Net::Config;
 
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 # Code for detecting if we can use SSL
 my $ssl_class = eval {
@@ -38,7 +38,7 @@ my $family_key = 'Domain';
 my $inet6_class = eval {
   require IO::Socket::IP;
   no warnings 'numeric';
-  IO::Socket::IP->VERSION(0.20) || die;
+  IO::Socket::IP->VERSION(0.25) || die;
   $family_key = 'Family';
 } && 'IO::Socket::IP' || eval {
   require IO::Socket::INET6;
index 6d3e4c2..726035d 100644 (file)
@@ -21,7 +21,7 @@ use Net::Cmd;
 use Net::Config;
 use Socket;
 
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 # Code for detecting if we can use SSL
 my $ssl_class = eval {
@@ -39,7 +39,7 @@ my $family_key = 'Domain';
 my $inet6_class = eval {
   require IO::Socket::IP;
   no warnings 'numeric';
-  IO::Socket::IP->VERSION(0.20) || die;
+  IO::Socket::IP->VERSION(0.25) || die;
   $family_key = 'Family';
 } && 'IO::Socket::IP' || eval {
   require IO::Socket::INET6;
@@ -225,11 +225,15 @@ sub auth {
     if defined $str and length $str;
 
   while (($code = $self->command(@cmd)->response()) == CMD_MORE) {
+    my $str2 = MIME::Base64::decode_base64(($self->message)[0]);
+    $self->debug_print(0, "(decoded) " . $str2 . "\n") if $self->debug;
+
+    $str = $client->client_step($str2);
     @cmd = (
-      MIME::Base64::encode_base64(
-        $client->client_step(MIME::Base64::decode_base64(($self->message)[0])), ''
-      )
+      MIME::Base64::encode_base64($str, '')
     );
+
+    $self->debug_print(1, "(decoded) " . $str . "\n") if $self->debug;
   }
 
   $code == CMD_OK;
index fae93f8..a8f0b43 100644 (file)
@@ -24,7 +24,7 @@ use Net::Config;
 our @ISA       = qw(Exporter);
 our @EXPORT_OK = qw(inet_time inet_daytime);
 
-our $VERSION = "3.08";
+our $VERSION = "3.09";
 
 our $TIMEOUT = 120;
 
index f8ad797..d844f6e 100644 (file)
@@ -56,7 +56,7 @@ Authen::SASL is required for AUTH support.
 
 IO::Socket::SSL version 2.007 or higher is required for SSL support.
 
-IO::Socket::IP version 0.20 or IO::Socket::INET6 version 2.62 is
+IO::Socket::IP version 0.25 or IO::Socket::INET6 version 2.62 is
 required for IPv6 support.
 
 =head2 What machines support libnet ?
index 0aea9d4..05903fb 100644 (file)
@@ -21,8 +21,6 @@ BEGIN {
   use Net::Cmd;
   our @ISA = qw(Net::Cmd IO::File);
 
-  sub timeout { 0 }
-
   sub new {
     my $fh = shift->new_tmpfile;
     binmode($fh);
index 1992618..768489a 100644 (file)
@@ -63,4 +63,5 @@ sub nntp_server {
     }
   }
   note("NNTP dialog done");
+  return 0;
 }
index 1c88c1a..db31128 100644 (file)
@@ -63,4 +63,5 @@ sub pop3_server {
   }
 
   note("POP3 dialog done");
+  return 0;
 }
index a31b6ff..f430721 100644 (file)
@@ -65,4 +65,5 @@ sub smtp_server {
   }
 
   note("SMTP dialog done");
+  return 0;
 }
index 2015618..36d130f 100644 (file)
@@ -10,7 +10,7 @@ if ($] >= 5.015) {
 
 use vars qw(@ISA $VERSION $CLASS $STRICT $LAX *declare *qv);
 
-$VERSION = 0.9916;
+$VERSION = 0.9917;
 $CLASS = 'version';
 
 # avoid using Exporter
index 62c1f22..d635c38 100644 (file)
@@ -4,7 +4,7 @@ use strict;
 
 use vars qw($VERSION $CLASS $STRICT $LAX);
 
-$VERSION = 0.9916;
+$VERSION = 0.9917;
 
 #--------------------------------------------------------------------------#
 # Version regexp components
@@ -81,7 +81,7 @@ $STRICT =
 # decimal-point
 
 my $LAX_DECIMAL_VERSION =
-    qr/ $LAX_INTEGER_PART (?: \. | $FRACTION_PART $LAX_ALPHA_PART? )?
+    qr/ $LAX_INTEGER_PART (?: $FRACTION_PART | \. )? $LAX_ALPHA_PART?
        |
        $FRACTION_PART $LAX_ALPHA_PART?
     /x;
@@ -106,7 +106,7 @@ my $LAX_DOTTED_DECIMAL_VERSION =
 # of return values from ExtUtils::MM->parse_version
 
 $LAX =
-    qr/ undef | $LAX_DECIMAL_VERSION | $LAX_DOTTED_DECIMAL_VERSION /x;
+    qr/ undef | $LAX_DOTTED_DECIMAL_VERSION | $LAX_DECIMAL_VERSION /x;
 
 #--------------------------------------------------------------------------#
 
index 08e7ad1..8e5ab71 100644 (file)
@@ -12,7 +12,7 @@ BEGIN {
         (File::Spec->splitpath($0))[0,1], 'coretests.pm'
     );
     require $coretests;
-    use_ok('version', 0.9916);
+    use_ok('version', 0.9917);
 }
 
 BaseTests("version","new","qv");
index b2678e8..fb77270 100644 (file)
@@ -13,7 +13,7 @@ BEGIN {
         (File::Spec->splitpath($0))[0,1], 'coretests.pm'
     );
     require $coretests;
-    use_ok("version", 0.9916);
+    use_ok("version", 0.9917);
     # If we made it this far, we are ok.
 }
 
index da1f02e..6a968a5 100644 (file)
@@ -17,7 +17,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.9916, "Make sure we have the correct class";
+is $version::VERSION, 0.9917, "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()");
 
index 25c1dde..298fcf7 100644 (file)
@@ -13,6 +13,14 @@ SKIP: {
     strict_lax_tests();
     is ref($version::LAX), 'Regexp', 'Can see $version::LAX '.$version::LAX ;
     is ref($version::STRICT), 'Regexp', 'Can see $version::STRICT '.$version::STRICT;
+    { # https://rt.cpan.org/Ticket/Display.html?id=114712
+        my ($v) = ( "snapshot-1.2.3ga-001-432" =~ /($version::LAX)/ );
+        is $v, '1.2.3', "Extract just the version: $v";
+        ($v) = ( "snapshot-1.2ga-001-432" =~ /($version::LAX)/ );
+        is $v, '1.2', "Extract just the version: $v";
+        ($v) = ( "snapshot-v1.2.3ga-001-432" =~ /($version::STRICT)/ );
+        is $v, 'v1.2.3', "Extract just the version: $v";
+    }
 }
 
 
index 330ab1a..6776adc 100644 (file)
@@ -14,7 +14,7 @@ BEGIN {
 }
 
 BEGIN {
-    use version 0.9916;
+    use version 0.9917;
 }
 
 pass "Didn't get caught by the wrong DIE handler, which is a good thing";
index 4d5a7fb..f118786 100644 (file)
@@ -7,7 +7,7 @@
 use Test::More qw/no_plan/;
 
 BEGIN {
-    use_ok('version', 0.9916);
+    use_ok('version', 0.9917);
 }
 
 my $v1 = version->new('1.2');
index 1a4dadf..1dcc6db 100644 (file)
@@ -11,7 +11,7 @@ use Test::More tests => 8;
 use Config;
 
 BEGIN {
-    use_ok('version', 0.9916);
+    use_ok('version', 0.9917);
 }
 
 SKIP: {
index 3cc8889..4678c14 100644 (file)
@@ -5,7 +5,7 @@
 #########################
 
 use Test::More tests => 3;
-use_ok("version", 0.9916);
+use_ok("version", 0.9917);
 
 # do strict lax tests in a sub to isolate a package to test importing
 SKIP: {
index 232a9c0..6e94839 100644 (file)
@@ -4,7 +4,7 @@
 #########################
 
 use strict;
-use_ok("version", 0.9916);
+use_ok("version", 0.9917);
 use Test::More;
 
 BEGIN {
index eca3bb9..f9ea53f 100644 (file)
@@ -6,6 +6,38 @@ Changes - public release history for Data::Dumper
 
 =over 8
 
+=item 2.161 (Jul 11 2016)
+
+Perl 5.12 fix/workaround until fixed PPPort release.
+
+Pre-5.12 fixes for test dependency.
+
+=item 2.160 (Jul 3 2016)
+
+Now handles huge inputs on 64bit perls.
+
+Add Trailingcomma option. This is as suggested in RT#126813.
+
+Significant refactoring of XS implementation.
+
+Pure Perl implementation fixes in corner cases ("\n" dumped raw").
+
+=item 2.154 (Sep 18 2014)
+
+Most notably, this release fixes CVE-2014-4330:
+
+  Don't recurse infinitely in Data::Dumper
+
+  Add a configuration variable/option to limit recursion when dumping
+  deep data structures.
+  [...]
+  This patch addresses CVE-2014-4330.  This bug was found and
+  reported by: LSE Leading Security Experts GmbH employee Markus
+  Vervier.
+
+On top of that, there are several minor big fixes and improvements,
+see "git log" if the core perl distribution for details.
+
 =item 2.151 (Mar 7 2014)
 
 A "useqq" implementation for the XS version of Data::Dumper.
@@ -328,7 +360,7 @@ C<require 5.002>.
 MLDBM example removed (as its own module, it has a separate CPAN 
 reality now).
 
-Fixed bugs in handling keys with weird characters.  Perl can be
+Fixed bugs in handling keys with wierd characters.  Perl can be
 tripped up in its implicit quoting of the word before '=>'.  The
 fix: C<Data::Dumper::Purity>, when set, always triggers quotes
 around hash keys.
index 13be89d..c71ad35 100644 (file)
@@ -10,7 +10,7 @@
 package Data::Dumper;
 
 BEGIN {
-    $VERSION = '2.160'; # Don't forget to set version and release
+    $VERSION = '2.161'; # Don't forget to set version and release
 }               # date in POD below!
 
 #$| = 1;
@@ -1466,13 +1466,13 @@ be to use the C<Sortkeys> filter of Data::Dumper.
 
 Gurusamy Sarathy        gsar@activestate.com
 
-Copyright (c) 1996-2014 Gurusamy Sarathy. All rights reserved.
+Copyright (c) 1996-2016 Gurusamy Sarathy. All rights reserved.
 This program is free software; you can redistribute it and/or
 modify it under the same terms as Perl itself.
 
 =head1 VERSION
 
-Version 2.160  (January 12 2016)
+Version 2.161  (July 11 2016)
 
 =head1 SEE ALSO
 
index 8220241..0dc7699 100644 (file)
@@ -886,7 +886,6 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
            SV *sname;
            HE *entry = NULL;
            char *key;
-           STRLEN klen;
            SV *hval;
            AV *keys = NULL;
        
@@ -976,6 +975,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
                 char *nkey_buffer = NULL;
                 STRLEN nticks = 0;
                SV* keysv;
+                STRLEN klen;
                STRLEN keylen;
                 STRLEN nlen;
                bool do_utf8 = FALSE;
@@ -1029,7 +1029,7 @@ DD_dump(pTHX_ SV *val, const char *name, STRLEN namelen, SV *retval, HV *seenhv,
                 if (style->quotekeys || key_needs_quote(key,keylen)) {
                     if (do_utf8 || style->useqq) {
                         STRLEN ocur = SvCUR(retval);
-                        nlen = esc_q_utf8(aTHX_ retval, key, klen, do_utf8, style->useqq);
+                        klen = nlen = esc_q_utf8(aTHX_ retval, key, klen, do_utf8, style->useqq);
                         nkey = SvPVX(retval) + ocur;
                     }
                     else {
index a440b0a..0a1ee8f 100644 (file)
@@ -12,7 +12,7 @@ BEGIN {
 }
 
 use strict;
-use Test::More tests => 15;
+use Test::More tests => 23;
 use Data::Dumper;
 
 {
@@ -144,4 +144,28 @@ SKIP: {
   &$tests;
 }
 
+{ # https://rt.perl.org/Ticket/Display.html?id=128524
+    my $want;
+    my $runtime = "runtime";
+    my $requires = "requires";
+    utf8::upgrade(my $uruntime = $runtime);
+    utf8::upgrade(my $urequires = $requires);
+    for my $run ($runtime, $uruntime) {
+        for my $req ($requires, $urequires) {
+            my $data = { $run => { $req => { foo => "bar" } } };
+            local $Data::Dumper::Useperl = 1;
+            # we want them all the same
+            defined $want or $want = Dumper($data);
+            is(Dumper( $data ), $want, "utf-8 indents");
+          SKIP:
+            {
+                defined &Data::Dumper::Dumpxs
+                  or skip "No XS available", 1;
+                local $Data::Dumper::Useperl = 0;
+                is(Dumper( $data ), $want, "utf8-indents");
+            }
+        }
+    }
+}
+
 # EOF
index 3da2edd..0213e3b 100644 (file)
@@ -11,7 +11,7 @@ use Symbol;
 
 our $VERSION;
 BEGIN {
-  $VERSION = '3.32';
+  $VERSION = '3.33';
 }
 use ExtUtils::ParseXS::Constants $VERSION;
 use ExtUtils::ParseXS::CountLines $VERSION;
@@ -686,7 +686,7 @@ EOF
         var         => $_,
         do_setmagic => $self->{DoSetMagic},
         do_push     => undef,
-      } ) for grep $self->{in_out}->{$_} =~ /OUT$/, keys %{ $self->{in_out} };
+      } ) for grep $self->{in_out}->{$_} =~ /OUT$/, sort keys %{ $self->{in_out} };
 
       my $prepush_done;
       # all OUTPUT done, so now push the return value on the stack
index 8aaf3bd..70d188e 100644 (file)
@@ -3,7 +3,7 @@ use strict;
 use warnings;
 use Symbol;
 
-our $VERSION = '3.32';
+our $VERSION = '3.33';
 
 =head1 NAME
 
index 8c41140..b9644b2 100644 (file)
@@ -1,7 +1,7 @@
 package ExtUtils::ParseXS::CountLines;
 use strict;
 
-our $VERSION = '3.32';
+our $VERSION = '3.33';
 
 our $SECTION_END_MARKER;
 
index ae53b8e..d548038 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::ParseXS::Eval;
 use strict;
 use warnings;
 
-our $VERSION = '3.32';
+our $VERSION = '3.33';
 
 =head1 NAME
 
index c4334de..435979a 100644 (file)
@@ -5,7 +5,7 @@ use Exporter;
 use File::Spec;
 use ExtUtils::ParseXS::Constants ();
 
-our $VERSION = '3.32';
+our $VERSION = '3.33';
 
 our (@ISA, @EXPORT_OK);
 @ISA = qw(Exporter);
index 01b7e30..155913a 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps;
 use 5.006001;
 use strict;
 use warnings;
-our $VERSION = '3.32';
+our $VERSION = '3.33';
 
 require ExtUtils::ParseXS;
 require ExtUtils::ParseXS::Constants;
index ca787a5..a1f4ca9 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps::Cmd;
 use 5.006001;
 use strict;
 use warnings;
-our $VERSION = '3.32';
+our $VERSION = '3.33';
 
 use ExtUtils::Typemaps;
 
index 4b17a7b..ecbcb5c 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps::InputMap;
 use 5.006001;
 use strict;
 use warnings;
-our $VERSION = '3.32';
+our $VERSION = '3.33';
 
 =head1 NAME
 
index 3462b45..74f4305 100644 (file)
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps::OutputMap;
 use 5.006001;
 use strict;
 use warnings;
-our $VERSION = '3.32';
+our $VERSION = '3.33';
 
 =head1 NAME
 
index cf6443e..91284ce 100644 (file)
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 require ExtUtils::Typemaps;
 
-our $VERSION = '3.32';
+our $VERSION = '3.33';
 
 =head1 NAME
 
index 571871f..62f6b87 100644 (file)
@@ -1,5 +1,14 @@
 Revision history for Perl suite Locale::Maketext
 
+2016-06-22
+    * Release of 1.27 to CPAN
+
+2016-04-20
+    * perl #127923: note priority between the white and blacklist
+
+2016-03-17
+    * Add blacklist and whitelist support to Locale::Maketext.
+
 2014-06-17
     * Correct two subtle typos in Locale::Maketext POD.
 
index b106654..1d4dc7c 100644 (file)
@@ -1,3 +1,6 @@
+5.20160720
+  - Updated for v5.25.3
+
 5.20160620
   - Updated for v5.25.2
 
index bdc4636..93904f2 100644 (file)
@@ -2,9 +2,24 @@ package Module::CoreList;
 use strict;
 use vars qw/$VERSION %released %version %families %upstream
            %bug_tracker %deprecated %delta/;
-use Module::CoreList::TieHashDelta;
 use version;
-$VERSION = '5.20160620';
+$VERSION = '5.20160720';
+
+sub _undelta {
+    my ($delta) = @_;
+    my %expanded;
+    for my $version (sort { $a cmp $b } keys %$delta) {
+        my $data = $delta->{$version};
+        my $from = $data->{delta_from};
+        my %full = (
+            ( $from ? %{$expanded{$from}} : () ),
+            %{$data->{changed} || {}},
+        );
+        delete @full{ keys %{$data->{removed}} };
+        $expanded{$version} = \%full;
+    }
+    return %expanded;
+}
 
 sub _released_order {   # Sort helper, to make '?' sort after everything else
     (substr($released{$a}, 0, 1) eq "?")
@@ -296,6 +311,7 @@ sub changes_between {
     5.025000 => '2016-05-09',
     5.025001 => '2016-05-20',
     5.025002 => '2016-06-20',
+    5.025003 => '2016-07-20',
   );
 
 for my $version ( sort { $a <=> $b } keys %released ) {
@@ -12702,6 +12718,116 @@ for my $version ( sort { $a <=> $b } keys %released ) {
         removed => {
         }
     },
+    5.025003 => {
+        delta_from => 5.025002,
+        changed => {
+            'B::Op_private'         => '5.025003',
+            'Config'                => '5.025003',
+            'Data::Dumper'          => '2.161',
+            'Devel::PPPort'         => '3.35',
+            'Encode'                => '2.84',
+            'Encode::MIME::Header'  => '2.23',
+            'Encode::MIME::Header::ISO_2022_JP'=> '1.07',
+            'ExtUtils::ParseXS'     => '3.33',
+            'ExtUtils::ParseXS::Constants'=> '3.33',
+            'ExtUtils::ParseXS::CountLines'=> '3.33',
+            'ExtUtils::ParseXS::Eval'=> '3.33',
+            'ExtUtils::ParseXS::Utilities'=> '3.33',
+            'ExtUtils::Typemaps'    => '3.33',
+            'ExtUtils::Typemaps::Cmd'=> '3.33',
+            'ExtUtils::Typemaps::InputMap'=> '3.33',
+            'ExtUtils::Typemaps::OutputMap'=> '3.33',
+            'ExtUtils::Typemaps::Type'=> '3.33',
+            'Hash::Util'            => '0.20',
+            'Math::BigFloat'        => '1.999726',
+            'Math::BigFloat::Trace' => '0.43',
+            'Math::BigInt'          => '1.999726',
+            'Math::BigInt::Calc'    => '1.999726',
+            'Math::BigInt::CalcEmu' => '1.999726',
+            'Math::BigInt::FastCalc'=> '0.42',
+            'Math::BigInt::Trace'   => '0.43',
+            'Math::BigRat'          => '0.260804',
+            'Module::CoreList'      => '5.20160720',
+            'Module::CoreList::TieHashDelta'=> '5.20160720',
+            'Module::CoreList::Utils'=> '5.20160720',
+            'Net::Cmd'              => '3.09',
+            'Net::Config'           => '3.09',
+            'Net::Domain'           => '3.09',
+            'Net::FTP'              => '3.09',
+            'Net::FTP::A'           => '3.09',
+            'Net::FTP::E'           => '3.09',
+            'Net::FTP::I'           => '3.09',
+            'Net::FTP::L'           => '3.09',
+            'Net::FTP::dataconn'    => '3.09',
+            'Net::NNTP'             => '3.09',
+            'Net::Netrc'            => '3.09',
+            'Net::POP3'             => '3.09',
+            'Net::SMTP'             => '3.09',
+            'Net::Time'             => '3.09',
+            'Parse::CPAN::Meta'     => '1.4422',
+            'Perl::OSType'          => '1.010',
+            'Test2'                 => '1.302045',
+            'Test2::API'            => '1.302045',
+            'Test2::API::Breakage'  => '1.302045',
+            'Test2::API::Context'   => '1.302045',
+            'Test2::API::Instance'  => '1.302045',
+            'Test2::API::Stack'     => '1.302045',
+            'Test2::Event'          => '1.302045',
+            'Test2::Event::Bail'    => '1.302045',
+            'Test2::Event::Diag'    => '1.302045',
+            'Test2::Event::Exception'=> '1.302045',
+            'Test2::Event::Generic' => '1.302045',
+            'Test2::Event::Info'    => '1.302045',
+            'Test2::Event::Note'    => '1.302045',
+            'Test2::Event::Ok'      => '1.302045',
+            'Test2::Event::Plan'    => '1.302045',
+            'Test2::Event::Skip'    => '1.302045',
+            'Test2::Event::Subtest' => '1.302045',
+            'Test2::Event::Waiting' => '1.302045',
+            'Test2::Formatter'      => '1.302045',
+            'Test2::Formatter::TAP' => '1.302045',
+            'Test2::Hub'            => '1.302045',
+            'Test2::Hub::Interceptor'=> '1.302045',
+            'Test2::Hub::Interceptor::Terminator'=> '1.302045',
+            'Test2::Hub::Subtest'   => '1.302045',
+            'Test2::IPC'            => '1.302045',
+            'Test2::IPC::Driver'    => '1.302045',
+            'Test2::IPC::Driver::Files'=> '1.302045',
+            'Test2::Util'           => '1.302045',
+            'Test2::Util::ExternalMeta'=> '1.302045',
+            'Test2::Util::HashBase' => '1.302045',
+            'Test2::Util::Trace'    => '1.302045',
+            'Test::Builder'         => '1.302045',
+            'Test::Builder::Formatter'=> '1.302045',
+            'Test::Builder::Module' => '1.302045',
+            'Test::Builder::Tester' => '1.302045',
+            'Test::Builder::Tester::Color'=> '1.302045',
+            'Test::Builder::TodoDiag'=> '1.302045',
+            'Test::More'            => '1.302045',
+            'Test::Simple'          => '1.302045',
+            'Test::Tester'          => '1.302045',
+            'Test::Tester::Capture' => '1.302045',
+            'Test::Tester::CaptureRunner'=> '1.302045',
+            'Test::Tester::Delegate'=> '1.302045',
+            'Test::use::ok'         => '1.302045',
+            'Time::HiRes'           => '1.9739',
+            'Unicode'               => '9.0.0',
+            'Unicode::UCD'          => '0.66',
+            'XSLoader'              => '0.22',
+            'bigint'                => '0.43',
+            'bignum'                => '0.43',
+            'bigrat'                => '0.43',
+            'encoding'              => '2.17_01',
+            'encoding::warnings'    => '0.13',
+            'feature'               => '1.45',
+            'ok'                    => '1.302045',
+            'version'               => '0.9917',
+            'version::regex'        => '0.9917',
+            'warnings'              => '1.37',
+        },
+        removed => {
+        }
+    },
 );
 
 sub is_core
@@ -12755,13 +12881,7 @@ sub is_core
     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;
-}
+%version = _undelta(\%delta);
 
 %deprecated = (
     5.011    => {
@@ -13376,15 +13496,16 @@ for my $version (sort { $a <=> $b } keys %delta) {
         removed => {
         }
     },
+    5.025003 => {
+        delta_from => 5.025002,
+        changed => {
+        },
+        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;
-}
+%deprecated = _undelta(\%deprecated);
 
 %upstream = (
     'App::Cpan'             => 'cpan',
@@ -13749,6 +13870,7 @@ for my $version (sort { $a <=> $b } keys %deprecated) {
     'Test2::Event::Diag'    => 'cpan',
     'Test2::Event::Exception'=> 'cpan',
     'Test2::Event::Generic' => 'cpan',
+    'Test2::Event::Info'    => 'cpan',
     'Test2::Event::Note'    => 'cpan',
     'Test2::Event::Ok'      => 'cpan',
     'Test2::Event::Plan'    => 'cpan',
@@ -14185,6 +14307,7 @@ for my $version (sort { $a <=> $b } keys %deprecated) {
     'Test2::Event::Diag'    => 'http://github.com/Test-More/test-more/issues',
     'Test2::Event::Exception'=> 'http://github.com/Test-More/test-more/issues',
     'Test2::Event::Generic' => 'http://github.com/Test-More/test-more/issues',
+    'Test2::Event::Info'    => 'http://github.com/Test-More/test-more/issues',
     'Test2::Event::Note'    => 'http://github.com/Test-More/test-more/issues',
     'Test2::Event::Ok'      => 'http://github.com/Test-More/test-more/issues',
     'Test2::Event::Plan'    => 'http://github.com/Test-More/test-more/issues',
index 69f994e..2bfae68 100644 (file)
@@ -3,7 +3,7 @@ package Module::CoreList::TieHashDelta;
 use strict;
 use vars qw($VERSION);
 
-$VERSION = '5.20160620';
+$VERSION = '5.20160720';
 
 sub TIEHASH {
     my ($class, $changed, $removed, $parent) = @_;
index 62ea8c2..6044292 100644 (file)
@@ -4,9 +4,8 @@ use strict;
 use warnings;
 use vars qw[$VERSION %utilities];
 use Module::CoreList;
-use Module::CoreList::TieHashDelta;
 
-$VERSION = '5.20160620';
+$VERSION = '5.20160720';
 
 sub utilities {
     my $perl = shift;
@@ -1171,15 +1170,16 @@ my %delta = (
         removed => {
         }
     },
+    5.025003 => {
+        delta_from => 5.025002,
+        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;
-}
+%utilities = Module::CoreList::_undelta(\%delta);
 
 # Create aliases with trailing zeros for $] use
 
index 9d097c5..d54fda8 100644 (file)
@@ -1,5 +1,55 @@
 Revision history for the Perl extension Time::HiRes.
 
+1.9739 [2016-06-28]
+  - the upcoming macOS 10.12 (Sierra, the operating system formerly
+    known as OS X, or Darwin) has implemented the clock_gettime()
+    and clock_getres() interfaces but not the clock_nanosleep()
+
+1.9738 [2016-06-26]
+  - fix the dates in the Changes, it's not July yet
+    [rt.cpan.org #115553]
+  - in cygwin, drop the utime.t expected timestamp resolution
+  - documented for utime that the actual timestamp resolution depends
+    on the operating system and the filesystem, just like for stat
+  - looks like in gnukfreebsd 10.1 neither futimens or utimensat work
+    even though they exist, skipping utime tests there for now
+  - demodernize the Test::More use in utime.t (no subtest) to
+    better support older Perl installations
+  - for all the tests, drop the Test::More 0.82 requirement,
+    the only "modern" thing used is the note routine which
+    can be replaced with print("# ...\n") (or printf),
+    with this works back at least with Test::More 0.54 (perl 5.8.7) 
+
+1.9737 [2016-06-22]
+  - utime in HiRes.xs had dXSARGS which was unnecessary, leading
+    to two markstack pops, panic, and two-minute wait for the watchdog
+    (thanks to Dave Mitchell for the eagle-eye)
+  - even though 5.10.x should have the Perl_ck_warner, many CPAN
+    smokes proved otherwise, so requiring now at least 5.12 for
+    Perl_ck_warner use in IS_SAFE_PATHNAME() 
+
+1.9736 [2016-06-22]
+  - the IS_SAFE_PATHNAME() emulation was too modern for Perl 5.10
+  - make it so that only one value is set for -DTIME_HIRES_STAT
+    even on systems that support many options
+  - the 1.9734 (only released in blead, and as part of the development
+    release 5.25.2) fix for Darwin's clock_gettime was wrong under
+    threaded builds, leading into mutex panics in clock.t 
+  - the d_hires_utime determination was made more precise
+  - the utime.t was failing in platforms where only one of
+    futimens/utimensat was present (neither or both was okay)
+
+1.9735 [2016-06-20]
+  - Time::HiRes should override `utime` to allow setting hires
+    (futimens and utimensat support)
+    [rt.perl.org #114809]
+  - the utime patch used IS_SAFE_PATHNAME() which isn't available in
+    too old Perls, so emulate (in case the Devel::PPPort is too old)
+
+1.9734 [2016-06-17]
+  - fix Darwins with clock_gettime: blead 2d41a263
+    [rt.perl.org #128427]
+
 1.9733 [2016-04-23]
   - C90 declaration-after-statement error with darwin threads: blead de1003b4
     [rt.cpan.org #113856]
index e22a663..2071e5e 100644 (file)
@@ -23,12 +23,12 @@ our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval
                 ITIMER_REAL ITIMER_VIRTUAL ITIMER_PROF ITIMER_REALPROF
                 TIMER_ABSTIME
                 d_usleep d_ualarm d_gettimeofday d_getitimer d_setitimer
-                d_nanosleep d_clock_gettime d_clock_getres
+                d_nanosleep d_clock_gettime d_clock_getres d_hires_utime
                 d_clock d_clock_nanosleep
-                stat lstat
+                stat lstat utime
                );
 
-our $VERSION = '1.9734';
+our $VERSION = '1.9739';
 our $XS_VERSION = $VERSION;
 $VERSION = eval $VERSION;
 
@@ -60,6 +60,7 @@ sub import {
            ($i eq 'clock'           && !&d_clock)           ||
            ($i eq 'nanosleep'       && !&d_nanosleep)       ||
            ($i eq 'usleep'          && !&d_usleep)          ||
+           ($i eq 'utime'           && !&d_hires_utime)     ||
            ($i eq 'ualarm'          && !&d_ualarm)) {
            require Carp;
            Carp::croak("Time::HiRes::$i(): unimplemented in this platform");
@@ -92,7 +93,7 @@ Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers
 
   use Time::HiRes qw( usleep ualarm gettimeofday tv_interval nanosleep
                      clock_gettime clock_getres clock_nanosleep clock
-                      stat lstat );
+                      stat lstat utime);
 
   usleep ($microseconds);
   nanosleep ($nanoseconds);
@@ -137,6 +138,9 @@ Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers
   my @stat = stat(FH);
   my @stat = lstat("file");
 
+  use Time::HiRes qw( utime );
+  utime $floating_seconds, $floating_seconds, file...;
+
 =head1 DESCRIPTION
 
 The C<Time::HiRes> module implements a Perl interface to the
@@ -446,6 +450,26 @@ if the operations are
 the access time stamp from t2 need not be greater-than the modify
 time stamp from t1: it may be equal or I<less>.
 
+=item utime LIST
+
+As L<perlfunc/utime>
+but with the ability to set the access/modify file timestamps
+in subsecond resolution, if the operating system and the filesystem
+both support such timestamps.  To override the standard utime():
+
+    use Time::HiRes qw(utime);
+
+Test for the value of &Time::HiRes::d_hires_utime to find out whether
+the operating system supports setting subsecond file timestamps.
+
+As with CORE::utime(), passing undef as both the atime and mtime will
+call the syscall with a NULL argument.
+
+The actual achievable subsecond resolution depends on the combination
+of the operating system and the filesystem.
+
+Returns the number of files successfully changed.
+
 =back
 
 =head1 EXAMPLES
@@ -586,9 +610,13 @@ might help in this (in case your system supports CLOCK_MONOTONIC).
 Some systems have APIs but not implementations: for example QNX and Haiku
 have the interval timer APIs but not the functionality.
 
-In OS X clock_getres(), clock_gettime() and clock_nanosleep() are
-emulated using the Mach timers; as a side effect of being emulated
-the CLOCK_REALTIME and CLOCK_MONOTONIC are the same timer.
+In pre-Sierra macOS (pre-10.12, OS X) clock_getres(), clock_gettime()
+and clock_nanosleep() are emulated using the Mach timers; as a side
+effect of being emulated the CLOCK_REALTIME and CLOCK_MONOTONIC are
+the same timer.
+
+gnukfreebsd seems to have non-functional futimens() and utimensat()
+(at least as of 10.1): therefore the hires utime() does not work.
 
 =head1 SEE ALSO
 
index ed60336..3a5c7a1 100644 (file)
@@ -747,21 +747,33 @@ hrstatns(UV *atime_nsec, UV *mtime_nsec, UV *ctime_nsec)
 #endif /* !TIME_HIRES_STAT */
 }
 
-/* Until Apple implements clock_gettime() (ditto clock_getres())
- * we will emulate it using Mach interfaces. */
-#if defined(PERL_DARWIN) && !defined(CLOCK_REALTIME)
-
-#  include <mach/mach_time.h>
-
+/* Until Apple implements clock_gettime()
+ * (ditto clock_getres() and clock_nanosleep())
+ * we will emulate them using the Mach kernel interfaces. */
+#if defined(PERL_DARWIN) && \
+  (defined(TIME_HIRES_CLOCK_GETTIME_EMULATION)   || \
+   defined(TIME_HIRES_CLOCK_GETRES_EMULATION)    || \
+   defined(TIME_HIRES_CLOCK_NANOSLEEP_EMULATION))
+
+#ifndef CLOCK_REALTIME
 #  define CLOCK_REALTIME  0x01
 #  define CLOCK_MONOTONIC 0x02
+#endif
 
+#ifndef TIMER_ABSTIME
 #  define TIMER_ABSTIME   0x01
+#endif
 
 #ifdef USE_ITHREADS
+#  define PERL_DARWIN_MUTEX
+#endif
+
+#ifdef PERL_DARWIN_MUTEX
 STATIC perl_mutex darwin_time_mutex;
 #endif
 
+#include <mach/mach_time.h>
+
 static uint64_t absolute_time_init;
 static mach_timebase_info_data_t timebase_info;
 static struct timespec timespec_init;
@@ -769,7 +781,7 @@ static struct timespec timespec_init;
 static int darwin_time_init() {
   struct timeval tv;
   int success = 1;
-#ifdef USE_ITHREADS
+#ifdef PERL_DARWIN_MUTEX
   MUTEX_LOCK(&darwin_time_mutex);
 #endif
   if (absolute_time_init == 0) {
@@ -784,12 +796,13 @@ static int darwin_time_init() {
       }
     }
   }
-#ifdef USE_ITHREADS
+#ifdef PERL_DARWIN_MUTEX
   MUTEX_UNLOCK(&darwin_time_mutex);
 #endif
   return success;
 }
 
+#ifdef TIME_HIRES_CLOCK_GETTIME_EMULATION
 static int clock_gettime(int clock_id, struct timespec *ts) {
   if (darwin_time_init() && timebase_info.denom) {
     switch (clock_id) {
@@ -821,7 +834,9 @@ static int clock_gettime(int clock_id, struct timespec *ts) {
   SETERRNO(EINVAL, LIB_INVARG);
   return -1;
 }
+#endif /* TIME_HIRES_CLOCK_GETTIME_EMULATION */
 
+#ifdef TIME_HIRES_CLOCK_GETRES_EMULATION
 static int clock_getres(int clock_id, struct timespec *ts) {
   if (darwin_time_init() && timebase_info.denom) {
     switch (clock_id) {
@@ -841,7 +856,9 @@ static int clock_getres(int clock_id, struct timespec *ts) {
   SETERRNO(EINVAL, LIB_INVARG);
   return -1;
 }
+#endif /* TIME_HIRES_CLOCK_GETRES_EMULATION */
 
+#ifdef TIME_HIRES_CLOCK_NANOSLEEP_EMULATION
 static int clock_nanosleep(int clock_id, int flags,
                           const struct timespec *rqtp,
                           struct timespec *rmtp) {
@@ -879,6 +896,7 @@ static int clock_nanosleep(int clock_id, int flags,
   SETERRNO(EINVAL, LIB_INVARG);
   return -1;
 }
+#endif /* TIME_HIRES_CLOCK_NANOSLEEP_EMULATION */
 
 #endif /* PERL_DARWIN */
 
@@ -921,6 +939,22 @@ nsec_without_unslept(struct timespec *sleepfor,
 
 #endif
 
+/* In case Perl and/or Devel::PPPort are too old, minimally emulate
+ * IS_SAFE_PATHNAME() (which looks for zero bytes in the pathname). */
+#ifndef IS_SAFE_PATHNAME
+#if PERL_VERSION >= 12 /* Perl_ck_warner is 5.10.0 -> */
+#ifdef WARN_SYSCALLS
+#define WARNEMUCAT WARN_SYSCALLS /* 5.22.0 -> */
+#else
+#define WARNEMUCAT WARN_MISC
+#endif
+#define WARNEMU(opname) Perl_ck_warner(aTHX_ packWARN(WARNEMUCAT), "Invalid \\0 character in pathname for %s",opname)
+#else
+#define WARNEMU(opname) Perl_warn(aTHX_ "Invalid \\0 character in pathname for %s",opname)
+#endif
+#define IS_SAFE_PATHNAME(pv, len, opname) (((len)>1)&&memchr((pv), 0, (len)-1)?(SETERRNO(ENOENT, LIB_INVARG),WARNEMU(opname),FALSE):(TRUE))
+#endif
+
 MODULE = Time::HiRes            PACKAGE = Time::HiRes
 
 PROTOTYPES: ENABLE
@@ -940,8 +974,8 @@ BOOT:
   }
 #   endif
 #endif
-#if defined(PERL_DARWIN) && !defined(CLOCK_REALTIME)
-#  ifdef USE_ITHREADS
+#if defined(PERL_DARWIN)
+#  if defined(USE_ITHREADS) && defined(PERL_DARWIN_MUTEX)
   MUTEX_INIT(&darwin_time_mutex);
 #  endif
 #endif
@@ -1317,6 +1351,82 @@ getitimer(which)
 
 #endif /* #if defined(HAS_GETITIMER) && defined(HAS_SETITIMER) */
 
+#if defined(TIME_HIRES_UTIME)
+
+I32
+utime(accessed, modified, ...)
+PROTOTYPE: $$@
+    PREINIT:
+       SV* accessed;
+       SV* modified;
+       SV* file;
+
+       struct timespec utbuf[2];
+       struct timespec *utbufp = utbuf;
+       int tot;
+
+    CODE:
+       accessed = ST(0);
+       modified = ST(1);
+       items -= 2;
+       tot = 0;
+
+       if ( accessed == &PL_sv_undef && modified == &PL_sv_undef )
+               utbufp = NULL;
+       else {
+               if (SvNV(accessed) < 0.0 || SvNV(modified) < 0.0)
+                       croak("Time::HiRes::utime(%"NVgf", %"NVgf"): negative time not invented yet", SvNV(accessed), SvNV(modified));
+               Zero(&utbuf, sizeof utbuf, char);
+               utbuf[0].tv_sec = (Time_t)SvNV(accessed);  /* time accessed */
+               utbuf[0].tv_nsec = (long)( ( SvNV(accessed) - utbuf[0].tv_sec ) * 1e9 );
+               utbuf[1].tv_sec = (Time_t)SvNV(modified);  /* time modified */
+               utbuf[1].tv_nsec = (long)( ( SvNV(modified) - utbuf[1].tv_sec ) * 1e9 );
+       }
+
+       while (items > 0) {
+               file = POPs; items--;
+
+               if (SvROK(file) && GvIO(SvRV(file)) && IoIFP(sv_2io(SvRV(file)))) {
+                       int fd =  PerlIO_fileno(IoIFP(sv_2io(file)));
+                       if (fd < 0)
+                               SETERRNO(EBADF,RMS_IFI);
+                       else 
+#ifdef HAS_FUTIMENS
+                       if (futimens(fd, utbufp) == 0)
+                               tot++;
+#else  /* HAS_FUTIMES */
+                               croak("futimens unimplemented in this platform");
+#endif /* HAS_FUTIMES */
+               }
+               else {
+#ifdef HAS_UTIMENSAT
+                       STRLEN len;
+                       char * name = SvPV(file, len);
+                       if (IS_SAFE_PATHNAME(name, len, "utime") &&
+                           utimensat(AT_FDCWD, name, utbufp, 0) == 0)
+                               tot++;
+#else  /* HAS_UTIMENSAT */
+                       croak("utimensat unimplemented in this platform");
+#endif /* HAS_UTIMENSAT */
+               }
+       } /* while items */
+       RETVAL = tot;
+
+    OUTPUT:
+       RETVAL
+
+#else  /* #if defined(TIME_HIRES_UTIME) */
+
+I32
+utime(accessed, modified, ...)
+    CODE:
+        croak("Time::HiRes::utime(): unimplemented in this platform");
+        RETVAL = 0;
+    OUTPUT:
+       RETVAL
+
+#endif /* #if defined(TIME_HIRES_UTIME) */
+
 #if defined(TIME_HIRES_CLOCK_GETTIME)
 
 NV
index 087ab79..1c1ce1f 100644 (file)
@@ -354,6 +354,41 @@ int main(int argc, char** argv)
 EOM
 }
 
+sub has_futimens {
+    return 1 if
+    try_compile_and_link(<<EOM);
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+#include <sys/time.h>
+int main(int argc, char** argv)
+{
+    int ret;
+    struct timespec ts[2];
+    ret = futimens(0, ts);
+    ret == 0 ? exit(0) : exit(errno ? errno : -1);
+}
+EOM
+}
+
+sub has_utimensat{
+    return 1 if
+    try_compile_and_link(<<EOM);
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+#include <sys/time.h>
+#include <fcntl.h>
+int main(int argc, char** argv)
+{
+    int ret;
+    struct timespec ts[2];
+    ret = utimensat(AT_FDCWD, 0, ts, 0);
+    ret == 0 ? exit(0) : exit(errno ? errno : -1);
+}
+EOM
+}
+
 sub DEFINE {
     my ($def, $val) = @_;
     my $define = defined $val ? "$def=$val" : $def ;
@@ -548,7 +583,7 @@ EOD
     } elsif ($^O eq 'darwin') {
        $has_clock_gettime_emulation++;
        $has_clock_gettime++;
-       $DEFINE .= ' -DTIME_HIRES_CLOCK_GETTIME';
+       $DEFINE .= ' -DTIME_HIRES_CLOCK_GETTIME -DTIME_HIRES_CLOCK_GETTIME_EMULATION';
     }
 
     if ($has_clock_gettime) {
@@ -577,7 +612,7 @@ EOD
     } elsif ($^O eq 'darwin') {
        $has_clock_getres_emulation++;
        $has_clock_getres++;
-       $DEFINE .= ' -DTIME_HIRES_CLOCK_GETRES';
+       $DEFINE .= ' -DTIME_HIRES_CLOCK_GETRES -DTIME_HIRES_CLOCK_GETRES_EMULATION';
     }
 
     if ($has_clock_getres) {
@@ -603,7 +638,7 @@ EOD
     } elsif ($^O eq 'darwin') {
         $has_clock_nanosleep++;
         $has_clock_nanosleep_emulation++;
-       $DEFINE .= ' -DTIME_HIRES_CLOCK_NANOSLEEP';
+       $DEFINE .= ' -DTIME_HIRES_CLOCK_NANOSLEEP -DTIME_HIRES_CLOCK_NANOSLEEP_EMULATION';
     }
 
     if ($has_clock_nanosleep) {
@@ -631,6 +666,36 @@ EOD
        print "NOT found.\n";
     }
 
+    print "Looking for futimens()... ";
+    my $has_futimens;
+    if (has_futimens()) {
+        $has_futimens++;
+       $DEFINE .= ' -DHAS_FUTIMENS';
+    }
+
+    if ($has_futimens) {
+        print "found.\n";
+    } else {
+       print "NOT found.\n";
+    }
+
+    print "Looking for utimensat()... ";
+    my $has_utimensat;
+    if (has_utimensat()) {
+        $has_utimensat++;
+       $DEFINE .= ' -DHAS_UTIMENSAT';
+    }
+
+    if ($has_utimensat) {
+        print "found.\n";
+    } else {
+       print "NOT found.\n";
+    }
+
+    if ($has_futimens or $has_utimensat) {
+       $DEFINE .= ' -DTIME_HIRES_UTIME';
+    }
+
     print "Looking for stat() subsecond timestamps...\n";
 
     print "Trying struct stat st_atimespec.tv_nsec...";
@@ -644,7 +709,7 @@ int main(int argc, char** argv) {
 }
 EOM
       $has_stat_st_xtimespec++;
-      DEFINE('TIME_HIRES_STAT', 1);
+      DEFINE('TIME_HIRES_STAT_ST_XTIMESPEC');  # 1
     }
 
     if ($has_stat_st_xtimespec) {
@@ -664,7 +729,7 @@ int main(int argc, char** argv) {
 }
 EOM
       $has_stat_st_xtimensec++;
-      DEFINE('TIME_HIRES_STAT', 2);
+      DEFINE('TIME_HIRES_STAT_ST_XTIMENSEC');  # 2
     }
 
     if ($has_stat_st_xtimensec) {
@@ -684,7 +749,7 @@ int main(int argc, char** argv) {
 }
 EOM
       $has_stat_st_xtime_n++;
-      DEFINE('TIME_HIRES_STAT', 3);
+      DEFINE('TIME_HIRES_STAT_ST_XTIME_N');  # 3
     }
 
     if ($has_stat_st_xtime_n) {
@@ -704,7 +769,7 @@ int main(int argc, char** argv) {
 }
 EOM
       $has_stat_st_xtim++;
-      DEFINE('TIME_HIRES_STAT', 4);
+      DEFINE('TIME_HIRES_STAT_XTIM');  # 4
     }
 
     if ($has_stat_st_xtim) {
@@ -724,7 +789,7 @@ int main(int argc, char** argv) {
 }
 EOM
       $has_stat_st_uxtime++;
-      DEFINE('TIME_HIRES_STAT', 5);
+      DEFINE('TIME_HIRES_STAT_ST_UXTIME');  # 5
     }
 
     if ($has_stat_st_uxtime) {
@@ -733,6 +798,19 @@ EOM
        print "NOT found.\n";
     }
 
+    # See HiRes.xs hrstatns()
+    if ($has_stat_st_xtimespec) {
+        DEFINE('TIME_HIRES_STAT', 1);
+    } elsif ($has_stat_st_xtimensec) {
+        DEFINE('TIME_HIRES_STAT', 2);
+    } elsif ($has_stat_st_xtime_n) {
+        DEFINE('TIME_HIRES_STAT', 3);
+    } elsif ($has_stat_st_xtim) {
+        DEFINE('TIME_HIRES_STAT', 4);
+    } elsif ($has_stat_st_uxtime) {
+        DEFINE('TIME_HIRES_STAT', 5);
+    }    
+
    if ($DEFINE =~ /-DTIME_HIRES_STAT=\d+/) {
     print "You seem to have stat() subsecond timestamps.\n";
     print "(Your struct stat has them, but the filesystems must help.)\n";
@@ -791,7 +869,7 @@ sub doMakefile {
            'DynaLoader' => 0,
            'Exporter' => 0,
            'ExtUtils::MakeMaker' => 0,
-           'Test::More' => "0.82",
+           'Test::More' => 0,
            'strict' => 0,
        },
        'dist'      => {
@@ -869,7 +947,8 @@ sub doConstants {
                       );
        foreach (qw (d_usleep d_ualarm d_gettimeofday d_getitimer d_setitimer
                     d_nanosleep d_clock_gettime d_clock_getres
-                    d_clock d_clock_nanosleep d_hires_stat)) {
+                    d_clock d_clock_nanosleep d_hires_stat
+                     d_futimens d_utimensat d_hires_utime)) {
            my $macro = $_;
            if ($macro =~ /^(d_nanosleep|d_clock)$/) {
                $macro =~ s/^d_(.+)/TIME_HIRES_\U$1/;
@@ -879,6 +958,13 @@ sub doConstants {
                push @names, {name => $_, macro => "TIME_HIRES_STAT", value => $d_hires_stat,
                              default => ["IV", "0"]};
                next;
+           } elsif ($macro =~ /^(d_hires_utime)$/) {
+               my $d_hires_utime =
+                    ($DEFINE =~ /-DHAS_FUTIMENS/ ||
+                     $DEFINE =~ /-DHAS_UTIMENSAT/) ? 1 : 0;
+               push @names, {name => $_, macro => "TIME_HIRES_UTIME", value => $d_hires_utime,
+                             default => ["IV", "0"]};
+               next;
            } elsif ($macro =~ /^(d_clock_gettime|d_clock_getres|d_clock_nanosleep)$/) {
                $macro =~ s/^d_(.+)/TIME_HIRES_\U$1/;
                my $val = ($DEFINE =~ /-D$macro\b/) ? 1 : 0;
index a862617..524db16 100644 (file)
@@ -19,6 +19,7 @@ typedef double NV; /* 5.6 and later define NVTYPE, and typedef NV to it.  */
 #ifndef pTHX_
 #define pTHX_ /* 5.6 or later define this for threading support.  */
 #endif
+
 static int
 constant_11 (pTHX_ const char *name, IV *iv_return) {
   /* When generated this function returned values for the list of names given
@@ -87,6 +88,51 @@ constant_11 (pTHX_ const char *name, IV *iv_return) {
 }
 
 static int
+constant_13 (pTHX_ const char *name, IV *iv_return) {
+  /* When generated this function returned values for the list of names given
+     here.  However, subsequent manual editing may have added or removed some.
+     CLOCK_HIGHRES TIMER_ABSTIME d_hires_utime */
+  /* Offset 1 gives the best switch position.  */
+  switch (name[1]) {
+  case 'I':
+    if (memEQ(name, "TIMER_ABSTIME", 13)) {
+    /*                ^                  */
+#ifdef TIMER_ABSTIME
+      *iv_return = TIMER_ABSTIME;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case 'L':
+    if (memEQ(name, "CLOCK_HIGHRES", 13)) {
+    /*                ^                  */
+#ifdef CLOCK_HIGHRES
+      *iv_return = CLOCK_HIGHRES;
+      return PERL_constant_ISIV;
+#else
+      return PERL_constant_NOTDEF;
+#endif
+    }
+    break;
+  case '_':
+    if (memEQ(name, "d_hires_utime", 13)) {
+    /*                ^                  */
+#ifdef TIME_HIRES_UTIME
+      *iv_return = 1;
+      return PERL_constant_ISIV;
+#else
+      *iv_return = 0;
+      return PERL_constant_ISIV;
+#endif
+    }
+    break;
+  }
+  return PERL_constant_NOTFOUND;
+}
+
+static int
 constant_14 (pTHX_ const char *name, IV *iv_return) {
   /* When generated this function returned values for the list of names given
      here.  However, subsequent manual editing may have added or removed some.
@@ -250,16 +296,17 @@ my @names = (qw(CLOCKS_PER_SEC CLOCK_HIGHRES CLOCK_MONOTONIC
             {name=>"d_getitimer", type=>"IV", macro=>"HAS_GETITIMER", value=>"1", default=>["IV", "0"]},
             {name=>"d_gettimeofday", type=>"IV", macro=>"HAS_GETTIMEOFDAY", value=>"1", default=>["IV", "0"]},
             {name=>"d_hires_stat", type=>"IV", macro=>"TIME_HIRES_STAT", value=>"1", default=>["IV", "0"]},
+            {name=>"d_hires_utime", type=>"IV", macro=>"TIME_HIRES_UTIME", value=>"1", default=>["IV", "0"]},
             {name=>"d_nanosleep", type=>"IV", macro=>"TIME_HIRES_NANOSLEEP", value=>"1", default=>["IV", "0"]},
             {name=>"d_setitimer", type=>"IV", macro=>"HAS_SETITIMER", value=>"1", default=>["IV", "0"]},
             {name=>"d_ualarm", type=>"IV", macro=>"HAS_UALARM", value=>"1", default=>["IV", "0"]},
             {name=>"d_usleep", type=>"IV", macro=>"HAS_USLEEP", value=>"1", default=>["IV", "0"]});
 
-print constant_types(); # macro defs
+print constant_types(), "\n"; # macro defs
 foreach (C_constant ("Time::HiRes", 'constant', 'IV', $types, undef, 3, @names) ) {
     print $_, "\n"; # C constant subs
 }
-print "#### XS Section:\n";
+print "\n#### XS Section:\n";
 print XS_constant ("Time::HiRes", $types);
 __END__
    */
@@ -322,33 +369,7 @@ __END__
     }
     break;
   case 13:
-    /* Names all of length 13.  */
-    /* CLOCK_HIGHRES TIMER_ABSTIME */
-    /* Offset 2 gives the best switch position.  */
-    switch (name[2]) {
-    case 'M':
-      if (memEQ(name, "TIMER_ABSTIME", 13)) {
-      /*                 ^                 */
-#ifdef TIMER_ABSTIME
-        *iv_return = TIMER_ABSTIME;
-        return PERL_constant_ISIV;
-#else
-        return PERL_constant_NOTDEF;
-#endif
-      }
-      break;
-    case 'O':
-      if (memEQ(name, "CLOCK_HIGHRES", 13)) {
-      /*                 ^                 */
-#ifdef CLOCK_HIGHRES
-        *iv_return = CLOCK_HIGHRES;
-        return PERL_constant_ISIV;
-#else
-        return PERL_constant_NOTDEF;
-#endif
-      }
-      break;
-    }
+    return constant_13 (aTHX_ name, iv_return);
     break;
   case 14:
     return constant_14 (aTHX_ name, iv_return);
index 83e8543..44ec808 100644 (file)
@@ -10,44 +10,44 @@ my $watchdog_pid;
 my $TheEnd;
 
 if ($Config{d_fork}) {
-    note "I am the main process $$, starting the watchdog process...";
+    print("# I am the main process $$, starting the watchdog process...\n");
     $watchdog_pid = fork();
     if (defined $watchdog_pid) {
        if ($watchdog_pid == 0) { # We are the kid, set up the watchdog.
            my $ppid = getppid();
-           note "I am the watchdog process $$, sleeping for $waitfor seconds...";
+           print("# I am the watchdog process $$, sleeping for $waitfor seconds...\n");
            sleep($waitfor - 2);    # Workaround for perlbug #49073
            sleep(2);               # Wait for parent to exit
            if (kill(0, $ppid)) {   # Check if parent still exists
                warn "\n$0: overall time allowed for tests (${waitfor}s) exceeded!\n";
-               note "Terminating main process $ppid...";
+               print("Terminating main process $ppid...\n");
                kill('KILL', $ppid);
-               note "This is the watchdog process $$, over and out.";
+               print("# This is the watchdog process $$, over and out.\n");
            }
            exit(0);
        } else {
-           note "The watchdog process $watchdog_pid launched, continuing testing...";
+           print("# The watchdog process $watchdog_pid launched, continuing testing...\n");
            $TheEnd = time() + $waitfor;
        }
     } else {
        warn "$0: fork failed: $!\n";
     }
 } else {
-    note "No watchdog process (need fork)";
+    print("# No watchdog process (need fork)\n");
 }
 
 END {
     if ($watchdog_pid) { # Only in the main process.
        my $left = $TheEnd - time();
-       note sprintf "I am the main process $$, terminating the watchdog process $watchdog_pid before it terminates me in %d seconds (testing took %d seconds).", $left, $waitfor - $left;
+       printf("# I am the main process $$, terminating the watchdog process $watchdog_pid before it terminates me in %d seconds (testing took %d seconds).\n", $left, $waitfor - $left);
        if (kill(0, $watchdog_pid)) {
            local $? = 0;
            my $kill = kill('KILL', $watchdog_pid); # We are done, the watchdog can go.
            wait();
-           note sprintf "kill KILL $watchdog_pid = %d", $kill;
+           printf("# kill KILL $watchdog_pid = %d\n", $kill);
        }
        unlink("ktrace.out"); # Used in BSD system call tracing.
-       note "All done.";
+       print("# All done.\n");
     }
 }
 
index 841694f..f600f99 100644 (file)
@@ -1,6 +1,6 @@
 use strict;
 
-use Test::More 0.82 tests => 10;
+use Test::More tests => 10;
 use t::Watchdog;
 
 BEGIN { require_ok "Time::HiRes"; }
@@ -29,12 +29,14 @@ SKIP: {
 
     my ($r, $i, $not, $ok);
 
+    $not = "";
+
     $r = [Time::HiRes::gettimeofday()];
     $i = 5;
     my $oldaction;
     if ($use_sigaction) {
        $oldaction = new POSIX::SigAction;
-       note sprintf "sigaction tick, ALRM = %d", &POSIX::SIGALRM;
+       printf("# sigaction tick, ALRM = %d\n", &POSIX::SIGALRM);
 
        # Perl's deferred signals may be too wimpy to break through
        # a restartable select(), so use POSIX::sigaction if available.
@@ -44,7 +46,7 @@ SKIP: {
                         $oldaction)
            or die "Error setting SIGALRM handler with sigaction: $!\n";
     } else {
-       note "SIG tick";
+       print("# SIG tick\n");
        $SIG{ALRM} = "tick";
     }
 
@@ -56,8 +58,8 @@ SKIP: {
            Time::HiRes::alarm(0.3);
            select (undef, undef, undef, 3);
            my $ival = Time::HiRes::tv_interval ($r);
-           note "Select returned! $i $ival";
-           note abs($ival/3 - 1);
+           print("# Select returned! $i $ival\n");
+           printf("# %s\n", abs($ival/3 - 1));
            # Whether select() gets restarted after signals is
            # implementation dependent.  If it is restarted, we
            # will get about 3.3 seconds: 3 from the select, 0.3
@@ -86,7 +88,7 @@ SKIP: {
     sub tick {
        $i--;
        my $ival = Time::HiRes::tv_interval ($r);
-       note "Tick! $i $ival";
+       print("# Tick! $i $ival\n");
        my $exp = 0.3 * (5 - $i);
        if ($exp == 0) {
            $not = "tick: divisor became zero";
@@ -106,8 +108,8 @@ SKIP: {
        Time::HiRes::alarm(0); # can't cancel usig %SIG
     }
 
+    print("# $not\n");
     ok !$not;
-    note $not || $ok;
 }
 
 SKIP: {
@@ -126,7 +128,7 @@ SKIP: {
     # http://groups.google.com/group/perl.perl5.porters/browse_thread/thread/adaffaaf939b042e/20dafc298df737f0%2320dafc298df737f0?sa=X&oi=groupsr&start=0&num=3
     # Perl changes [18765] and [18770], perl bug [perl #20920]
 
-    note "Finding delay loop...";
+    print("# Finding delay loop...\n");
 
     my $T = 0.01;
     my $DelayN = 1024;
@@ -137,7 +139,7 @@ SKIP: {
         for ($i = 0; $i < $DelayN; $i++) { }
         my $t1 = Time::HiRes::time();
         my $dt = $t1 - $t0;
-        note "N = $DelayN, t1 = $t1, t0 = $t0, dt = $dt";
+        print("# N = $DelayN, t1 = $t1, t0 = $t0, dt = $dt\n");
         last N if $dt > $T;
         $DelayN *= 2;
      } while (1);
@@ -169,7 +171,7 @@ SKIP: {
 
     $SIG{ALRM} = sub {
        $a++;
-       note "Alarm $a - ", Time::HiRes::time();
+       printf("# Alarm $a - %s\n", Time::HiRes::time());
        Time::HiRes::alarm(0) if $a >= $A; # Disarm the alarm.
        $Delay->(2); # Try burning CPU at least for 2T seconds.
     }; 
@@ -204,18 +206,18 @@ SKIP: {
        my $alrm = 0;
        $SIG{ALRM} = sub { $alrm++ };
        my $got = Time::HiRes::alarm(2.7);
-       ok $got == 0 or note $got;
+       ok $got == 0 or print("# $got\n");
 
        my $t0 = Time::HiRes::time();
        1 while Time::HiRes::time() - $t0 <= 1;
 
        $got = Time::HiRes::alarm(0);
-       ok $got > 0 && $got < 1.8 or note $got;
+       ok $got > 0 && $got < 1.8 or print("# $got\n");
 
-       ok $alrm == 0 or note $alrm;
+       ok $alrm == 0 or print("# $alrm\n");
 
        $got = Time::HiRes::alarm(0);
-       ok $got == 0 or note $got;
+       ok $got == 0 or print("# $got\n");
     }
 }
 
index 6d11dd2..346ca57 100644 (file)
@@ -1,6 +1,6 @@
 use strict;
 
-use Test::More 0.82 tests => 5;
+use Test::More tests => 5;
 use t::Watchdog;
 
 BEGIN { require_ok "Time::HiRes"; }
@@ -13,10 +13,10 @@ sub has_symbol {
     return $@ eq '';
 }
 
-note sprintf "have_clock_gettime   = %d", &Time::HiRes::d_clock_gettime;
-note sprintf "have_clock_getres    = %d", &Time::HiRes::d_clock_getres;
-note sprintf "have_clock_nanosleep = %d", &Time::HiRes::d_clock_nanosleep;
-note sprintf "have_clock           = %d", &Time::HiRes::d_clock;
+printf("# have_clock_gettime   = %d\n", &Time::HiRes::d_clock_gettime);
+printf("# have_clock_getres    = %d\n", &Time::HiRes::d_clock_getres);
+printf("# have_clock_nanosleep = %d\n", &Time::HiRes::d_clock_nanosleep);
+printf("# have_clock           = %d\n", &Time::HiRes::d_clock);
 
 # Ideally, we'd like to test that the timers are rather precise.
 # However, if the system is busy, there are no guarantees on how
@@ -36,25 +36,25 @@ SKIP: {
     my $ok = 0;
  TRY: {
        for my $try (1..3) {
-           note "CLOCK_REALTIME: try = $try";
+           print("# CLOCK_REALTIME: try = $try\n");
            my $t0 = Time::HiRes::clock_gettime(&CLOCK_REALTIME);
            my $T = 1.5;
            Time::HiRes::sleep($T);
            my $t1 = Time::HiRes::clock_gettime(&CLOCK_REALTIME);
            if ($t0 > 0 && $t1 > $t0) {
-               note "t1 = $t1, t0 = $t0";
+               print("# t1 = $t1, t0 = $t0\n");
                my $dt = $t1 - $t0;
                my $rt = abs(1 - $dt / $T);
-               note "dt = $dt, rt = $rt";
+               print("# dt = $dt, rt = $rt\n");
                if ($rt <= 2 * $limit) {
                    $ok = 1;
                    last TRY;
                }
            } else {
-               note "Error: t0 = $t0, t1 = $t1";
+               print("# Error: t0 = $t0, t1 = $t1\n");
            }
            my $r = rand() + rand();
-           note sprintf "Sleeping for %.6f seconds...\n", $r;
+           printf("# Sleeping for %.6f seconds...\n", $r);
            Time::HiRes::sleep($r);
        }
     }
@@ -64,7 +64,7 @@ SKIP: {
 SKIP: {
     skip "no clock_getres", 1 unless &Time::HiRes::d_clock_getres;
     my $tr = Time::HiRes::clock_getres();
-    ok $tr > 0 or note "tr = $tr";
+    ok $tr > 0 or print("# tr = $tr\n");
 }
 
 SKIP: {
@@ -73,17 +73,17 @@ SKIP: {
     my $s = 1.5e9;
     my $t = Time::HiRes::clock_nanosleep(&CLOCK_REALTIME, $s);
     my $r = abs(1 - $t / $s);
-    ok $r < 2 * $limit or note "t = $t, r = $r";
+    ok $r < 2 * $limit or print("# t = $t, r = $r\n");
 }
 
 SKIP: {
     skip "no clock", 1 unless &Time::HiRes::d_clock;
     my @clock = Time::HiRes::clock();
-    note "clock = @clock";
+    print("# clock = @clock\n");
     for my $i (1..3) {
        for (my $j = 0; $j < 1e6; $j++) { }
        push @clock, Time::HiRes::clock();
-       note "clock = @clock";
+       print("# clock = @clock\n");
     }
     ok $clock[0] >= 0 &&
        $clock[1] > $clock[0] &&
index 8f7c5f3..69defe8 100644 (file)
@@ -8,26 +8,26 @@ BEGIN {
     }
 }
 
-use Test::More 0.82 tests => 6;
+use Test::More tests => 6;
 use t::Watchdog;
 
 my @one = Time::HiRes::gettimeofday();
-note 'gettimeofday returned ', 0+@one, ' args';
+printf("# gettimeofday returned %d args\n", 0+@one);
 ok @one == 2;
-ok $one[0] > 850_000_000 or note "@one too small";
+ok $one[0] > 850_000_000 or print("# @one too small\n");
 
 sleep 1;
 
 my @two = Time::HiRes::gettimeofday();
 ok $two[0] > $one[0] || ($two[0] == $one[0] && $two[1] > $one[1])
-       or note "@two is not greater than @one";
+       or print("# @two is not greater than @one\n");
 
 my $f = Time::HiRes::time();
-ok $f > 850_000_000 or note "$f too small";
-ok $f - $two[0] < 2 or note "$f - $two[0] >= 2";
+ok $f > 850_000_000 or print("# $f too small\n");
+ok $f - $two[0] < 2 or print("# $f - $two[0] >= 2\n");
 
 my $r = [Time::HiRes::gettimeofday()];
 my $g = Time::HiRes::tv_interval $r;
-ok $g < 2 or note $g;
+ok $g < 2 or print("# $g\n");
 
 1;
index 9eb2b93..31cdd67 100644 (file)
@@ -25,7 +25,7 @@ BEGIN {
     }
 }
 
-use Test::More 0.82 tests => 2;
+use Test::More tests => 2;
 use t::Watchdog;
 
 my $limit = 0.25; # 25% is acceptable slosh for testing timers
@@ -35,11 +35,11 @@ my $r = [Time::HiRes::gettimeofday()];
 
 $SIG{VTALRM} = sub {
     $i ? $i-- : Time::HiRes::setitimer(&Time::HiRes::ITIMER_VIRTUAL, 0);
-    note "Tick! $i ", Time::HiRes::tv_interval($r);
+    printf("# Tick! $i %s\n", Time::HiRes::tv_interval($r));
 };     
 
-note "setitimer: ", join(" ",
-    Time::HiRes::setitimer(&Time::HiRes::ITIMER_VIRTUAL, 0.5, 0.4));
+printf("# setitimer: %s\n", join(" ",
+       Time::HiRes::setitimer(&Time::HiRes::ITIMER_VIRTUAL, 0.5, 0.4)));
 
 # Assume interval timer granularity of $limit * 0.5 seconds.  Too bold?
 my $virt = Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL);
@@ -47,19 +47,19 @@ ok(defined $virt && abs($virt / 0.5) - 1 < $limit,
    "ITIMER_VIRTUAL defined with sufficient granularity")
    or diag "virt=" . (defined $virt ? $virt : 'undef');
 
-note "getitimer: ", join(" ",
-    Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL));
+printf("# getitimer: %s\n", join(" ",
+       Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL)));
 
 while (Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL)) {
     my $j;
     for (1..1000) { $j++ } # Can't be unbreakable, must test getitimer().
 }
 
-note "getitimer: ", join(" ",
-    Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL));
+printf("# getitimer: %s\n", join(" ",
+       Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL)));
 
 $virt = Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL);
-note "at end, i=$i";
+print("# at end, i=$i\n");
 is($virt, 0, "time left should be zero");
 
 $SIG{VTALRM} = 'DEFAULT';
index aef9db6..c17a7e4 100644 (file)
@@ -8,7 +8,7 @@ BEGIN {
     }
 }
 
-use Test::More 0.82 tests => 3;
+use Test::More tests => 3;
 use t::Watchdog;
 
 eval { Time::HiRes::nanosleep(-5) };
@@ -21,7 +21,7 @@ my $two = CORE::time;
 Time::HiRes::nanosleep(10_000_000);
 my $three = CORE::time;
 ok $one == $two || $two == $three
-    or note "slept too long, $one $two $three";
+    or print("# slept too long, $one $two $three\n");
 
 SKIP: {
     skip "no gettimeofday", 1 unless &Time::HiRes::d_gettimeofday;
@@ -29,7 +29,7 @@ SKIP: {
     Time::HiRes::nanosleep(500_000_000);
     my $f2 = Time::HiRes::time();
     my $d = $f2 - $f;
-    ok $d > 0.4 && $d < 0.9 or note "slept $d secs $f to $f2";
+    ok $d > 0.4 && $d < 0.9 or print("# slept $d secs $f to $f2\n");
 }
 
 1;
index e7cc627..c4d802b 100644 (file)
@@ -1,6 +1,6 @@
 use strict;
 
-use Test::More 0.82 tests => 4;
+use Test::More tests => 4;
 use t::Watchdog;
 
 BEGIN { require_ok "Time::HiRes"; }
@@ -26,12 +26,12 @@ like $@, qr/::sleep\(-1\): negative time not invented yet/,
 SKIP: {
     skip "no subsecond alarm", 2 unless $can_subsecond_alarm;
     my $f = Time::HiRes::time; 
-    note "time...$f";
+    print("# time...$f\n");
     ok 1;
 
     my $r = [Time::HiRes::gettimeofday()];
     Time::HiRes::sleep (0.5);
-    note "sleep...", Time::HiRes::tv_interval($r);
+    printf("# sleep...%s\n", Time::HiRes::tv_interval($r));
     ok 1;
 }
 
index 68a6fb6..e7552b5 100644 (file)
@@ -13,7 +13,7 @@ BEGIN {
     }
 }
 
-use Test::More 0.82 tests => 43;
+use Test::More tests => 43;
 use t::Watchdog;
 
 my @atime;
@@ -42,8 +42,8 @@ for (1..5) {
     is_deeply $lstat, $stat;
 }
 1 while unlink $$;
-note "mtime = @mtime";
-note "atime = @atime";
+print("# mtime = @mtime\n");
+print("# atime = @atime\n");
 my $ai = 0;
 my $mi = 0;
 my $ss = 0;
@@ -63,7 +63,7 @@ for (my $i = 1; $i < @mtime; $i++) {
        $ss++;
     }
 }
-note "ai = $ai, mi = $mi, ss = $ss";
+print("# ai = $ai, mi = $mi, ss = $ss\n");
 # Need at least 75% of monotonical increase and
 # 20% of subsecond results. Yes, this is guessing.
 SKIP: {
index feec479..6f219f9 100644 (file)
@@ -1,6 +1,6 @@
 use strict;
 
-use Test::More 0.82 tests => 2;
+use Test::More tests => 2;
 use t::Watchdog;
 
 BEGIN { require_ok "Time::HiRes"; }
@@ -16,8 +16,8 @@ SKIP: {
     # (CORE::time() may be rounding down, up, or closest),
     # but allow 10% of slop.
     ok abs($s) / $n <= 1.10
-       or note "Time::HiRes::time() not close to CORE::time()";
-    note "s = $s, n = $n, s/n = ", abs($s)/$n;
+       or print("# Time::HiRes::time() not close to CORE::time()\n");
+    printf("# s = $s, n = $n, s/n = %s\n", abs($s)/$n);
 }
 
 1;
index bffcf39..8ac876d 100644 (file)
@@ -1,10 +1,10 @@
 use strict;
 
-use Test::More 0.82 tests => 2;
+use Test::More tests => 2;
 
 BEGIN { require_ok "Time::HiRes"; }
 
 my $f = Time::HiRes::tv_interval [5, 100_000], [10, 500_000];
-ok abs($f - 5.4) < 0.001 or note $f;
+ok abs($f - 5.4) < 0.001 or print("# $f\n");
 
 1;
index 12ef4b5..b50a175 100644 (file)
@@ -8,7 +8,7 @@ BEGIN {
     }
 }
 
-use Test::More 0.82 tests => 12;
+use Test::More tests => 12;
 use t::Watchdog;
 
 use Config;
@@ -24,13 +24,13 @@ SKIP: {
     $tick = 0; Time::HiRes::ualarm(10_000); while ($tick == 0) { }
     my $three = CORE::time;
     ok $one == $two || $two == $three
-       or note "slept too long, $one $two $three";
-    note "tick = $tick, one = $one, two = $two, three = $three";
+       or print("# slept too long, $one $two $three\n");
+    print("# tick = $tick, one = $one, two = $two, three = $three\n");
 
     $tick = 0; Time::HiRes::ualarm(10_000, 10_000); while ($tick < 3) { }
     ok 1;
     Time::HiRes::ualarm(0);
-    note "tick = $tick, one = $one, two = $two, three = $three";
+    print("# tick = $tick, one = $one, two = $two, three = $three\n");
 }
 
 eval { Time::HiRes::ualarm(-4) };
@@ -59,24 +59,24 @@ for my $n (100_000, 1_100_000, 2_200_000, 4_300_000) {
        my $alarmed = 0;
        local $SIG{ ALRM } = sub { $alarmed++ };
        my $t0 = Time::HiRes::time();
-       note "t0 = $t0";
-       note "ualarm($n)";
+       print("# t0 = $t0\n");
+       print("# ualarm($n)\n");
        Time::HiRes::ualarm($n); 1 while $alarmed == 0;
        my $t1 = Time::HiRes::time();
-       note "t1 = $t1";
+       print("# t1 = $t1\n");
        my $dt = $t1 - $t0;
-       note "dt = $dt";
+       print("# dt = $dt\n");
        my $r = $dt / ($n/1e6);
-       note "r = $r";
+       print("# r = $r\n");
        $ok =
            ($n < 1_000_000 || # Too much noise.
             ($r >= 0.8 && $r <= 1.6));
        last if $ok;
        my $nap = bellish(3, 15);
-       note sprintf "Retrying in %.1f seconds...\n", $nap;
+       printf("# Retrying in %.1f seconds...\n", $nap);
        Time::HiRes::sleep($nap);
     }
-    ok $ok or note "ualarm($n) close enough";
+    ok $ok or print("# ualarm($n) close enough\n");
 }
 
 {
@@ -93,12 +93,12 @@ for my $n (100_000, 1_100_000, 2_200_000, 4_300_000) {
     } while $t1 - $t0 <= 0.3;
     my $got1 = Time::HiRes::ualarm(0);
 
-    note "t0 = $t0";
-    note "got0 = $got0";
-    note "t1 = $t1";
-    note "t1 - t0 = ", ($t1 - $t0);
-    note "got1 = $got1";
-    ok $got0 == 0 or note $got0;
+    print("# t0 = $t0\n");
+    print("# got0 = $got0\n");
+    print("# t1 = $t1\n");
+    printf("# t1 - t0 = %s\n", ($t1 - $t0));
+    print("# got1 = $got1\n");
+    ok $got0 == 0 or print("# $got0\n");
     SKIP: {
        skip "alarm interval exceeded", 2 if $t1 - $t0 >= 0.5;
        ok $got1 > 0;
@@ -106,7 +106,7 @@ for my $n (100_000, 1_100_000, 2_200_000, 4_300_000) {
     }
     ok $got1 < 300_000;
     my $got2 = Time::HiRes::ualarm(0);
-    ok $got2 == 0 or note $got2;
+    ok $got2 == 0 or print("# $got2\n");
 }
 
 1;
index 0d6bacf..bdf372b 100644 (file)
@@ -8,7 +8,7 @@ BEGIN {
     }
 }
 
-use Test::More 0.82 tests => 6;
+use Test::More tests => 6;
 use t::Watchdog;
 
 eval { Time::HiRes::usleep(-2) };
@@ -23,7 +23,7 @@ my $two = CORE::time;
 Time::HiRes::usleep(10_000);
 my $three = CORE::time;
 ok $one == $two || $two == $three
-or note "slept too long, $one $two $three";
+or print("# slept too long, $one $two $three\n");
 
 SKIP: {
     skip "no gettimeofday", 1 unless &Time::HiRes::d_gettimeofday;
@@ -31,7 +31,7 @@ SKIP: {
     Time::HiRes::usleep(500_000);
     my $f2 = Time::HiRes::time();
     my $d = $f2 - $f;
-    ok $d > 0.4 && $d < 0.9 or note "slept $d secs $f to $f2";
+    ok $d > 0.4 && $d < 0.9 or print("# slept $d secs $f to $f2\n");
 }
 
 SKIP: {
@@ -39,7 +39,7 @@ SKIP: {
     my $r = [ Time::HiRes::gettimeofday() ];
     Time::HiRes::sleep( 0.5 );
     my $f = Time::HiRes::tv_interval $r;
-    ok $f > 0.4 && $f < 0.9 or note "slept $f instead of 0.5 secs.";
+    ok $f > 0.4 && $f < 0.9 or print("# slept $f instead of 0.5 secs.\n");
 }
 
 SKIP: {
@@ -59,7 +59,7 @@ SKIP: {
 
     SKIP: {
        skip $msg, 1 unless $td < $sleep * (1 + $limit);
-       ok $a < $limit or note $msg;
+       ok $a < $limit or print("# $msg\n");
     }
 
     $t0 = Time::HiRes::gettimeofday();
@@ -71,7 +71,7 @@ SKIP: {
 
     SKIP: {
        skip $msg, 1 unless $td < $sleep * (1 + $limit);
-       ok $a < $limit or note $msg;
+       ok $a < $limit or print("# $msg\n");
     }
 }
 
diff --git a/dist/Time-HiRes/t/utime.t b/dist/Time-HiRes/t/utime.t
new file mode 100644 (file)
index 0000000..ede2e78
--- /dev/null
@@ -0,0 +1,101 @@
+use strict;
+
+BEGIN {
+    require Time::HiRes;
+    require Test::More;
+    unless(&Time::HiRes::d_hires_utime) {
+       Test::More::plan(skip_all => "no hires_utime");
+    }
+    unless (&Time::HiRes::d_futimens) {
+       Test::More::plan(skip_all => "no futimens()");
+    }
+    unless (&Time::HiRes::d_utimensat) {
+       Test::More::plan(skip_all => "no utimensat()");
+    }
+    if ($^O eq 'gnukfreebsd') {
+       Test::More::plan(skip_all => "futimens() and utimensat() not working in $^O");
+    }
+}
+
+use Test::More tests => 18;
+use t::Watchdog;
+use File::Temp qw( tempfile );
+
+use Config;
+
+# Cygwin timestamps have less precision.
+my $atime = $^O eq 'cygwin' ? 1.1111111 : 1.111111111;
+my $mtime = $^O eq 'cygwin' ? 2.2222222 : 2.222222222;
+
+print "# utime \$fh\n";
+{
+       my ($fh, $filename) = tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1 );
+       is Time::HiRes::utime($atime, $mtime, $fh), 1, "One file changed";
+       my ($got_atime, $got_mtime) = ( Time::HiRes::stat($filename) )[8, 9];
+       is $got_atime, $atime, "atime set correctly";
+       is $got_mtime, $mtime, "mtime set correctly";
+};
+
+print "#utime \$filename\n";
+{
+       my ($fh, $filename) = tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1 );
+       is Time::HiRes::utime($atime, $mtime, $filename), 1, "One file changed";
+       my ($got_atime, $got_mtime) = ( Time::HiRes::stat($fh) )[8, 9];
+       is $got_atime, $atime, "atime set correctly";
+       is $got_mtime, $mtime, "mtime set correctly";
+};
+
+print "utime \$filename and \$fh\n";
+{
+       my ($fh1, $filename1) = tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1 );
+       my ($fh2, $filename2) = tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1 );
+       is Time::HiRes::utime($atime, $mtime, $filename1, $fh2), 2, "Two files changed";
+       {
+               my ($got_atime, $got_mtime) = ( Time::HiRes::stat($fh1) )[8, 9];
+               is $got_atime, $atime, "File 1 atime set correctly";
+               is $got_mtime, $mtime, "File 1 mtime set correctly";
+       }
+       {
+               my ($got_atime, $got_mtime) = ( Time::HiRes::stat($filename2) )[8, 9];
+               is $got_atime, $atime, "File 2 atime set correctly";
+               is $got_mtime, $mtime, "File 2 mtime set correctly";
+       }
+};
+
+print "# utime undef sets time to now\n";
+{
+       my ($fh1, $filename1) = tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1 );
+       my ($fh2, $filename2) = tempfile( "Time-HiRes-utime-XXXXXXXXX", UNLINK => 1 );
+
+       my $now = Time::HiRes::time;
+       is Time::HiRes::utime(undef, undef, $filename1, $fh2), 2, "Two files changed";
+
+       {
+               my ($got_atime, $got_mtime) = ( Time::HiRes::stat($fh1) )[8, 9];
+               cmp_ok abs( $got_atime - $now), '<', 0.1, "File 1 atime set correctly";
+               cmp_ok abs( $got_mtime - $now), '<', 0.1, "File 1 mtime set correctly";
+       }
+       {
+               my ($got_atime, $got_mtime) = ( Time::HiRes::stat($filename2) )[8, 9];
+               cmp_ok abs( $got_atime - $now), '<', 0.1, "File 2 atime set correctly";
+               cmp_ok abs( $got_mtime - $now), '<', 0.1, "File 2 mtime set correctly";
+       }
+};
+
+print "# negative atime dies\n";
+{
+       eval { Time::HiRes::utime(-4, $mtime) };
+       like $@, qr/::utime\(-4, 2\.22222\): negative time not invented yet/,
+               "negative time error";
+};
+
+print "# negative mtime dies;\n";
+{
+       eval { Time::HiRes::utime($atime, -4) };
+       like $@, qr/::utime\(1.11111, -4\): negative time not invented yet/,
+               "negative time error";
+};
+
+done_testing;
+
+1;
index 8a8852e..09f9d4b 100644 (file)
@@ -11,7 +11,7 @@ print OUT <<'EOT';
 
 package XSLoader;
 
-$VERSION = "0.21";
+$VERSION = "0.22";
 
 #use strict;
 
@@ -93,6 +93,43 @@ print OUT <<'EOT';
     $modlibname =~ s,[\\/][^\\/]+$,, while $c--;    # Q&D basename
 EOT
 
+my $to_print = <<'EOT';
+    # Does this look like a relative path?
+    if ($modlibname !~ m{regexp}) {
+EOT
+
+$to_print =~ s~regexp~
+    $^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'cygwin' || $^O eq 'amigaos'
+        ? '^(?:[A-Za-z]:)?[\\\/]' # Optional drive letter
+        : '^/'
+~e;
+
+print OUT $to_print, <<'EOT';
+        # Someone may have a #line directive that changes the file name, or
+        # may be calling XSLoader::load from inside a string eval.  We cer-
+        # tainly do not want to go loading some code that is not in @INC,
+        # as it could be untrusted.
+        #
+        # We could just fall back to DynaLoader here, but then the rest of
+        # this function would go untested in the perl core, since all @INC
+        # paths are relative during testing.  That would be a time bomb
+        # waiting to happen, since bugs could be introduced into the code.
+        #
+        # So look through @INC to see if $modlibname is in it.  A rela-
+        # tive $modlibname is not a common occurrence, so this block is
+        # not hot code.
+        FOUND: {
+            for (@INC) {
+                if ($_ eq $modlibname) {
+                    last FOUND;
+                }
+            }
+            # Not found.  Fall back to DynaLoader.
+            goto \&XSLoader::bootstrap_inherit;
+        }
+    }
+EOT
+
 my $dl_dlext = quotemeta($Config::Config{'dlext'});
 
 print OUT <<"EOT";
@@ -218,7 +255,7 @@ XSLoader - Dynamically load C libraries into Perl code
 
 =head1 VERSION
 
-Version 0.17
+Version 0.22
 
 =head1 SYNOPSIS
 
index 2ff11fe..d3538b8 100644 (file)
@@ -33,7 +33,7 @@ my %modules = (
     'Time::HiRes'=> q| ::can_ok( 'Time::HiRes' => 'usleep'  ) |,  # 5.7.3
 );
 
-plan tests => keys(%modules) * 3 + 9;
+plan tests => keys(%modules) * 3 + 10;
 
 # Try to load the module
 use_ok( 'XSLoader' );
@@ -125,3 +125,28 @@ XSLoader::load("Devel::Peek");
 EOS
     or ::diag $@;
 }
+
+SKIP: {
+  skip "File::Path not available", 1
+    unless eval { require File::Path };
+  my $name = "phooo$$";
+  File::Path::mkpath("$name/auto/Foo/Bar");
+  open my $fh,
+    ">$name/auto/Foo/Bar/Bar.$Config::Config{'dlext'}";
+  close $fh;
+  my $fell_back;
+  local *XSLoader::bootstrap_inherit = sub {
+    $fell_back++;
+    # Break out of the calling subs
+    goto the_test;
+  };
+  eval <<END;
+#line 1 $name
+package Foo::Bar;
+XSLoader::load("Foo::Bar");
+END
+ the_test:
+  ok $fell_back,
+    'XSLoader will not load relative paths based on (caller)[1]';
+  File::Path::rmtree($name);
+}
index d5c4184..d75277e 100644 (file)
@@ -1,5 +1,5 @@
 package encoding::warnings;
-$encoding::warnings::VERSION = '0.12';
+$encoding::warnings::VERSION = '0.13';
 
 use strict;
 use 5.007;
@@ -10,8 +10,22 @@ encoding::warnings - Warn on implicit encoding conversions
 
 =head1 VERSION
 
-This document describes version 0.11 of encoding::warnings, released
-June 5, 2007.
+This document describes version 0.13 of encoding::warnings, released
+June 20, 2016.
+
+=head1 NOTICE
+
+As of Perl 5.26.0, this module has no effect.  The internal Perl feature
+that was used to implement this module has been removed.  In recent years,
+much work has been done on the Perl core to eliminate discrepancies in the
+treatment of upgraded versus downgraded strings.  In addition, the
+L<encoding> pragma, which caused many of the problems, is no longer
+supported.  Thus, the warnings this module produced are no longer
+necessary.
+
+Hence, if you load this module on Perl 5.26.0, you will get one warning
+that the module is no longer supported; and the module will do nothing
+thereafter.
 
 =head1 SYNOPSIS
 
@@ -146,8 +160,16 @@ sub ASCII  () { 0 }
 sub LATIN1 () { 1 }
 sub FATAL  () { 2 }
 
-# Install a ${^ENCODING} handler if no other one are already in place.
 sub import {
+    if ($] >= 5.025003) {
+       require Carp;
+       Carp::cluck(
+           "encoding::warnings is not supported on Perl 5.26.0 and later"
+       );
+       return;
+    }
+
+    # Install a ${^ENCODING} handler if no other one are already in place.
     my $class = shift;
     my $fatal = shift || '';
 
index 9b04cb6..fa0bb6e 100644 (file)
@@ -14,9 +14,25 @@ BEGIN {
 }
 
 use Test;
-BEGIN { plan tests => 2 }
-
 use strict;
+
+BEGIN {
+    if ("$]" >= 5.025) {
+       # Test the new almost-noop behaviour in new perls.
+       plan tests => 3;
+       my $w;
+       $SIG{__WARN__} = sub { $w .= shift };
+       require encoding::warnings;
+       ok $w, undef, 'no warning from requiring encoding::warnings';
+       ok(encoding::warnings->VERSION);
+       encoding::warnings->import;
+       ok $w, qr/^encoding::warnings is not supported /, 'import warning';
+       exit;
+    }
+    # else continue with your usual scheduled testing...
+    plan tests => 2;
+}
+
 use encoding::warnings;
 ok(encoding::warnings->VERSION);
 
index ef00181..d2928cd 100644 (file)
@@ -3,6 +3,10 @@
 # $Revision: #4 $ $Change: 1626 $ $DateTime: 2004-03-14T16:53:19.351256Z $
 
 BEGIN {
+    if ("$]" >= 5.025) {
+      print "1..0 # Skip: encoding::warnings not supported on perl 5.26\n";
+      exit 0;
+    }
     if (ord("A") != 65) {
       print "1..0 # Skip: Encode not working on EBCDIC\n";
       exit 0;
index f0e6446..a66798b 100644 (file)
@@ -1,3 +1,10 @@
+BEGIN {
+    if ("$]" >= 5.025) {
+      print "1..0 # Skip: encoding::warnings not supported on perl 5.26\n";
+      exit 0;
+    }
+}
+
 use Test;
 BEGIN { plan tests => 2 }
 
index bdd9f21..0f6b4c1 100644 (file)
@@ -1,6 +1,10 @@
 use strict;
 use Test;
 BEGIN {
+    if ("$]" >= 5.025) {
+      print "1..0 # Skip: encoding::warnings not supported on perl 5.26\n";
+      exit 0;
+    }
     if (ord("A") != 65) {
       print "1..0 # Skip: Encode not working on EBCDIC\n";
       exit 0;
diff --git a/dump.c b/dump.c
index 8e11546..c168162 100644 (file)
--- a/dump.c
+++ b/dump.c
@@ -1761,15 +1761,8 @@ Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bo
                 } while (++ents <= last);
             }
 
-            if (SvOOK(sv)) {
-                struct xpvhv_aux *const aux = HvAUX(sv);
-                Perl_dump_indent(aTHX_ level, file, "  FILL = %"UVuf
-                                 " (cached = %"UVuf")\n",
-                                 (UV)count, (UV)aux->xhv_fill_lazy);
-            } else {
-                Perl_dump_indent(aTHX_ level, file, "  FILL = %"UVuf"\n",
-                                 (UV)count);
-            }
+            Perl_dump_indent(aTHX_ level, file, "  FILL = %"UVuf"\n",
+                             (UV)count);
         }
        Perl_dump_indent(aTHX_ level, file, "  MAX = %"IVdf"\n", (IV)HvMAX(sv));
         if (SvOOK(sv)) {
index 967fdfc..abc1187 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -1546,13 +1546,13 @@ ApRM    |SV*    |swash_init     |NN const char* pkg|NN const char* name|NN SV* listsv|I32
 ApM    |UV     |swash_fetch    |NN SV *swash|NN const U8 *ptr|bool do_utf8
 #ifdef PERL_IN_REGCOMP_C
 EiMR   |SV*    |add_cp_to_invlist      |NULLOK SV* invlist|const UV cp
-EsM    |void   |_append_range_to_invlist   |NN SV* const invlist|const UV start|const UV end
 EiMRn  |UV*    |_invlist_array_init    |NN SV* const invlist|const bool will_have_0
-EsM    |void   |invlist_extend    |NN SV* const invlist|const UV len
 EiMRn  |UV     |invlist_max    |NN SV* const invlist
 EiM    |void   |invlist_set_len|NN SV* const invlist|const UV len|const bool offset
 EiMRn  |bool   |invlist_is_iterating|NN SV* const invlist
 #ifndef PERL_EXT_RE_BUILD
+EsM    |void   |_append_range_to_invlist   |NN SV* const invlist|const UV start|const UV end
+EsM    |void   |invlist_extend    |NN SV* const invlist|const UV len
 EsM    |void   |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src
 EiMRn  |IV*    |get_invlist_previous_index_addr|NN SV* invlist
 EiMn   |void   |invlist_set_previous_index|NN SV* const invlist|const IV index
@@ -1584,7 +1584,7 @@ EXmM      |void   |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result
 EXpM   |void   |_invlist_invert|NN SV* const invlist
 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
+EXMpR  |SV*    |_add_range_to_invlist  |NULLOK SV* invlist|UV start|UV end
 EXMpR  |SV*    |_setup_canned_invlist|const STRLEN size|const UV element0|NN UV** other_elements_ptr
 EXMpn  |void   |_invlist_populate_swatch   |NN SV* const invlist|const UV start|const UV end|NN U8* swatch
 #endif
@@ -1598,7 +1598,7 @@ EiMRn     |UV*    |invlist_array  |NN SV* const invlist
 EiMRn  |bool*  |get_invlist_offset_addr|NN SV* invlist
 EiMRn  |UV     |_invlist_len   |NN SV* const invlist
 EMiRn  |bool   |_invlist_contains_cp|NN SV* const invlist|const UV cp
-EXpMRn |IV     |_invlist_search        |NN SV* const invlist|const UV cp
+EXpMRn |SSize_t|_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
 #endif
@@ -2195,7 +2195,6 @@ Es        |regnode*|handle_regex_sets|NN RExC_state_t *pRExC_state \
                                |NN char * const oregcomp_parse
 Es     |void|parse_lparen_question_flags|NN RExC_state_t *pRExC_state
 Es     |regnode*|reg_node      |NN RExC_state_t *pRExC_state|U8 op
-Es     |UV     |reg_recode     |const U8 value|NN SV **encp
 Es     |regnode*|regpiece      |NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|U32 depth
 Es     |bool   |grok_bslash_N  |NN RExC_state_t *pRExC_state               \
@@ -2301,7 +2300,8 @@ Es        |bool   |put_charclass_bitmap_innards|NN SV* sv             \
                                |NN char* bitmap                    \
                                |NULLOK SV* nonbitmap_invlist       \
                                |NULLOK SV* only_utf8_locale_invlist\
-                               |NULLOK const regnode * const node
+                               |NULLOK const regnode * const node  \
+                               |const bool force_as_is_display
 Es     |SV*    |put_charclass_bitmap_innards_common                \
                                |NN SV* invlist                     \
                                |NULLOK SV* posixes                 \
@@ -2350,7 +2350,7 @@ Es        |void   |regcppop       |NN regexp *rex\
 ERsn   |U8*    |reghop3        |NN U8 *s|SSize_t off|NN const U8 *lim
 ERsn   |U8*    |reghop4        |NN U8 *s|SSize_t off|NN const U8 *llim \
                                |NN const U8 *rlim
-ERsn   |U8*    |reghopmaybe3   |NN U8 *s|SSize_t off|NN const U8 *lim
+ERsn   |U8*    |reghopmaybe3   |NN U8 *s|SSize_t off|NN const U8 * const lim
 ERs    |char*  |find_byclass   |NN regexp * prog|NN const regnode *c \
                                |NN char *s|NN const char *strend \
                                |NULLOK regmatch_info *reginfo
@@ -2358,7 +2358,14 @@ Es       |void   |to_utf8_substr |NN regexp * prog
 Es     |bool   |to_byte_substr |NN regexp * prog
 ERsn   |I32    |reg_check_named_buff_matched   |NN const regexp *rex \
                                                |NN const regnode *scan
-EinR   |bool   |isGCB          |const GCB_enum before|const GCB_enum after
+EsR    |bool   |isGCB          |const GCB_enum before                  \
+                               |const GCB_enum after                   \
+                               |NN const U8 * const strbeg             \
+                               |NN const U8 * const curpos             \
+                               |const bool utf8_target
+EsR    |GCB_enum|backup_one_GCB|NN const U8 * const strbeg                     \
+                               |NN U8 ** curpos                                \
+                               |const bool utf8_target
 EsR    |bool   |isLB           |LB_enum before                         \
                                |LB_enum after                          \
                                |NN const U8 * const strbeg             \
@@ -2433,7 +2440,7 @@ poM       |void   |sv_kill_backrefs       |NN SV *const sv|NULLOK AV *const av
 #if defined(PERL_IN_SV_C) || defined (PERL_IN_OP_C)
 pR     |SV *   |varname        |NULLOK const GV *const gv|const char gvtype \
                                |PADOFFSET targ|NULLOK const SV *const keyname \
-                               |I32 aindex|int subscript_type
+                               |SSize_t aindex|int subscript_type
 #endif
 
 pX     |void   |sv_del_backref |NN SV *const tsv|NN SV *const sv
@@ -2541,7 +2548,7 @@ 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
+                               |bool is_utf8|bool check_dollar
 #  if defined(PERL_CR_FILTER)
 s      |I32    |cr_textfilter  |int idx|NULLOK SV *sv|int maxlen
 s      |void   |strip_return   |NN SV *sv
@@ -2767,6 +2774,7 @@ Apod      |void   |hv_assert      |NN HV *hv
 #endif
 
 ApdR   |SV*    |hv_scalar      |NN HV *hv
+ApdRM  |SV*    |hv_bucket_ratio|NN HV *hv
 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
@@ -2793,7 +2801,7 @@ p |SV*    |magic_scalarpack|NN HV *hv|NN MAGIC *mg
 #if defined(PERL_IN_SV_C)
 s      |SV *   |find_hash_subscript|NULLOK const HV *const hv \
                |NN const SV *const val
-s      |I32    |find_array_subscript|NULLOK const AV *const av \
+s      |SSize_t|find_array_subscript|NULLOK const AV *const av \
                |NN const SV *const val
 sMd    |SV*    |find_uninit_var|NULLOK const OP *const obase \
                |NULLOK const SV *const uninit_sv|bool match \
@@ -2938,7 +2946,6 @@ Ei        |STRLEN |sv_or_pv_pos_u2b|NN SV *sv|NN const char *pv|STRLEN pos \
                                 |NULLOK STRLEN *lenp
 #endif
 
-EMpPX  |SV*    |_get_encoding
 Ap     |void   |clear_defarray |NN AV* av|bool abandon
 
 ApM    |void   |leave_adjust_stacks|NN SV **from_sp|NN SV **to_sp \
diff --git a/embed.h b/embed.h
index f37b76b..b440509 100644 (file)
--- a/embed.h
+++ b/embed.h
 #define gv_stashpv(a,b)                Perl_gv_stashpv(aTHX_ a,b)
 #define gv_stashpvn(a,b,c)     Perl_gv_stashpvn(aTHX_ a,b,c)
 #define gv_stashsv(a,b)                Perl_gv_stashsv(aTHX_ a,b)
+#define hv_bucket_ratio(a)     Perl_hv_bucket_ratio(aTHX_ a)
 #define hv_clear(a)            Perl_hv_clear(aTHX_ a)
 #define hv_clear_placeholders(a)       Perl_hv_clear_placeholders(aTHX_ a)
 #define hv_common(a,b,c,d,e,f,g,h)     Perl_hv_common(aTHX_ a,b,c,d,e,f,g,h)
 #define do_spawn_nowait(a)     Perl_do_spawn_nowait(aTHX_ a)
 #endif
 #if defined(PERL_CORE) || defined(PERL_EXT)
-#define _get_encoding()                Perl__get_encoding(aTHX)
 #define _warn_problematic_locale       Perl__warn_problematic_locale
 #define av_reify(a)            Perl_av_reify(aTHX_ a)
 #define current_re_engine()    Perl_current_re_engine(aTHX)
 #define yylex()                        Perl_yylex(aTHX)
 #  if !defined(PERL_EXT_RE_BUILD)
 #    if defined(PERL_IN_REGCOMP_C)
+#define _append_range_to_invlist(a,b,c)        S__append_range_to_invlist(aTHX_ a,b,c)
 #define get_invlist_previous_index_addr        S_get_invlist_previous_index_addr
 #define invlist_clear(a)       S_invlist_clear(aTHX_ a)
+#define invlist_extend(a,b)    S_invlist_extend(aTHX_ a,b)
 #define invlist_previous_index S_invlist_previous_index
 #define invlist_replace_list_destroys_src(a,b) S_invlist_replace_list_destroys_src(aTHX_ a,b)
 #define invlist_set_previous_index     S_invlist_set_previous_index
 #define dump_trie_interim_list(a,b,c,d,e)      S_dump_trie_interim_list(aTHX_ a,b,c,d,e)
 #define dump_trie_interim_table(a,b,c,d,e)     S_dump_trie_interim_table(aTHX_ a,b,c,d,e)
 #define dumpuntil(a,b,c,d,e,f,g,h)     S_dumpuntil(aTHX_ a,b,c,d,e,f,g,h)
-#define put_charclass_bitmap_innards(a,b,c,d,e)        S_put_charclass_bitmap_innards(aTHX_ a,b,c,d,e)
+#define put_charclass_bitmap_innards(a,b,c,d,e,f)      S_put_charclass_bitmap_innards(aTHX_ a,b,c,d,e,f)
 #define put_charclass_bitmap_innards_common(a,b,c,d,e,f)       S_put_charclass_bitmap_innards_common(aTHX_ a,b,c,d,e,f)
 #define put_charclass_bitmap_innards_invlist(a,b)      S_put_charclass_bitmap_innards_invlist(aTHX_ a,b)
 #define put_code_point(a,b)    S_put_code_point(aTHX_ a,b)
 #define sv_or_pv_pos_u2b(a,b,c,d)      S_sv_or_pv_pos_u2b(aTHX_ a,b,c,d)
 #  endif
 #  if defined(PERL_IN_REGCOMP_C)
-#define _append_range_to_invlist(a,b,c)        S__append_range_to_invlist(aTHX_ a,b,c)
 #define _invlist_array_init    S__invlist_array_init
 #define _make_exactf_invlist(a,b)      S__make_exactf_invlist(aTHX_ a,b)
 #define add_above_Latin1_folds(a,b,c)  S_add_above_Latin1_folds(aTHX_ a,b,c)
 #define handle_regex_sets(a,b,c,d,e)   S_handle_regex_sets(aTHX_ a,b,c,d,e)
 #define invlist_clone(a)       S_invlist_clone(aTHX_ a)
 #define invlist_contents(a,b)  S_invlist_contents(aTHX_ a,b)
-#define invlist_extend(a,b)    S_invlist_extend(aTHX_ a,b)
 #define invlist_highest                S_invlist_highest
 #define invlist_is_iterating   S_invlist_is_iterating
 #define invlist_iterfinish     S_invlist_iterfinish
 #define reg(a,b,c,d)           S_reg(aTHX_ a,b,c,d)
 #define reg2Lanode(a,b,c,d)    S_reg2Lanode(aTHX_ a,b,c,d)
 #define reg_node(a,b)          S_reg_node(aTHX_ a,b)
-#define reg_recode(a,b)                S_reg_recode(aTHX_ a,b)
 #define reg_scan_name(a,b)     S_reg_scan_name(aTHX_ a,b)
 #define reg_skipcomment                S_reg_skipcomment
 #define reganode(a,b,c)                S_reganode(aTHX_ a,b,c)
 #define advance_one_LB(a,b,c)  S_advance_one_LB(aTHX_ a,b,c)
 #define advance_one_SB(a,b,c)  S_advance_one_SB(aTHX_ a,b,c)
 #define advance_one_WB(a,b,c,d)        S_advance_one_WB(aTHX_ a,b,c,d)
+#define backup_one_GCB(a,b,c)  S_backup_one_GCB(aTHX_ a,b,c)
 #define backup_one_LB(a,b,c)   S_backup_one_LB(aTHX_ a,b,c)
 #define backup_one_SB(a,b,c)   S_backup_one_SB(aTHX_ a,b,c)
 #define backup_one_WB(a,b,c,d) S_backup_one_WB(aTHX_ a,b,c,d)
 #define find_byclass(a,b,c,d,e)        S_find_byclass(aTHX_ a,b,c,d,e)
 #define isFOO_lc(a,b)          S_isFOO_lc(aTHX_ a,b)
 #define isFOO_utf8_lc(a,b)     S_isFOO_utf8_lc(aTHX_ a,b)
-#define isGCB                  S_isGCB
+#define isGCB(a,b,c,d,e)       S_isGCB(aTHX_ a,b,c,d,e)
 #define isLB(a,b,c,d,e,f)      S_isLB(aTHX_ a,b,c,d,e,f)
 #define isSB(a,b,c,d,e,f)      S_isSB(aTHX_ a,b,c,d,e,f)
 #define isWB(a,b,c,d,e,f,g)    S_isWB(aTHX_ a,b,c,d,e,f,g)
 #define lop(a,b,c)             S_lop(aTHX_ a,b,c)
 #define missingterm(a)         S_missingterm(aTHX_ a)
 #define no_op(a,b)             S_no_op(aTHX_ a,b)
-#define parse_ident(a,b,c,d,e) S_parse_ident(aTHX_ a,b,c,d,e)
+#define parse_ident(a,b,c,d,e,f)       S_parse_ident(aTHX_ a,b,c,d,e,f)
 #define pending_ident()                S_pending_ident(aTHX)
 #define scan_const(a)          S_scan_const(aTHX_ a)
 #define scan_formline(a)       S_scan_formline(aTHX_ a)
index c2831d6..ec0b7b1 100644 (file)
 #define PL_e_script            (vTHX->Ie_script)
 #define PL_efloatbuf           (vTHX->Iefloatbuf)
 #define PL_efloatsize          (vTHX->Iefloatsize)
-#define PL_encoding            (vTHX->Iencoding)
 #define PL_endav               (vTHX->Iendav)
 #define PL_envgv               (vTHX->Ienvgv)
 #define PL_errgv               (vTHX->Ierrgv)
 #define PL_lastgotoprobe       (vTHX->Ilastgotoprobe)
 #define PL_laststatval         (vTHX->Ilaststatval)
 #define PL_laststype           (vTHX->Ilaststype)
-#define PL_lex_encoding                (vTHX->Ilex_encoding)
 #define PL_localizing          (vTHX->Ilocalizing)
 #define PL_localpatches                (vTHX->Ilocalpatches)
 #define PL_lockhook            (vTHX->Ilockhook)
index 56522af..41898fe 100644 (file)
@@ -783,7 +783,7 @@ do_test('ENAME on a stash',
     AUX_FLAGS = 0                               # $] > 5.019008
     ARRAY = $ADDR
     KEYS = 0
-    FILL = 0 \(cached = 0\)
+    FILL = 0
     MAX = 7
     RITER = -1
     EITER = 0x0
@@ -806,7 +806,7 @@ do_test('ENAMEs on a stash',
     AUX_FLAGS = 0                               # $] > 5.019008
     ARRAY = $ADDR
     KEYS = 0
-    FILL = 0 \(cached = 0\)
+    FILL = 0
     MAX = 7
     RITER = -1
     EITER = 0x0
@@ -832,7 +832,7 @@ do_test('ENAMEs on a stash with no NAME',
     AUX_FLAGS = 0                               # $] > 5.019008
     ARRAY = $ADDR
     KEYS = 0
-    FILL = 0 \(cached = 0\)
+    FILL = 0
     MAX = 7
     RITER = -1
     EITER = 0x0
@@ -882,7 +882,7 @@ do_test('small hash after keys',
     ARRAY = $ADDR  \\(0:[67],.*\\)
     hash quality = [0-9.]+%
     KEYS = 2
-    FILL = [12] \\(cached = 0\\)
+    FILL = [12]
     MAX = 7
     RITER = -1
     EITER = 0x0
@@ -912,7 +912,7 @@ do_test('small hash after keys and scalar',
     ARRAY = $ADDR  \\(0:[67],.*\\)
     hash quality = [0-9.]+%
     KEYS = 2
-    FILL = ([12]) \\(cached = \1\\)
+    FILL = ([12])
     MAX = 7
     RITER = -1
     EITER = 0x0
@@ -927,30 +927,6 @@ do_test('small hash after keys and scalar',
       COW_REFCNT = 1
 ){2}');
 
-# This should immediately start with the FILL cached correctly.
-my %large = (0..1999);
-$b = %large;
-do_test('large hash',
-        \%large,
-'SV = $RV\\($ADDR\\) at $ADDR
-  REFCNT = 1
-  FLAGS = \\(ROK\\)
-  RV = $ADDR
-  SV = PVHV\\($ADDR\\) at $ADDR
-    REFCNT = 2
-    FLAGS = \\($PADMY,OOK,SHAREKEYS\\)
-    AUX_FLAGS = 0                               # $] > 5.019008
-    ARRAY = $ADDR  \\(0:\d+,.*\\)
-    hash quality = \d+\\.\d+%
-    KEYS = 1000
-    FILL = (\d+) \\(cached = \1\\)
-    MAX = 1023
-    RITER = -1
-    EITER = 0x0
-    RAND = $ADDR
-    Elt .*
-');
-
 # Dump with arrays, hashes, and operator return values
 @array = 1..3;
 do_test('Dump @array', '@array', <<'ARRAY', '', '', 1);
index 61d02ec..ab3d74b 100644 (file)
@@ -103,9 +103,9 @@ sub numbers_first { # Sort helper: All digit entries sort in front of others
     is( $counter, 1, "list each doesn't trigger");
     is( "@x", "abc 123", "the return is correct");
 
-    $x = %h;
+    $x = scalar %h;
     is( $counter, 1, "hash in scalar context doesn't trigger");
-    like( $x, qr!^\d+/\d+$!, "correct result");
+    is( $x, 1, "correct result");
 
     (@x) = %h;
     is( $counter, 1, "hash in list context doesn't trigger");
index ddef72c..beb3f7e 100644 (file)
@@ -1,5 +1,10 @@
 Revision history for Perl extension Hash::Util.
 
+0.20
+    Add bucket_ratio, num_buckets, used_buckets as a back-compat
+    shin for 5.25 where we remove the bucket data from scalar(%hash)
+    by making it return the count of keys by default.
+
 0.17
     Add bucket_stats_formatted() as utility method to Hash::Util
     Bug fixes to hash_stats()
index 9481dc7..01f52bf 100644 (file)
@@ -263,3 +263,53 @@ bucket_array(rhv)
     }
     XSRETURN(0);
 }
+
+#if PERL_VERSION < 25
+SV*
+bucket_ratio(rhv)
+        SV* rhv
+    PROTOTYPE: \%
+    PPCODE:
+{
+    if (SvROK(rhv)) {
+        rhv= SvRV(rhv);
+        if ( SvTYPE(rhv)==SVt_PVHV ) {
+            SV *ret= Perl_hv_scalar(aTHX_ (HV*)rhv);
+            ST(0)= ret;
+            XSRETURN(1);
+        }
+    }
+    XSRETURN_UNDEF;
+}
+
+SV*
+num_buckets(rhv)
+        SV* rhv
+    PROTOTYPE: \%
+    PPCODE:
+{
+    if (SvROK(rhv)) {
+        rhv= SvRV(rhv);
+        if ( SvTYPE(rhv)==SVt_PVHV ) {
+            XSRETURN_UV(HvMAX((HV*)rhv)+1);
+        }
+    }
+    XSRETURN_UNDEF;
+}
+
+SV*
+used_buckets(rhv)
+        SV* rhv
+    PROTOTYPE: \%
+    PPCODE:
+{
+    if (SvROK(rhv)) {
+        rhv= SvRV(rhv);
+        if ( SvTYPE(rhv)==SVt_PVHV ) {
+            XSRETURN_UV(HvFILL((HV*)rhv));
+        }
+    }
+    XSRETURN_UNDEF;
+}
+
+#endif
index a947b9a..ff6b3b8 100644 (file)
@@ -34,8 +34,12 @@ our @EXPORT_OK  = qw(
                      lock_hashref_recurse unlock_hashref_recurse
 
                      hash_traversal_mask
+
+                     bucket_ratio
+                     used_buckets
+                     num_buckets
                     );
-our $VERSION = '0.19';
+our $VERSION = '0.20';
 require XSLoader;
 XSLoader::load();
 
@@ -727,6 +731,29 @@ 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.
 
+=item B<bucket_ratio>
+
+This function behaves the same way that scalar(%hash) behaved prior to
+Perl 5.25. Specifically if the hash is tied, then it calls the SCALAR tied
+hash method, if untied then if the hash is empty it return 0, otherwise it
+returns a string containing the number of used buckets in the hash,
+followed by a slash, followed by the total number of buckets in the hash.
+
+    my %hash=("foo"=>1);
+    print Hash::Util::bucket_ratio(%hash); # prints "1/8"
+
+=item B<used_buckets>
+
+This function returns the count of used buckets in the hash. It is expensive
+to calculate and the value is NOT cached, so avoid use of this function
+in production code.
+
+=item B<num_buckets>
+
+This function returns the total number of buckets the hash holds, or would
+hold if the array were created. (When a hash is freshly created the array
+may not be allocated even though this value will be non-zero.)
+
 =back
 
 =head2 Operating on references to hashes.
diff --git a/ext/Hash-Util/t/builtin.t b/ext/Hash-Util/t/builtin.t
new file mode 100644 (file)
index 0000000..3654c9b
--- /dev/null
@@ -0,0 +1,38 @@
+#!/usr/bin/perl -Tw
+
+use strict;
+use Test::More;
+
+my @Exported_Funcs;
+BEGIN {
+    @Exported_Funcs = qw( bucket_ratio num_buckets used_buckets );
+    plan tests => 13 + @Exported_Funcs;
+    use_ok 'Hash::Util', @Exported_Funcs;
+}
+foreach my $func (@Exported_Funcs) {
+    can_ok __PACKAGE__, $func;
+}
+
+my %hash;
+
+is(bucket_ratio(%hash), 0, "Empty hash has no bucket_ratio");
+is(num_buckets(%hash), 8, "Empty hash should have eight buckets");
+is(used_buckets(%hash), 0, "Empty hash should have no used buckets");
+
+$hash{1}= 1;
+is(bucket_ratio(%hash), "1/8", "hash has expected bucket_ratio");
+is(num_buckets(%hash), 8, "hash should have eight buckets");
+is(used_buckets(%hash), 1, "hash should have one used buckets");
+
+$hash{$_}= $_ for 2..7;
+
+like(bucket_ratio(%hash), qr!/8!, "hash has expected number of buckets in bucket_ratio");
+is(num_buckets(%hash), 8, "hash should have eight buckets");
+cmp_ok(used_buckets(%hash), "<", 8, "hash should have one used buckets");
+
+$hash{8}= 8;
+like(bucket_ratio(%hash), qr!/16!, "hash has expected number of buckets in bucket_ratio");
+is(num_buckets(%hash), 16, "hash should have sixteen buckets");
+cmp_ok(used_buckets(%hash), "<=", 8, "hash should have at most 8 used buckets");
+
+
index 17c241c..cf3fdc3 100644 (file)
@@ -16,7 +16,7 @@ BEGIN {
     import Encode qw(:fallback_all);
 }
 
-use Test::More tests => 9;
+use Test::More tests => 10;
 
 # $PerlIO::encoding = 0; # WARN_ON_ERR|PERLQQ;
 
@@ -64,13 +64,20 @@ printf "# %x\n",ord($line);
 is($line,"\\xA30.02\n","Escaped non-mapped char");
 close($fh);
 
-$PerlIO::encoding::fallback = Encode::WARN_ON_ERROR;
+{
+    my $message = '';
+    local $SIG{__WARN__} = sub { $message = $_[0] };
 
-ok(open($fh,"<encoding(US-ASCII)",$file),"Opened as ASCII");
-my $line = <$fh>;
-printf "# %x\n",ord($line);
-is($line,"\x{FFFD}0.02\n","Unicode replacement char");
-close($fh);
+    $PerlIO::encoding::fallback = Encode::WARN_ON_ERR;
+
+    ok(open($fh,"<encoding(US-ASCII)",$file),"Opened as ASCII");
+    my $line = <$fh>;
+    printf "# %x\n",ord($line);
+    is($line,"\x{FFFD}0.02\n","Unicode replacement char");
+    close($fh);
+
+    like($message, qr/does not map to Unicode/o, "FB_WARN message");
+}
 
 END {
     1 while unlink($file);
index 10fde7d..2e05669 100644 (file)
@@ -23,12 +23,8 @@ $| = 1;
   my $foo = "$!";
 like (DPeek ($!), qr'^PVMG\("',                        '$!');
 
-if ($^O eq 'VMS') {
-    local $?; # Reset anything Test::* has done to it.
-  # VMS defines COMPLEX_STATUS and upgrades $? to PVLV
-  is (DPeek ($?),    'PVLV()',                 '$?');
-} else {
-    local $?; # Reset anything Test::* has done to it.
+{
+  local $?; # Reset anything Test::* has done to it.
   is (DPeek ($?),    'PVMG()',                 '$?');
 }
   is (DPeek ($|),    'PVMG(1)',                        '$|');
index 27dfd51..838d648 100644 (file)
--- a/feature.h
+++ b/feature.h
         FEATURE_IS_ENABLED("unieval")) \
     )
 
+#define FEATURE_MYREF_IS_ENABLED \
+    ( \
+       CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+        FEATURE_IS_ENABLED("myref") \
+    )
+
 #define FEATURE_UNICODE_IS_ENABLED \
     ( \
        (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_511 && \
diff --git a/gv.c b/gv.c
index 4df3bce..46eb079 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -1061,6 +1061,9 @@ Perl_gv_fetchmethod_pvn_flags(pTHX_ HV *stash, const char *name, const STRLEN le
 
     gv = gv_fetchmeth_pvn(stash, name, nend - name, 0, flags);
     if (!gv) {
+       /* This is the special case that exempts Foo->import and
+          Foo->unimport from being an error even if there's no
+         import/unimport subroutine */
        if (strEQ(name,"import") || strEQ(name,"unimport"))
            gv = MUTABLE_GV(&PL_sv_yes);
        else if (autoload)
@@ -1921,9 +1924,6 @@ S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len,
                    goto magicalize;
                break;
            case '\005':        /* $^ENCODING */
-                if (*name2 == '_') {
-                    name2++;
-                }
                if (strEQ(name2, "NCODING"))
                    goto magicalize;
                break;
@@ -2411,10 +2411,10 @@ Perl_gv_check(pTHX_ HV *stash)
 
     PERL_ARGS_ASSERT_GV_CHECK;
 
-    if (!HvARRAY(stash))
+    if (!SvOOK(stash))
        return;
 
-    assert(SvOOK(stash));
+    assert(HvARRAY(stash));
 
     for (i = 0; i <= (I32) HvMAX(stash); i++) {
         const HE *entry;
@@ -2423,7 +2423,10 @@ Perl_gv_check(pTHX_ HV *stash)
        for (entry = HvARRAY(stash)[i]; entry; entry = HeNEXT(entry)) {
             GV *gv;
             HV *hv;
-           if (HeKEY(entry)[HeKLEN(entry)-1] == ':' &&
+           STRLEN keylen = HeKLEN(entry);
+            const char * const key = HeKEY(entry);
+
+           if (keylen >= 2 && key[keylen-2] == ':'  && key[keylen-1] == ':' &&
                (gv = MUTABLE_GV(HeVAL(entry))) && isGV(gv) && (hv = GvHV(gv)))
            {
                if (hv != PL_defstash && hv != stash
index bd1b26b..230eb6d 100644 (file)
 # 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.25.2
+# mkdir -p /opt/perl-catamount/lib/perl5/5.25.3
 # 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.25.2
+# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.25.3
 # 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/hv.c b/hv.c
index 5523475..ad7802c 100644 (file)
--- a/hv.c
+++ b/hv.c
@@ -829,13 +829,6 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
        HeKEY_hek(entry) = save_hek_flags(key, klen, hash, flags);
     HeVAL(entry) = val;
 
-    if (!*oentry && SvOOK(hv)) {
-        /* initial entry, and aux struct present.  */
-        struct xpvhv_aux *const aux = HvAUX(hv);
-        if (aux->xhv_fill_lazy)
-            ++aux->xhv_fill_lazy;
-    }
-
 #ifdef PERL_HASH_RANDOMIZE_KEYS
     /* This logic semi-randomizes the insert order in a bucket.
      * Either we insert into the top, or the slot below the top,
@@ -937,8 +930,14 @@ S_hv_magic_check(HV *hv, bool *needs_copy, bool *needs_store)
 /*
 =for apidoc hv_scalar
 
-Evaluates the hash in scalar context and returns the result.  Handles magic
-when the hash is tied.
+Evaluates the hash in scalar context and returns the result.
+
+When the hash is tied dispatches through to the SCALAR method,
+otherwise returns a mortal SV containing the number of keys
+in the hash.
+
+Note, prior to 5.25 this function returned what is now
+returned by the hv_bucket_ratio() function.
 
 =cut
 */
@@ -957,7 +956,41 @@ Perl_hv_scalar(pTHX_ HV *hv)
     }
 
     sv = sv_newmortal();
-    if (HvTOTALKEYS((const HV *)hv)) 
+    sv_setuv(sv, HvUSEDKEYS(hv));
+
+    return sv;
+}
+
+/*
+=for apidoc hv_bucket_ratio
+
+If the hash is tied dispatches through to the SCALAR tied method,
+otherwise if the hash contains no keys returns 0, otherwise returns
+a mortal sv containing a string specifying the number of used buckets,
+followed by a slash, followed by the number of available buckets.
+
+This function is expensive, it must scan all of the buckets
+to determine which are used, and the count is NOT cached.
+In a large hash this could be a lot of buckets.
+
+=cut
+*/
+
+SV *
+Perl_hv_bucket_ratio(pTHX_ HV *hv)
+{
+    SV *sv;
+
+    PERL_ARGS_ASSERT_HV_BUCKET_RATIO;
+
+    if (SvRMAGICAL(hv)) {
+        MAGIC * const mg = mg_find((const SV *)hv, PERL_MAGIC_tied);
+        if (mg)
+            return magic_scalarpack(hv, mg);
+    }
+
+    sv = sv_newmortal();
+    if (HvUSEDKEYS((const HV *)hv))
         Perl_sv_setpvf(aTHX_ sv, "%ld/%ld",
                 (long)HvFILL(hv), (long)HvMAX(hv) + 1);
     else
@@ -1256,12 +1289,6 @@ S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
            HvPLACEHOLDERS(hv)++;
        else {
            *oentry = HeNEXT(entry);
-            if(!*first_entry && SvOOK(hv)) {
-                /* removed last entry, and aux struct present.  */
-                struct xpvhv_aux *const aux = HvAUX(hv);
-                if (aux->xhv_fill_lazy)
-                    --aux->xhv_fill_lazy;
-            }
            if (SvOOK(hv) && entry == HvAUX(hv)->xhv_eiter /* HvEITER(hv) */)
                HvLAZYDEL_on(hv);
            else {
@@ -1353,10 +1380,6 @@ S_hsplit(pTHX_ HV *hv, STRLEN const oldsize, STRLEN newsize)
 #ifdef PERL_HASH_RANDOMIZE_KEYS
             dest->xhv_rand = (U32)PL_hash_rand_bits;
 #endif
-            /* For now, just reset the lazy fill counter.
-               It would be possible to update the counter in the code below
-               instead.  */
-            dest->xhv_fill_lazy = 0;
         } else {
             /* no existing aux structure, but we allocated space for one
              * so initialize it properly. This unrolls hv_auxinit() a bit,
@@ -1852,12 +1875,6 @@ Perl_hfree_next_entry(pTHX_ HV *hv, STRLEN *indexp)
             iter->xhv_last_rand = iter->xhv_rand;
 #endif
         }
-        /* Reset any cached HvFILL() to "unknown".  It's unlikely that anyone
-           will actually call HvFILL() on a hash under destruction, so it
-           seems pointless attempting to track the number of keys remaining.
-           But if they do, we want to reset it again.  */
-        if (iter->xhv_fill_lazy)
-            iter->xhv_fill_lazy = 0;
     }
 
     if (!((XPVHV*)SvANY(hv))->xhv_keys)
@@ -2002,17 +2019,15 @@ Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags)
 /*
 =for apidoc hv_fill
 
-Returns the number of hash buckets that
-happen to be in use.  This function is
-wrapped by the macro C<HvFILL>.
+Returns the number of hash buckets that happen to be in use.
+
+This function is wrapped by the macro C<HvFILL>.
 
-Previously this value was always stored in the HV structure, which created an
-overhead on every hash (and pretty much every object) for something that was
-rarely used.  Now we calculate it on demand the first
-time that it is needed, and cache it if that calculation
-is going to be costly to repeat.  The cached
-value is updated by insertions and deletions, but (currently) discarded if
-the hash is split.
+As of perl 5.25 this function is used only for debugging
+purposes, and the number of used hash buckets is not
+in any way cached, thus this function can be costly
+to execute as it must iterate over all the buckets in the
+hash.
 
 =cut
 */
@@ -2022,7 +2037,6 @@ Perl_hv_fill(pTHX_ HV *const hv)
 {
     STRLEN count = 0;
     HE **ents = HvARRAY(hv);
-    struct xpvhv_aux *aux = SvOOK(hv) ? HvAUX(hv) : NULL;
 
     PERL_ARGS_ASSERT_HV_FILL;
 
@@ -2031,12 +2045,12 @@ Perl_hv_fill(pTHX_ HV *const hv)
     if (HvTOTALKEYS(hv) < 2)
         return HvTOTALKEYS(hv);
 
-#ifndef DEBUGGING
-    if (aux && aux->xhv_fill_lazy)
-        return aux->xhv_fill_lazy;
-#endif
-
     if (ents) {
+        /* I wonder why we count down here...
+         * Is it some micro-optimisation?
+         * I would have thought counting up was better.
+         * - Yves
+         */
        HE *const *const last = ents + HvMAX(hv);
        count = last + 1 - ents;
 
@@ -2045,16 +2059,6 @@ Perl_hv_fill(pTHX_ HV *const hv)
                --count;
        } while (++ents <= last);
     }
-    if (aux) {
-#ifdef DEBUGGING
-        if (aux->xhv_fill_lazy)
-            assert(aux->xhv_fill_lazy == count);
-#endif
-        aux->xhv_fill_lazy = count;
-    } else if (HvMAX(hv) >= HV_FILL_THRESHOLD) {
-        aux = hv_auxinit(hv);
-        aux->xhv_fill_lazy = count;
-    }        
     return count;
 }
 
@@ -2099,7 +2103,6 @@ S_hv_auxinit_internal(struct xpvhv_aux *iter) {
 #ifdef PERL_HASH_RANDOMIZE_KEYS
     iter->xhv_last_rand = iter->xhv_rand;
 #endif
-    iter->xhv_fill_lazy = 0;
     iter->xhv_name_u.xhvnameu_name = 0;
     iter->xhv_name_count = 0;
     iter->xhv_backreferences = 0;
@@ -2181,7 +2184,7 @@ Perl_hv_iterinit(pTHX_ HV *hv)
        hv_auxinit(hv);
     }
 
-    /* used to be xhv->xhv_fill before 5.004_65 */
+    /* note this includes placeholders! */
     return HvTOTALKEYS(hv);
 }
 
diff --git a/hv.h b/hv.h
index b97b224..0e773f2 100644 (file)
--- a/hv.h
+++ b/hv.h
@@ -119,7 +119,6 @@ struct xpvhv_aux {
     U32         xhv_last_rand;  /* last random value for hash traversal,
                                    used to detect each() after insert for warnings */
 #endif
-    U32         xhv_fill_lazy;
     U32         xhv_aux_flags;      /* assorted extra flags */
 };
 
index 46f8d9d..14e9dbe 100644 (file)
--- a/inline.h
+++ b/inline.h
@@ -624,8 +624,10 @@ S_cx_popeval(pTHX_ PERL_CONTEXT *cx)
     }
 
     sv = cx->blk_eval.old_namesv;
-    if (sv && !SvTEMP(sv))/* TEMP implies cx_popeval() re-entrantly called */
-        sv_2mortal(sv);
+    if (sv) {
+        cx->blk_eval.old_namesv = NULL;
+        SvREFCNT_dec_NN(sv);
+    }
 }
 
 
index ca1bb71..756b1dc 100644 (file)
@@ -695,9 +695,6 @@ PERLVARI(I, known_layers, PerlIO_list_t *, NULL)
 PERLVARI(I, def_layerlist, PerlIO_list_t *, NULL)
 #endif
 
-PERLVARI(I, encoding,  SV *,   NULL)   /* $^ENCODING */
-PERLVARI(I, lex_encoding, SV *,        NULL)   /* encoding pragma */
-
 PERLVAR(I, utf8_idstart, SV *)
 PERLVAR(I, utf8_idcont,        SV *)
 PERLVAR(I, utf8_xidstart, SV *)
index fe13aae..ba24c27 100644 (file)
@@ -1946,12 +1946,12 @@ no warnings "experimental::lexical_subs";
 my sub f {}
 print f();
 >>>>
-BEGIN {${^WARNING_BITS} = "\x54\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x55\x15"}
+BEGIN {${^WARNING_BITS} = "\x54\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x55\x55"}
 my sub f {
-    BEGIN {${^WARNING_BITS} = "\x54\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x15"}
+    BEGIN {${^WARNING_BITS} = "\x54\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x55"}
     
 }
-BEGIN {${^WARNING_BITS} = "\x54\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x15"}
+BEGIN {${^WARNING_BITS} = "\x54\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x55"}
 print f();
 ####
 # SKIP ?$] < 5.017004 && "lexical subs not implemented on this Perl version"
@@ -1961,12 +1961,12 @@ no warnings 'experimental::lexical_subs';
 state sub f {}
 print f();
 >>>>
-BEGIN {${^WARNING_BITS} = "\x54\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x55\x15"}
+BEGIN {${^WARNING_BITS} = "\x54\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x55\x55"}
 state sub f {
-    BEGIN {${^WARNING_BITS} = "\x54\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x15"}
+    BEGIN {${^WARNING_BITS} = "\x54\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x55"}
     
 }
-BEGIN {${^WARNING_BITS} = "\x54\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x15"}
+BEGIN {${^WARNING_BITS} = "\x54\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x54\x55\x55\x55"}
 print f();
 ####
 # SKIP ?$] < 5.017004 && "lexical subs not implemented on this Perl version"
index a65196b..bb2d573 100644 (file)
@@ -118,7 +118,7 @@ package B::Op_private;
 our %bits;
 
 
-our $VERSION = "5.025002";
+our $VERSION = "5.025003";
 
 $bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv);
 $bits{$_}{6} = 'OPpENTERSUB_DB' for qw(entersub rv2cv);
index f48e4ca..990e86f 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 no warnings 'surrogate';    # surrogates can be inputs to this
 use charnames ();
 
-our $VERSION = '0.65';
+our $VERSION = '0.66';
 
 require Exporter;
 
@@ -98,6 +98,9 @@ Unicode::UCD - Unicode character database
     use Unicode::UCD 'search_invlist';
     my $index = search_invlist(\@invlist, $code_point);
 
+    # The following function should be used only internally in
+    # implementations of the Unicode Normalization Algorithm, and there
+    # are better choices than it.
     use Unicode::UCD 'compexcl';
     my $compexcl = compexcl($codepoint);
 
@@ -335,7 +338,8 @@ See L</Blocks versus Scripts>.
 
 the script I<code> belongs to.
 The L</prop_value_aliases()> function can be used to get all the synonyms
-of the script name.
+of the script name.  Note that this is the older "Script" property value, and
+not the improved "Script_Extensions" value.
 
 See L</Blocks versus Scripts>.
 
@@ -963,6 +967,10 @@ that it doesn't have scripts, this function returns C<"Unknown">.
 The L</prop_value_aliases()> function can be used to get all the synonyms
 of the script name.
 
+Note that the Script_Extensions property is an improved version of the Script
+property, and you should probably be using that instead, with the
+L</charprop()> function.
+
 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
 return value is a I<range set>: an anonymous array of arrays that contain
@@ -1053,7 +1061,9 @@ names as the keys, and the code point ranges (see L</charscript()>) as
 the values.
 
 L<prop_invmap("script")|/prop_invmap()> can be used to get this same data in a
-different type of data structure.
+different type of data structure.  Since the Script_Extensions property is an
+improved version of the Script property, you should instead use
+L<prop_invmap("scx")|/prop_invmap()>.
 
 L<C<prop_values("Script")>|/prop_values()> can be used to get all
 the known script names as a list, without the code point ranges.
@@ -1200,6 +1210,12 @@ sub bidi_types {
 
 =head2 B<compexcl()>
 
+WARNING: Unicode discourages the use of this function or any of the
+alternative mechanisms listed in this section (the documention of
+C<compexcl()>), except internally in implementations of the Unicode
+Normalization Algorithm.  You should be using L<Unicode::Normalize> directly
+instead of these.  Using these will likely lead to half-baked results.
+
     use Unicode::UCD 'compexcl';
 
     my $compexcl = compexcl(0x09dc);
@@ -2459,7 +2475,7 @@ resolving the input property's name as is done for regular expressions.  These
 are also specified in L<perluniprops|perluniprops/Properties accessible
 through \p{} and \P{}>.  Examples of using the "property=value" form are:
 
- say join ", ", prop_invlist("Script=Shavian");
+ say join ", ", prop_invlist("Script_Extensions=Shavian");
 
  prints:
  66640, 66688
@@ -3044,6 +3060,8 @@ L<Unicode::Normalize::NFD()|Unicode::Normalize>.
 
 Note that the mapping is the one that is specified in the Unicode data files,
 and to get the final decomposition, it may need to be applied recursively.
+Unicode in fact discourages use of this property except internally in
+implementations of the Unicode Normalization Algorithm.
 
 The fourth (index [3]) element (C<$default>) in the list returned for this
 format is 0.
index 8f8e551..a7bb666 100644 (file)
@@ -19,7 +19,7 @@ use Test::More;
 
 use Unicode::UCD qw(charinfo charprop charprops_all);
 
-my $expected_version = '8.0.0';
+my $expected_version = '9.0.0';
 my $current_version = Unicode::UCD::UnicodeVersion;
 my $v_unicode_version = pack "C*", split /\./, $current_version;
 my $unknown_script = ($v_unicode_version lt v5.0.0)
index cd87350..9a5400c 100644 (file)
@@ -1009,7 +1009,7 @@ is("\N{U+1D0C5}", "\N{BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS}", 'V
         die "Can't open ../../lib/unicore/UnicodeData.txt: $!";
     while (<$fh>) {
         chomp;
-        my ($code, $name, undef, undef, undef, undef, undef, undef, undef, undef, $u1name) = split ";";
+        my ($code, $name, $category, undef, undef, undef, undef, undef, undef, undef, $u1name) = split ";";
         my $decimal = utf8::unicode_to_native(hex $code);
         $code = sprintf("%04X", $decimal) unless $::IS_ASCII;
 
@@ -1042,12 +1042,26 @@ is("\N{U+1D0C5}", "\N{BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS}", 'V
             /^(.*?);/;
             my $end_decimal = hex $1;
 
-            # Only the CJK (and the Hangul which are instead dealt with below)
-            # ones have names, and they all have the code point as part of the
-            # name, which we can construct
-            if ($name =~ /^<CJK/) {
+            # Only the ones whose category is a letter currently have names,
+            # and of those the Hangul Syllables are dealt with below
+            if ( $category eq 'Lo' && $name !~ /^Hangul/i) {
+
+                # The CJK ones all get translated to a particular form; we
+                # just capitalize any others in the hopes that Unicode will
+                # use the correct term in any future ones it might add.
+                if ($name =~ /^<CJK/) {
+                    $name = "CJK UNIFIED IDEOGRAPH";
+                }
+                else {
+                    $name =~ s/<//;
+                    $name =~ s/,.*//;
+                    $name = uc($name);
+                }
+
+                # They all have the code point as part of the name, which we
+                # can construct
                 for my $i ($decimal .. $end_decimal) {
-                    $names[$i] = sprintf "CJK UNIFIED IDEOGRAPH-%04X", $i;
+                    $names[$i] = sprintf "$name-%04X", $i;
                     my $block = $i >> $block_size_bits;
                     $algorithmic_names_count[$block]++;
                 }
index caa7326..e97ffff 100644 (file)
@@ -5,7 +5,7 @@
 
 package feature;
 
-our $VERSION = '1.44';
+our $VERSION = '1.45';
 
 our %feature = (
     fc              => 'feature_fc',
@@ -20,6 +20,7 @@ our %feature = (
     refaliasing     => 'feature_refaliasing',
     postderef_qq    => 'feature_postderef_qq',
     unicode_eval    => 'feature_unieval',
+    declared_refs   => 'feature_myref',
     unicode_strings => 'feature_unicode',
 );
 
@@ -28,7 +29,7 @@ our %feature_bundle = (
     "5.11"    => [qw(array_base say state switch unicode_strings)],
     "5.15"    => [qw(current_sub evalbytes fc say state switch unicode_eval unicode_strings)],
     "5.23"    => [qw(current_sub evalbytes fc postderef_qq say state switch unicode_eval unicode_strings)],
-    "all"     => [qw(array_base bitwise current_sub evalbytes fc postderef_qq refaliasing say signatures state switch unicode_eval unicode_strings)],
+    "all"     => [qw(array_base bitwise current_sub declared_refs evalbytes fc postderef_qq refaliasing say signatures state switch unicode_eval unicode_strings)],
     "default" => [qw(array_base)],
 );
 
@@ -354,6 +355,22 @@ See L<perlop/Bitwise String Operators> for details.
 
 This feature is available from Perl 5.22 onwards.
 
+=head2 The 'declared_refs' 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::declared_refs";
+
+This allows a reference to a variable to be declared with C<my>, C<state>,
+our C<our>, or localized with C<local>.  It is intended mainly for use in
+conjunction with the "refaliasing" feature.  See L<perlref/Declaring a
+Reference to a Variable> for examples.
+
+This feature is available from Perl 5.26 onwards.
+
 =head1 FEATURE BUNDLES
 
 It's possible to load multiple features together, using
index 9afa9a4..075b0e6 100644 (file)
@@ -1738,11 +1738,22 @@ foreach my $Locale (@Locale) {
 
         use locale;
 
+        my @sorted_controls = sort @{$posixes{'cntrl'}};
+        debug "sorted :cntrl: = ", disp_chars(@sorted_controls), "\n";
+
+        ++$locales_test_number;
+        $test_names{$locales_test_number}
+                            = 'Verify that \0 sorts before any other control';
+        my $ok = $sorted_controls[0] eq "\0";
+        report_result($Locale, $locales_test_number, $ok);
+        shift @sorted_controls;
+        my $lowest_control = $sorted_controls[0];
+
         ++$locales_test_number;
         $test_names{$locales_test_number}
-            = 'Skip in locales where \001 has primary sorting weight; '
+            = 'Skip in locales where all controls have primary sorting weight; '
             . 'otherwise verify that \0 doesn\'t have primary sorting weight';
-        if ("a\001c" lt "ab") {
+        if ("a${lowest_control}c" lt "ab") {
             report_result($Locale, $locales_test_number, 1);
         }
         else {
@@ -1753,14 +1764,20 @@ foreach my $Locale (@Locale) {
         ++$locales_test_number;
         $test_names{$locales_test_number}
                             = 'Verify that strings with embedded NUL collate';
-        my $ok = "a\0a\0a" lt "a\001a\001a";
+        $ok = "a\0a\0a" lt "a${lowest_control}a${lowest_control}a";
         report_result($Locale, $locales_test_number, $ok);
 
         ++$locales_test_number;
         $test_names{$locales_test_number}
                             = 'Verify that strings with embedded NUL and '
                             . 'extra trailing NUL collate';
-        $ok = "a\0a\0" lt "a\001a\001";
+        $ok = "a\0a\0" lt "a${lowest_control}a${lowest_control}";
+        report_result($Locale, $locales_test_number, $ok);
+
+        ++$locales_test_number;
+        $test_names{$locales_test_number}
+                            = 'Verify that empty strings collate';
+        $ok = "" le "";
         report_result($Locale, $locales_test_number, $ok);
 
         ++$locales_test_number;
index b0e5b5b..cddc5b4 100644 (file)
@@ -1,23 +1,23 @@
-# ArabicShaping-8.0.0.txt
-# Date: 2015-02-17, 23:33:00 GMT [RP]
+# ArabicShaping-9.0.0.txt
+# Date: 2016-02-24, 22:25:00 GMT [RP]
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # This file is a normative contributory data file in the
 # Unicode Character Database.
 #
-# Copyright (c) 1991-2014 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, Mandaic, and Manichaean positional
 # shaping, repeating in machine readable form the information
 # exemplified in Tables 9-3, 9-8, 9-9, 9-10, 9-14, 9-15, 9-16, 9-19,
 # 9-20, 10-4, 10-5, 10-6, 10-7, and 19-5 of The Unicode Standard core
 # specification. This file also defines Joining_Type values for
-# Mongolian, Phags-pa, and Psalter Pahlavi positional shaping, which
-# are not listed in tables in the standard.
+# Mongolian, Phags-pa, Psalter Pahlavi, and Adlam positional shaping,
+# which are not listed in tables in the standard.
 #
-# See Sections 9.2, 9.3, 9.5, 10.5, 10.6, 13.4, 14.3, 19.4 of
-# The Unicode Standard core specification for more information.
+# See Sections 9.2, 9.3, 9.5, 10.5, 10.6, 13.4, 14.3, 19.4, and 19.9
+# of The Unicode Standard core specification for more information.
 #
 # Each line contains four fields, separated by a semicolon.
 #
@@ -50,8 +50,8 @@
 # Field 3: defines the joining group (property name: Joining_Group)
 #
 # The values of the joining group are based schematically on character
-# names. Where a schematic character name consists of two or more parts separated
-# by spaces, the formal Joining_Group property value, as specified in
+# names. Where a schematic character name consists of two or more parts
+# separated by spaces, the formal Joining_Group property value, as specified in
 # PropertyValueAliases.txt, consists of the same name parts joined by
 # underscores. Hence, the entry:
 #
@@ -90,7 +90,7 @@
 #   have joining type T.
 # - All others not explicitly listed have joining type U.
 #
-# For an explicit listing of characters of joining type T, see
+# For an explicit listing of all characters of joining type T, see
 # the derived property file DerivedJoiningType.txt.
 #
 # #############################################################
 08B2; REH WITH DOT AND INVERTED V ABOVE; R; REH
 08B3; AIN WITH 3 DOTS BELOW; D; AIN
 08B4; KAF WITH DOT BELOW; D; KAF
+08B6; BEH WITH MEEM ABOVE; D; BEH
+08B7; DOTLESS BEH WITH 3 DOTS BELOW AND MEEM ABOVE; D; BEH
+08B8; DOTLESS BEH WITH TEH ABOVE; D; BEH
+08B9; REH WITH NOON ABOVE; R; REH
+08BA; YEH WITH NOON ABOVE; D; YEH
+08BB; AFRICAN FEH; D; AFRICAN FEH
+08BC; AFRICAN QAF; D; AFRICAN QAF
+08BD; AFRICAN NOON; D; AFRICAN NOON
+08E2; ARABIC DISPUTED END OF AYAH; U; No_Joining_Group
 
 # Mongolian Characters
 
 1882; MONGOLIAN ALI GALI DAMARU; U; No_Joining_Group
 1883; MONGOLIAN ALI GALI UBADAMA; U; No_Joining_Group
 1884; MONGOLIAN ALI GALI INVERTED UBADAMA; U; No_Joining_Group
-1885; MONGOLIAN ALI GALI BALUDA; U; No_Joining_Group
-1886; MONGOLIAN ALI GALI THREE BALUDA; U; No_Joining_Group
+1885; MONGOLIAN ALI GALI BALUDA; T; No_Joining_Group
+1886; MONGOLIAN ALI GALI THREE BALUDA; T; No_Joining_Group
 1887; MONGOLIAN ALI GALI A; D; No_Joining_Group
 1888; MONGOLIAN ALI GALI I; D; No_Joining_Group
 1889; MONGOLIAN ALI GALI KA; D; No_Joining_Group
 
 200C; ZERO WIDTH NON-JOINER; U; No_Joining_Group
 200D; ZERO WIDTH JOINER; C; No_Joining_Group
+202F; NARROW NO-BREAK SPACE; U; No_Joining_Group
 2066; LEFT-TO-RIGHT ISOLATE; U; No_Joining_Group
 2067; RIGHT-TO-LEFT ISOLATE; U; No_Joining_Group
 2068; FIRST STRONG ISOLATE; U; No_Joining_Group
@@ -711,4 +721,75 @@ A873; PHAGS-PA CANDRABINDU; U; No_Joining_Group
 10BAE; PSALTER PAHLAVI TWENTY; D; No_Joining_Group
 10BAF; PSALTER PAHLAVI HUNDRED; U; No_Joining_Group
 
+# Adlam Characters
+
+1E900;ADLAM CAPITAL ALIF; D; No_Joining_Group
+1E901;ADLAM CAPITAL DAALI; D; No_Joining_Group
+1E902;ADLAM CAPITAL LAAM; D; No_Joining_Group
+1E903;ADLAM CAPITAL MIIM; D; No_Joining_Group
+1E904;ADLAM CAPITAL BA; D; No_Joining_Group
+1E905;ADLAM CAPITAL SINNYIIYHE; D; No_Joining_Group
+1E906;ADLAM CAPITAL PE; D; No_Joining_Group
+1E907;ADLAM CAPITAL BHE; D; No_Joining_Group
+1E908;ADLAM CAPITAL RA; D; No_Joining_Group
+1E909;ADLAM CAPITAL E; D; No_Joining_Group
+1E90A;ADLAM CAPITAL FA; D; No_Joining_Group
+1E90B;ADLAM CAPITAL I; D; No_Joining_Group
+1E90C;ADLAM CAPITAL O; D; No_Joining_Group
+1E90D;ADLAM CAPITAL DHA; D; No_Joining_Group
+1E90E;ADLAM CAPITAL YHE; D; No_Joining_Group
+1E90F;ADLAM CAPITAL WAW; D; No_Joining_Group
+1E910;ADLAM CAPITAL NUN; D; No_Joining_Group
+1E911;ADLAM CAPITAL KAF; D; No_Joining_Group
+1E912;ADLAM CAPITAL YA; D; No_Joining_Group
+1E913;ADLAM CAPITAL U; D; No_Joining_Group
+1E914;ADLAM CAPITAL JIIM; D; No_Joining_Group
+1E915;ADLAM CAPITAL CHI; D; No_Joining_Group
+1E916;ADLAM CAPITAL HA; D; No_Joining_Group
+1E917;ADLAM CAPITAL QAAF; D; No_Joining_Group
+1E918;ADLAM CAPITAL GA; D; No_Joining_Group
+1E919;ADLAM CAPITAL NYA; D; No_Joining_Group
+1E91A;ADLAM CAPITAL TU; D; No_Joining_Group
+1E91B;ADLAM CAPITAL NHA; D; No_Joining_Group
+1E91C;ADLAM CAPITAL VA; D; No_Joining_Group
+1E91D;ADLAM CAPITAL KHA; D; No_Joining_Group
+1E91E;ADLAM CAPITAL GBE; D; No_Joining_Group
+1E91F;ADLAM CAPITAL ZAL; D; No_Joining_Group
+1E920;ADLAM CAPITAL KPO; D; No_Joining_Group
+1E921;ADLAM CAPITAL SHA; D; No_Joining_Group
+1E922;ADLAM SMALL ALIF; D; No_Joining_Group
+1E923;ADLAM SMALL DAALI; D; No_Joining_Group
+1E924;ADLAM SMALL LAAM; D; No_Joining_Group
+1E925;ADLAM SMALL MIIM; D; No_Joining_Group
+1E926;ADLAM SMALL BA; D; No_Joining_Group
+1E927;ADLAM SMALL SINNYIIYHE; D; No_Joining_Group
+1E928;ADLAM SMALL PE; D; No_Joining_Group
+1E929;ADLAM SMALL BHE; D; No_Joining_Group
+1E92A;ADLAM SMALL RA; D; No_Joining_Group
+1E92B;ADLAM SMALL E; D; No_Joining_Group
+1E92C;ADLAM SMALL FA; D; No_Joining_Group
+1E92D;ADLAM SMALL I; D; No_Joining_Group
+1E92E;ADLAM SMALL O; D; No_Joining_Group
+1E92F;ADLAM SMALL DHA; D; No_Joining_Group
+1E930;ADLAM SMALL YHE; D; No_Joining_Group
+1E931;ADLAM SMALL WAW; D; No_Joining_Group
+1E932;ADLAM SMALL NUN; D; No_Joining_Group
+1E933;ADLAM SMALL KAF; D; No_Joining_Group
+1E934;ADLAM SMALL YA; D; No_Joining_Group
+1E935;ADLAM SMALL U; D; No_Joining_Group
+1E936;ADLAM SMALL JIIM; D; No_Joining_Group
+1E937;ADLAM SMALL CHI; D; No_Joining_Group
+1E938;ADLAM SMALL HA; D; No_Joining_Group
+1E939;ADLAM SMALL QAAF; D; No_Joining_Group
+1E93A;ADLAM SMALL GA; D; No_Joining_Group
+1E93B;ADLAM SMALL NYA; D; No_Joining_Group
+1E93C;ADLAM SMALL TU; D; No_Joining_Group
+1E93D;ADLAM SMALL NHA; D; No_Joining_Group
+1E93E;ADLAM SMALL VA; D; No_Joining_Group
+1E93F;ADLAM SMALL KHA; D; No_Joining_Group
+1E940;ADLAM SMALL GBE; D; No_Joining_Group
+1E941;ADLAM SMALL ZAL; D; No_Joining_Group
+1E942;ADLAM SMALL KPO; D; No_Joining_Group
+1E943;ADLAM SMALL SHA; D; No_Joining_Group
+
 # EOF
index bfd83cd..eb02a24 100644 (file)
@@ -1,14 +1,17 @@
-# BidiBrackets-8.0.0.txt
-# Date: 2015-01-20, 19:00:00 GMT [AG, LI, KW]
+# BidiBrackets-9.0.0.txt
+# Date: 2016-06-07, 22:30:00 GMT [AG, LI, KW]
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+# For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Bidi_Paired_Bracket and Bidi_Paired_Bracket_Type Properties
 # 
 # This file is a normative contributory data file in the Unicode
 # Character Database.
 #
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
 # Bidi_Paired_Bracket is a normative property of type Miscellaneous,
 # which establishes a mapping between characters that are treated as
 # bracket pairs by the Unicode Bidirectional Algorithm.
 # vice versa, and their Bidi_Paired_Bracket_Type (bpt) property values are
 # Open (o) and Close (c), respectively.
 #
+# The brackets with ticks U+298D LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+# through U+2990 RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER are paired the
+# same way their glyphs form mirror pairs, according to their bmg property
+# values. They are not paired on the basis of a diagonal or antidiagonal
+# matching of the corner ticks inferred from code point order.
+#
 # For legacy reasons, the characters U+FD3E ORNATE LEFT PARENTHESIS and
 # U+FD3F ORNATE RIGHT PARENTHESIS do not mirror in bidirectional display
 # and therefore do not form a bracket pair.
index fbc60f1..68142c5 100644 (file)
@@ -1,19 +1,21 @@
-# BidiMirroring-8.0.0.txt
-# Date: 2015-01-20, 18:30:00 GMT [KW, LI]
+# BidiMirroring-9.0.0.txt
+# Date: 2016-01-21, 22:00:00 GMT [KW, LI]
+# © 2016 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+# For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Bidi_Mirroring_Glyph Property
 # 
 # This file is an informative contributory data file in the
 # Unicode Character Database.
 #
-# Copyright (c) 1991-2015 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 8.0.0.
+# The repertoire covered by the file is Unicode 9.0.0.
 # 
 # The file contains a list of lines with mappings from one code point
 # to another one for character-based mirroring.
index 0a4a580..74c41e5 100644 (file)
@@ -1,9 +1,9 @@
-# Blocks-8.0.0.txt
-# Date: 2014-11-10, 23:04:00 GMT [KW]
+# Blocks-9.0.0.txt
+# Date: 2016-02-05, 23:48:00 GMT [KW]
+# © 2016 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2014 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
 # For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Format:
@@ -93,6 +93,7 @@
 1BC0..1BFF; Batak
 1C00..1C4F; Lepcha
 1C50..1C7F; Ol Chiki
+1C80..1C8F; Cyrillic Extended-C
 1CC0..1CCF; Sundanese Supplement
 1CD0..1CFF; Vedic Extensions
 1D00..1D7F; Phonetic Extensions
@@ -209,6 +210,7 @@ FFF0..FFFF; Specials
 10400..1044F; Deseret
 10450..1047F; Shavian
 10480..104AF; Osmanya
+104B0..104FF; Osage
 10500..1052F; Elbasan
 10530..1056F; Caucasian Albanian
 10600..1077F; Linear A
@@ -243,13 +245,17 @@ FFF0..FFFF; Specials
 11280..112AF; Multani
 112B0..112FF; Khudawadi
 11300..1137F; Grantha
+11400..1147F; Newa
 11480..114DF; Tirhuta
 11580..115FF; Siddham
 11600..1165F; Modi
+11660..1167F; Mongolian Supplement
 11680..116CF; Takri
 11700..1173F; Ahom
 118A0..118FF; Warang Citi
 11AC0..11AFF; Pau Cin Hau
+11C00..11C6F; Bhaiksuki
+11C70..11CBF; Marchen
 12000..123FF; Cuneiform
 12400..1247F; Cuneiform Numbers and Punctuation
 12480..1254F; Early Dynastic Cuneiform
@@ -260,6 +266,9 @@ FFF0..FFFF; Specials
 16AD0..16AFF; Bassa Vah
 16B00..16B8F; Pahawh Hmong
 16F00..16F9F; Miao
+16FE0..16FFF; Ideographic Symbols and Punctuation
+17000..187FF; Tangut
+18800..18AFF; Tangut Components
 1B000..1B0FF; Kana Supplement
 1BC00..1BC9F; Duployan
 1BCA0..1BCAF; Shorthand Format Controls
@@ -270,7 +279,9 @@ FFF0..FFFF; Specials
 1D360..1D37F; Counting Rod Numerals
 1D400..1D7FF; Mathematical Alphanumeric Symbols
 1D800..1DAAF; Sutton SignWriting
+1E000..1E02F; Glagolitic Supplement
 1E800..1E8DF; Mende Kikakui
+1E900..1E95F; Adlam
 1EE00..1EEFF; Arabic Mathematical Alphabetic Symbols
 1F000..1F02F; Mahjong Tiles
 1F030..1F09F; Domino Tiles
index e832657..e68bd1e 100644 (file)
@@ -1,28 +1,30 @@
-# CJKRadicals-8.0.0.txt
-# Date: 2015-02-19, 00:30:00 GMT [RC, KW, LI]
+# CJKRadicals-9.0.0.txt
+# Date: 2016-01-22, 06:00:00 GMT [RC, KW, LI]
+# © 2016 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see UAX #38: Unicode Han Database (Unihan),
-# at http://www.unicode.org/reports/tr38/
+# For documentation, see http://www.unicode.org/reports/tr44/
 #
-# Mapping from radical numbers to characters.
+# Mapping from CJK radical numbers to characters
 #
-# This data file provides a mapping from the radical numbers used
+# This data file provides a mapping from the CJK radical numbers used
 # in the kRSUnicode property to the corresponding character in
 # the Kangxi Radicals block or the CJK Radicals Supplement block,
 # as well as to a CJK unified ideograph which is formed from that
 # radical only.
 #
-# There is one line per radical number. Each line contains three
+# There is one line per CJK radical number. Each line contains three
 # fields, separated by a semicolon (';'). The first field is the
-# radical number. The second field is the CJK radical character.
+# CJK radical number. The second field is the CJK radical character.
 # The third field is the CJK unified ideograph.
 #
-# Radical numbers match the regular expression [1-9][0-9]{0,2}\'?
+# CJK radical numbers match the regular expression [1-9][0-9]{0,2}\'?
 # and in particular they can end with a U+0027 ' APOSTROPHE.
 #
+# For more information, see UAX #38: Unicode Han Database (Unihan),
+# at http://www.unicode.org/reports/tr38/
+#
 # This file was created for Unicode 5.2 by Richard Cook.
 # Updated for Unicode 6.0 by Richard Cook.
 # Updated for Unicode 6.1 and 6.2 by Ken Whistler,
index 0197a6c..372ee68 100644 (file)
@@ -1,10 +1,11 @@
-# CaseFolding-8.0.0.txt
-# Date: 2015-01-13, 18:16:36 GMT [MD]
+# CaseFolding-9.0.0.txt
+# Date: 2016-03-02, 18:54:54 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Case Folding Properties
 #
 13FB; C; 13F3; # CHEROKEE SMALL LETTER YU
 13FC; C; 13F4; # CHEROKEE SMALL LETTER YV
 13FD; C; 13F5; # CHEROKEE SMALL LETTER MV
+1C80; C; 0432; # CYRILLIC SMALL LETTER ROUNDED VE
+1C81; C; 0434; # CYRILLIC SMALL LETTER LONG-LEGGED DE
+1C82; C; 043E; # CYRILLIC SMALL LETTER NARROW O
+1C83; C; 0441; # CYRILLIC SMALL LETTER WIDE ES
+1C84; C; 0442; # CYRILLIC SMALL LETTER TALL TE
+1C85; C; 0442; # CYRILLIC SMALL LETTER THREE-LEGGED TE
+1C86; C; 044A; # CYRILLIC SMALL LETTER TALL HARD SIGN
+1C87; C; 0463; # CYRILLIC SMALL LETTER TALL YAT
+1C88; C; A64B; # CYRILLIC SMALL LETTER UNBLENDED UK
 1E00; C; 1E01; # LATIN CAPITAL LETTER A WITH RING BELOW
 1E02; C; 1E03; # LATIN CAPITAL LETTER B WITH DOT ABOVE
 1E04; C; 1E05; # LATIN CAPITAL LETTER B WITH DOT BELOW
@@ -1163,6 +1173,7 @@ A7AA; C; 0266; # LATIN CAPITAL LETTER H WITH HOOK
 A7AB; C; 025C; # LATIN CAPITAL LETTER REVERSED OPEN E
 A7AC; C; 0261; # LATIN CAPITAL LETTER SCRIPT G
 A7AD; C; 026C; # LATIN CAPITAL LETTER L WITH BELT
+A7AE; C; 026A; # LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0; C; 029E; # LATIN CAPITAL LETTER TURNED K
 A7B1; C; 0287; # LATIN CAPITAL LETTER TURNED T
 A7B2; C; 029D; # LATIN CAPITAL LETTER J WITH CROSSED-TAIL
@@ -1327,6 +1338,42 @@ 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
+104B0; C; 104D8; # OSAGE CAPITAL LETTER A
+104B1; C; 104D9; # OSAGE CAPITAL LETTER AI
+104B2; C; 104DA; # OSAGE CAPITAL LETTER AIN
+104B3; C; 104DB; # OSAGE CAPITAL LETTER AH
+104B4; C; 104DC; # OSAGE CAPITAL LETTER BRA
+104B5; C; 104DD; # OSAGE CAPITAL LETTER CHA
+104B6; C; 104DE; # OSAGE CAPITAL LETTER EHCHA
+104B7; C; 104DF; # OSAGE CAPITAL LETTER E
+104B8; C; 104E0; # OSAGE CAPITAL LETTER EIN
+104B9; C; 104E1; # OSAGE CAPITAL LETTER HA
+104BA; C; 104E2; # OSAGE CAPITAL LETTER HYA
+104BB; C; 104E3; # OSAGE CAPITAL LETTER I
+104BC; C; 104E4; # OSAGE CAPITAL LETTER KA
+104BD; C; 104E5; # OSAGE CAPITAL LETTER EHKA
+104BE; C; 104E6; # OSAGE CAPITAL LETTER KYA
+104BF; C; 104E7; # OSAGE CAPITAL LETTER LA
+104C0; C; 104E8; # OSAGE CAPITAL LETTER MA
+104C1; C; 104E9; # OSAGE CAPITAL LETTER NA
+104C2; C; 104EA; # OSAGE CAPITAL LETTER O
+104C3; C; 104EB; # OSAGE CAPITAL LETTER OIN
+104C4; C; 104EC; # OSAGE CAPITAL LETTER PA
+104C5; C; 104ED; # OSAGE CAPITAL LETTER EHPA
+104C6; C; 104EE; # OSAGE CAPITAL LETTER SA
+104C7; C; 104EF; # OSAGE CAPITAL LETTER SHA
+104C8; C; 104F0; # OSAGE CAPITAL LETTER TA
+104C9; C; 104F1; # OSAGE CAPITAL LETTER EHTA
+104CA; C; 104F2; # OSAGE CAPITAL LETTER TSA
+104CB; C; 104F3; # OSAGE CAPITAL LETTER EHTSA
+104CC; C; 104F4; # OSAGE CAPITAL LETTER TSHA
+104CD; C; 104F5; # OSAGE CAPITAL LETTER DHA
+104CE; C; 104F6; # OSAGE CAPITAL LETTER U
+104CF; C; 104F7; # OSAGE CAPITAL LETTER WA
+104D0; C; 104F8; # OSAGE CAPITAL LETTER KHA
+104D1; C; 104F9; # OSAGE CAPITAL LETTER GHA
+104D2; C; 104FA; # OSAGE CAPITAL LETTER ZA
+104D3; C; 104FB; # OSAGE CAPITAL LETTER ZHA
 10C80; C; 10CC0; # OLD HUNGARIAN CAPITAL LETTER A
 10C81; C; 10CC1; # OLD HUNGARIAN CAPITAL LETTER AA
 10C82; C; 10CC2; # OLD HUNGARIAN CAPITAL LETTER EB
@@ -1410,5 +1457,39 @@ FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z
 118BD; C; 118DD; # WARANG CITI CAPITAL LETTER SSUU
 118BE; C; 118DE; # WARANG CITI CAPITAL LETTER SII
 118BF; C; 118DF; # WARANG CITI CAPITAL LETTER VIYO
+1E900; C; 1E922; # ADLAM CAPITAL LETTER ALIF
+1E901; C; 1E923; # ADLAM CAPITAL LETTER DAALI
+1E902; C; 1E924; # ADLAM CAPITAL LETTER LAAM
+1E903; C; 1E925; # ADLAM CAPITAL LETTER MIIM
+1E904; C; 1E926; # ADLAM CAPITAL LETTER BA
+1E905; C; 1E927; # ADLAM CAPITAL LETTER SINNYIIYHE
+1E906; C; 1E928; # ADLAM CAPITAL LETTER PE
+1E907; C; 1E929; # ADLAM CAPITAL LETTER BHE
+1E908; C; 1E92A; # ADLAM CAPITAL LETTER RA
+1E909; C; 1E92B; # ADLAM CAPITAL LETTER E
+1E90A; C; 1E92C; # ADLAM CAPITAL LETTER FA
+1E90B; C; 1E92D; # ADLAM CAPITAL LETTER I
+1E90C; C; 1E92E; # ADLAM CAPITAL LETTER O
+1E90D; C; 1E92F; # ADLAM CAPITAL LETTER DHA
+1E90E; C; 1E930; # ADLAM CAPITAL LETTER YHE
+1E90F; C; 1E931; # ADLAM CAPITAL LETTER WAW
+1E910; C; 1E932; # ADLAM CAPITAL LETTER NUN
+1E911; C; 1E933; # ADLAM CAPITAL LETTER KAF
+1E912; C; 1E934; # ADLAM CAPITAL LETTER YA
+1E913; C; 1E935; # ADLAM CAPITAL LETTER U
+1E914; C; 1E936; # ADLAM CAPITAL LETTER JIIM
+1E915; C; 1E937; # ADLAM CAPITAL LETTER CHI
+1E916; C; 1E938; # ADLAM CAPITAL LETTER HA
+1E917; C; 1E939; # ADLAM CAPITAL LETTER QAAF
+1E918; C; 1E93A; # ADLAM CAPITAL LETTER GA
+1E919; C; 1E93B; # ADLAM CAPITAL LETTER NYA
+1E91A; C; 1E93C; # ADLAM CAPITAL LETTER TU
+1E91B; C; 1E93D; # ADLAM CAPITAL LETTER NHA
+1E91C; C; 1E93E; # ADLAM CAPITAL LETTER VA
+1E91D; C; 1E93F; # ADLAM CAPITAL LETTER KHA
+1E91E; C; 1E940; # ADLAM CAPITAL LETTER GBE
+1E91F; C; 1E941; # ADLAM CAPITAL LETTER ZAL
+1E920; C; 1E942; # ADLAM CAPITAL LETTER KPO
+1E921; C; 1E943; # ADLAM CAPITAL LETTER SHA
 #
 # EOF
index a4324b8..1999ed1 100644 (file)
@@ -1,5 +1,10 @@
-# CompositionExclusions-8.0.0.txt
-# Date: 2015-02-19, 00:30:00 GMT [KW, LI]
+# CompositionExclusions-9.0.0.txt
+# Date: 2016-01-21, 22:00:00 GMT [KW, LI]
+# © 2016 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+# For documentation, see http://www.unicode.org/reports/tr44/
 #
 # This file lists the characters for the Composition Exclusion Table
 # defined in UAX #15, Unicode Normalization Forms.
@@ -7,9 +12,6 @@
 # This file is a normative contributory data file in the
 # Unicode Character Database.
 #
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
 # For more information, see
 # http://www.unicode.org/unicode/reports/tr15/#Primary_Exclusion_List_Table
 #
index f1b0add..e9c7cd6 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedAge-8.0.0.txt
-# Date: 2015-02-13, 13:30:18 GMT [MD]
+# DerivedAge-9.0.0.txt
+# Date: 2016-03-02, 18:54:54 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Unicode Character Database: Derived Property Data
 # This file shows when various code points were first assigned in Unicode.
@@ -1535,4 +1536,66 @@ FE2E..FE2F    ; 8.0 #   [2] COMBINING CYRILLIC TITLO LEFT HALF..COMBINING CYRILL
 
 # Total code points: 7716
 
+# ================================================
+
+# Age=V9_0
+
+# Newly assigned in Unicode 9.0.0 (June, 2016)
+
+08B6..08BD    ; 9.0 #   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
+08D4..08E1    ; 9.0 #  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
+08E2          ; 9.0 #       ARABIC DISPUTED END OF AYAH
+0C80          ; 9.0 #       KANNADA SIGN SPACING CANDRABINDU
+0D4F          ; 9.0 #       MALAYALAM SIGN PARA
+0D54..0D56    ; 9.0 #   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
+0D58..0D5E    ; 9.0 #   [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
+0D76..0D78    ; 9.0 #   [3] MALAYALAM FRACTION ONE SIXTEENTH..MALAYALAM FRACTION THREE SIXTEENTHS
+1C80..1C88    ; 9.0 #   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+1DFB          ; 9.0 #       COMBINING DELETION MARK
+23FB..23FE    ; 9.0 #   [4] POWER SYMBOL..POWER SLEEP SYMBOL
+2E43..2E44    ; 9.0 #   [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
+A7AE          ; 9.0 #       LATIN CAPITAL LETTER SMALL CAPITAL I
+A8C5          ; 9.0 #       SAURASHTRA SIGN CANDRABINDU
+1018D..1018E  ; 9.0 #   [2] GREEK INDICTION SIGN..NOMISMA SIGN
+104B0..104D3  ; 9.0 #  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; 9.0 #  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+1123E         ; 9.0 #       KHOJKI SIGN SUKUN
+11400..11459  ; 9.0 #  [90] NEWA LETTER A..NEWA DIGIT NINE
+1145B         ; 9.0 #       NEWA PLACEHOLDER MARK
+1145D         ; 9.0 #       NEWA INSERTION SIGN
+11660..1166C  ; 9.0 #  [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
+11C00..11C08  ; 9.0 #   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C36  ; 9.0 #  [45] BHAIKSUKI LETTER E..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C45  ; 9.0 #  [14] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI GAP FILLER-2
+11C50..11C6C  ; 9.0 #  [29] BHAIKSUKI DIGIT ZERO..BHAIKSUKI HUNDREDS UNIT MARK
+11C70..11C8F  ; 9.0 #  [32] MARCHEN HEAD MARK..MARCHEN LETTER A
+11C92..11CA7  ; 9.0 #  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9..11CB6  ; 9.0 #  [14] MARCHEN SUBJOINED LETTER YA..MARCHEN SIGN CANDRABINDU
+16FE0         ; 9.0 #       TANGUT ITERATION MARK
+17000..187EC  ; 9.0 # [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; 9.0 # [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
+1E000..1E006  ; 9.0 #   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; 9.0 #  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; 9.0 #   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; 9.0 #   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; 9.0 #   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
+1E900..1E94A  ; 9.0 #  [75] ADLAM CAPITAL LETTER ALIF..ADLAM NUKTA
+1E950..1E959  ; 9.0 #  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
+1E95E..1E95F  ; 9.0 #   [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
+1F19B..1F1AC  ; 9.0 #  [18] SQUARED THREE D..SQUARED VOD
+1F23B         ; 9.0 #       SQUARED CJK UNIFIED IDEOGRAPH-914D
+1F57A         ; 9.0 #       MAN DANCING
+1F5A4         ; 9.0 #       BLACK HEART
+1F6D1..1F6D2  ; 9.0 #   [2] OCTAGONAL SIGN..SHOPPING TROLLEY
+1F6F4..1F6F6  ; 9.0 #   [3] SCOOTER..CANOE
+1F919..1F91E  ; 9.0 #   [6] CALL ME HAND..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+1F920..1F927  ; 9.0 #   [8] FACE WITH COWBOY HAT..SNEEZING FACE
+1F930         ; 9.0 #       PREGNANT WOMAN
+1F933..1F93E  ; 9.0 #  [12] SELFIE..HANDBALL
+1F940..1F94B  ; 9.0 #  [12] WILTED FLOWER..MARTIAL ARTS UNIFORM
+1F950..1F95E  ; 9.0 #  [15] CROISSANT..PANCAKES
+1F985..1F991  ; 9.0 #  [13] EAGLE..SQUID
+
+# Total code points: 7500
+
 # EOF
index 35d51e5..0db031d 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedCoreProperties-8.0.0.txt
-# Date: 2015-03-11, 22:29:21 GMT [MD]
+# DerivedCoreProperties-9.0.0.txt
+# Date: 2016-06-01, 10:34:24 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
@@ -340,6 +341,8 @@ FFE9..FFEC    ; Math # Sm   [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A
 0829..082C    ; Alphabetic # Mn   [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN
 0840..0858    ; Alphabetic # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
 08A0..08B4    ; Alphabetic # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD    ; Alphabetic # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
+08D4..08DF    ; Alphabetic # Mn  [12] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH WORD WAQFA
 08E3..08E9    ; Alphabetic # Mn   [7] ARABIC TURNED DAMMA BELOW..ARABIC CURLY KASRATAN
 08F0..0902    ; Alphabetic # Mn  [19] ARABIC OPEN FATHATAN..DEVANAGARI SIGN ANUSVARA
 0903          ; Alphabetic # Mc       DEVANAGARI SIGN VISARGA
@@ -467,6 +470,7 @@ FFE9..FFEC    ; Math # Sm   [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A
 0C58..0C5A    ; Alphabetic # Lo   [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
 0C60..0C61    ; Alphabetic # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
 0C62..0C63    ; Alphabetic # Mn   [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+0C80          ; Alphabetic # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C81          ; Alphabetic # Mn       KANNADA SIGN CANDRABINDU
 0C82..0C83    ; Alphabetic # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
 0C85..0C8C    ; Alphabetic # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
@@ -498,6 +502,7 @@ FFE9..FFEC    ; Math # Sm   [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A
 0D46..0D48    ; Alphabetic # Mc   [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
 0D4A..0D4C    ; Alphabetic # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
 0D4E          ; Alphabetic # Lo       MALAYALAM LETTER DOT REPH
+0D54..0D56    ; Alphabetic # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D57          ; Alphabetic # Mc       MALAYALAM AU LENGTH MARK
 0D5F..0D61    ; Alphabetic # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D62..0D63    ; Alphabetic # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
@@ -629,7 +634,9 @@ FFE9..FFEC    ; Math # Sm   [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A
 1820..1842    ; Alphabetic # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; Alphabetic # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877    ; Alphabetic # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; Alphabetic # Lo  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; Alphabetic # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885..1886    ; Alphabetic # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887..18A8    ; Alphabetic # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18A9          ; Alphabetic # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 18AA          ; Alphabetic # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5    ; Alphabetic # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
@@ -695,6 +702,7 @@ FFE9..FFEC    ; Math # Sm   [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS A
 1C4D..1C4F    ; Alphabetic # Lo   [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
 1C5A..1C77    ; Alphabetic # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
 1C78..1C7D    ; Alphabetic # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+1C80..1C88    ; Alphabetic # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1CE9..1CEC    ; Alphabetic # Lo   [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
 1CEE..1CF1    ; Alphabetic # Lo   [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA
 1CF2..1CF3    ; Alphabetic # Mc   [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA
@@ -815,7 +823,7 @@ A771..A787    ; Alphabetic # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER
 A788          ; Alphabetic # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
 A78B..A78E    ; Alphabetic # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; Alphabetic # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AD    ; Alphabetic # L&  [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE    ; Alphabetic # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; Alphabetic # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7          ; Alphabetic # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; Alphabetic # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -831,6 +839,7 @@ A840..A873    ; Alphabetic # Lo  [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRA
 A880..A881    ; Alphabetic # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
 A882..A8B3    ; Alphabetic # Lo  [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
 A8B4..A8C3    ; Alphabetic # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+A8C5          ; Alphabetic # Mn       SAURASHTRA SIGN CANDRABINDU
 A8F2..A8F7    ; Alphabetic # Lo   [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
 A8FB          ; Alphabetic # Lo       DEVANAGARI HEADSTROKE
 A8FD          ; Alphabetic # Lo       DEVANAGARI JAIN OM
@@ -958,6 +967,8 @@ FFDA..FFDC    ; Alphabetic # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
 103D1..103D5  ; Alphabetic # Nl   [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
 10400..1044F  ; Alphabetic # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
 10450..1049D  ; Alphabetic # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+104B0..104D3  ; Alphabetic # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; Alphabetic # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10500..10527  ; Alphabetic # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
 10530..10563  ; Alphabetic # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
 10600..10736  ; Alphabetic # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
@@ -1029,6 +1040,7 @@ FFDA..FFDC    ; Alphabetic # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
 11232..11233  ; Alphabetic # Mc   [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
 11234         ; Alphabetic # Mn       KHOJKI SIGN ANUSVARA
 11237         ; Alphabetic # Mn       KHOJKI SIGN SHADDA
+1123E         ; Alphabetic # Mn       KHOJKI SIGN SUKUN
 11280..11286  ; Alphabetic # Lo   [7] MULTANI LETTER A..MULTANI LETTER GA
 11288         ; Alphabetic # Lo       MULTANI LETTER GHA
 1128A..1128D  ; Alphabetic # Lo   [4] MULTANI LETTER CA..MULTANI LETTER JJA
@@ -1056,6 +1068,13 @@ FFDA..FFDC    ; Alphabetic # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
 11357         ; Alphabetic # Mc       GRANTHA AU LENGTH MARK
 1135D..11361  ; Alphabetic # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
 11362..11363  ; Alphabetic # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11400..11434  ; Alphabetic # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+11435..11437  ; Alphabetic # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F  ; Alphabetic # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441  ; Alphabetic # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11443..11444  ; Alphabetic # Mn   [2] NEWA SIGN CANDRABINDU..NEWA SIGN ANUSVARA
+11445         ; Alphabetic # Mc       NEWA SIGN VISARGA
+11447..1144A  ; Alphabetic # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
 11480..114AF  ; Alphabetic # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114B0..114B2  ; Alphabetic # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B3..114B8  ; Alphabetic # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
@@ -1097,6 +1116,21 @@ FFDA..FFDC    ; Alphabetic # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
 118A0..118DF  ; Alphabetic # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
 118FF         ; Alphabetic # Lo       WARANG CITI OM
 11AC0..11AF8  ; Alphabetic # Lo  [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08  ; Alphabetic # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; Alphabetic # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C2F         ; Alphabetic # Mc       BHAIKSUKI VOWEL SIGN AA
+11C30..11C36  ; Alphabetic # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; Alphabetic # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3E         ; Alphabetic # Mc       BHAIKSUKI SIGN VISARGA
+11C40         ; Alphabetic # Lo       BHAIKSUKI SIGN AVAGRAHA
+11C72..11C8F  ; Alphabetic # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+11C92..11CA7  ; Alphabetic # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9         ; Alphabetic # Mc       MARCHEN SUBJOINED LETTER YA
+11CAA..11CB0  ; Alphabetic # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB1         ; Alphabetic # Mc       MARCHEN VOWEL SIGN I
+11CB2..11CB3  ; Alphabetic # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4         ; Alphabetic # Mc       MARCHEN VOWEL SIGN O
+11CB5..11CB6  ; Alphabetic # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 12000..12399  ; Alphabetic # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E  ; Alphabetic # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12480..12543  ; Alphabetic # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
@@ -1114,6 +1148,9 @@ FFDA..FFDC    ; Alphabetic # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
 16F50         ; Alphabetic # Lo       MIAO LETTER NASALIZATION
 16F51..16F7E  ; Alphabetic # Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
 16F93..16F9F  ; Alphabetic # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0         ; Alphabetic # Lm       TANGUT ITERATION MARK
+17000..187EC  ; Alphabetic # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; Alphabetic # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B000..1B001  ; Alphabetic # Lo   [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
 1BC00..1BC6A  ; Alphabetic # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
 1BC70..1BC7C  ; Alphabetic # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
@@ -1150,7 +1187,14 @@ FFDA..FFDC    ; Alphabetic # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
 1D78A..1D7A8  ; Alphabetic # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
 1D7AA..1D7C2  ; Alphabetic # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
 1D7C4..1D7CB  ; Alphabetic # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+1E000..1E006  ; Alphabetic # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; Alphabetic # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; Alphabetic # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; Alphabetic # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; Alphabetic # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E800..1E8C4  ; Alphabetic # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
+1E900..1E943  ; Alphabetic # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+1E947         ; Alphabetic # Mn       ADLAM HAMZA
 1EE00..1EE03  ; Alphabetic # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
 1EE05..1EE1F  ; Alphabetic # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
 1EE21..1EE22  ; Alphabetic # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -1193,7 +1237,7 @@ FFDA..FFDC    ; Alphabetic # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
 2B820..2CEA1  ; Alphabetic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
 2F800..2FA1D  ; Alphabetic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 
-# Total code points: 110943
+# Total code points: 118240
 
 # ================================================
 
@@ -1478,6 +1522,7 @@ FFDA..FFDC    ; Alphabetic # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANG
 052F          ; Lowercase # L&       CYRILLIC SMALL LETTER EL WITH DESCENDER
 0561..0587    ; Lowercase # L&  [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
 13F8..13FD    ; Lowercase # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+1C80..1C88    ; Lowercase # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1D00..1D2B    ; Lowercase # L&  [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
 1D2C..1D6A    ; Lowercase # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
 1D6B..1D77    ; Lowercase # L&  [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
@@ -1820,6 +1865,7 @@ FB00..FB06    ; Lowercase # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATU
 FB13..FB17    ; Lowercase # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
 FF41..FF5A    ; Lowercase # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
 10428..1044F  ; Lowercase # L&  [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW
+104D8..104FB  ; Lowercase # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10CC0..10CF2  ; Lowercase # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
 118C0..118DF  ; Lowercase # L&  [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
 1D41A..1D433  ; Lowercase # L&  [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z
@@ -1850,8 +1896,9 @@ FF41..FF5A    ; Lowercase # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
 1D7AA..1D7C2  ; Lowercase # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
 1D7C4..1D7C9  ; Lowercase # L&   [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
 1D7CB         ; Lowercase # L&       MATHEMATICAL BOLD SMALL DIGAMMA
+1E922..1E943  ; Lowercase # L&  [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
 
-# Total code points: 2173
+# Total code points: 2252
 
 # ================================================
 
@@ -2447,11 +2494,12 @@ A7A2          ; Uppercase # L&       LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
 A7A4          ; Uppercase # L&       LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
 A7A6          ; Uppercase # L&       LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
 A7A8          ; Uppercase # L&       LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
-A7AA..A7AD    ; Uppercase # L&   [4] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER L WITH BELT
+A7AA..A7AE    ; Uppercase # L&   [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B4    ; Uppercase # L&   [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA
 A7B6          ; Uppercase # L&       LATIN CAPITAL LETTER OMEGA
 FF21..FF3A    ; Uppercase # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
 10400..10427  ; Uppercase # L&  [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
+104B0..104D3  ; Uppercase # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
 10C80..10CB2  ; Uppercase # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
 118A0..118BF  ; Uppercase # L&  [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
 1D400..1D419  ; Uppercase # L&  [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z
@@ -2485,11 +2533,12 @@ FF21..FF3A    ; Uppercase # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH
 1D756..1D76E  ; Uppercase # L&  [25] MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
 1D790..1D7A8  ; Uppercase # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
 1D7CA         ; Uppercase # L&       MATHEMATICAL BOLD CAPITAL DIGAMMA
+1E900..1E921  ; Uppercase # L&  [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
 1F130..1F149  ; Uppercase # So  [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z
 1F150..1F169  ; Uppercase # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
 1F170..1F189  ; Uppercase # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
 
-# Total code points: 1751
+# Total code points: 1822
 
 # ================================================
 
@@ -2531,6 +2580,7 @@ FF21..FF3A    ; Uppercase # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH
 10CD          ; Cased # L&       GEORGIAN CAPITAL LETTER AEN
 13A0..13F5    ; Cased # L&  [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
 13F8..13FD    ; Cased # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+1C80..1C88    ; Cased # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1D00..1D2B    ; Cased # L&  [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
 1D2C..1D6A    ; Cased # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
 1D6B..1D77    ; Cased # L&  [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
@@ -2593,7 +2643,7 @@ A722..A76F    ; Cased # L&  [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN
 A770          ; Cased # Lm       MODIFIER LETTER US
 A771..A787    ; Cased # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
 A78B..A78E    ; Cased # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
-A790..A7AD    ; Cased # L&  [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE    ; Cased # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; Cased # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F8..A7F9    ; Cased # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
 A7FA          ; Cased # L&       LATIN LETTER SMALL CAPITAL TURNED M
@@ -2606,6 +2656,8 @@ FB13..FB17    ; Cased # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL
 FF21..FF3A    ; Cased # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
 FF41..FF5A    ; Cased # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
 10400..1044F  ; Cased # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+104B0..104D3  ; Cased # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; Cased # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10C80..10CB2  ; Cased # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
 10CC0..10CF2  ; Cased # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
 118A0..118DF  ; Cased # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
@@ -2639,11 +2691,12 @@ FF41..FF5A    ; Cased # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN
 1D78A..1D7A8  ; Cased # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
 1D7AA..1D7C2  ; Cased # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
 1D7C4..1D7CB  ; Cased # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+1E900..1E943  ; Cased # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
 1F130..1F149  ; Cased # So  [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z
 1F150..1F169  ; Cased # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
 1F170..1F189  ; Cased # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
 
-# Total code points: 3955
+# Total code points: 4105
 
 # ================================================
 
@@ -2716,6 +2769,8 @@ FF41..FF5A    ; Cased # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN
 0828          ; Case_Ignorable # Lm       SAMARITAN MODIFIER LETTER I
 0829..082D    ; Case_Ignorable # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
 0859..085B    ; Case_Ignorable # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+08D4..08E1    ; Case_Ignorable # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
+08E2          ; Case_Ignorable # Cf       ARABIC DISPUTED END OF AYAH
 08E3..0902    ; Case_Ignorable # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
 093A          ; Case_Ignorable # Mn       DEVANAGARI VOWEL SIGN OE
 093C          ; Case_Ignorable # Mn       DEVANAGARI SIGN NUKTA
@@ -2817,6 +2872,7 @@ FF41..FF5A    ; Cased # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN
 180B..180D    ; Case_Ignorable # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
 180E          ; Case_Ignorable # Cf       MONGOLIAN VOWEL SEPARATOR
 1843          ; Case_Ignorable # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1885..1886    ; Case_Ignorable # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
 18A9          ; Case_Ignorable # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 1920..1922    ; Case_Ignorable # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
 1927..1928    ; Case_Ignorable # Mn   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
@@ -2861,7 +2917,7 @@ FF41..FF5A    ; Cased # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN
 1D78          ; Case_Ignorable # Lm       MODIFIER LETTER CYRILLIC EN
 1D9B..1DBF    ; Case_Ignorable # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
 1DC0..1DF5    ; Case_Ignorable # Mn  [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF    ; Case_Ignorable # Mn   [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+1DFB..1DFF    ; Case_Ignorable # Mn   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
 1FBD          ; Case_Ignorable # Sk       GREEK KORONIS
 1FBF..1FC1    ; Case_Ignorable # Sk   [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
 1FCD..1FCF    ; Case_Ignorable # Sk   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
@@ -2919,7 +2975,7 @@ A802          ; Case_Ignorable # Mn       SYLOTI NAGRI SIGN DVISVARA
 A806          ; Case_Ignorable # Mn       SYLOTI NAGRI SIGN HASANTA
 A80B          ; Case_Ignorable # Mn       SYLOTI NAGRI SIGN ANUSVARA
 A825..A826    ; Case_Ignorable # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
-A8C4          ; Case_Ignorable # Mn       SAURASHTRA SIGN VIRAMA
+A8C4..A8C5    ; Case_Ignorable # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8E0..A8F1    ; Case_Ignorable # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
 A926..A92D    ; Case_Ignorable # Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
 A947..A951    ; Case_Ignorable # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
@@ -2993,6 +3049,7 @@ FFF9..FFFB    ; Case_Ignorable # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI
 1122F..11231  ; Case_Ignorable # Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
 11234         ; Case_Ignorable # Mn       KHOJKI SIGN ANUSVARA
 11236..11237  ; Case_Ignorable # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E         ; Case_Ignorable # Mn       KHOJKI SIGN SUKUN
 112DF         ; Case_Ignorable # Mn       KHUDAWADI SIGN ANUSVARA
 112E3..112EA  ; Case_Ignorable # Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
 11300..11301  ; Case_Ignorable # Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
@@ -3000,6 +3057,9 @@ FFF9..FFFB    ; Case_Ignorable # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI
 11340         ; Case_Ignorable # Mn       GRANTHA VOWEL SIGN II
 11366..1136C  ; Case_Ignorable # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; Case_Ignorable # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11438..1143F  ; Case_Ignorable # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11442..11444  ; Case_Ignorable # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11446         ; Case_Ignorable # Mn       NEWA SIGN NUKTA
 114B3..114B8  ; Case_Ignorable # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
 114BA         ; Case_Ignorable # Mn       TIRHUTA VOWEL SIGN SHORT E
 114BF..114C0  ; Case_Ignorable # Mn   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
@@ -3018,11 +3078,19 @@ FFF9..FFFB    ; Case_Ignorable # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI
 1171D..1171F  ; Case_Ignorable # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
 11722..11725  ; Case_Ignorable # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
 11727..1172B  ; Case_Ignorable # Mn   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+11C30..11C36  ; Case_Ignorable # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; Case_Ignorable # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3F         ; Case_Ignorable # Mn       BHAIKSUKI SIGN VIRAMA
+11C92..11CA7  ; Case_Ignorable # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CAA..11CB0  ; Case_Ignorable # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB2..11CB3  ; Case_Ignorable # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB5..11CB6  ; Case_Ignorable # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 16AF0..16AF4  ; Case_Ignorable # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
 16B30..16B36  ; Case_Ignorable # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
 16B40..16B43  ; Case_Ignorable # Lm   [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
 16F8F..16F92  ; Case_Ignorable # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
 16F93..16F9F  ; Case_Ignorable # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0         ; Case_Ignorable # Lm       TANGUT ITERATION MARK
 1BC9D..1BC9E  ; Case_Ignorable # Mn   [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
 1BCA0..1BCA3  ; Case_Ignorable # Cf   [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
 1D167..1D169  ; Case_Ignorable # Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
@@ -3037,13 +3105,19 @@ FFF9..FFFB    ; Case_Ignorable # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLI
 1DA84         ; Case_Ignorable # Mn       SIGNWRITING LOCATION HEAD NECK
 1DA9B..1DA9F  ; Case_Ignorable # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF  ; Case_Ignorable # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006  ; Case_Ignorable # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; Case_Ignorable # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; Case_Ignorable # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; Case_Ignorable # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; Case_Ignorable # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E8D0..1E8D6  ; Case_Ignorable # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E944..1E94A  ; Case_Ignorable # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
 1F3FB..1F3FF  ; Case_Ignorable # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
 E0001         ; Case_Ignorable # Cf       LANGUAGE TAG
 E0020..E007F  ; Case_Ignorable # Cf  [96] TAG SPACE..CANCEL TAG
 E0100..E01EF  ; Case_Ignorable # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 
-# Total code points: 2115
+# Total code points: 2240
 
 # ================================================
 
@@ -3633,15 +3707,17 @@ A7A2          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER K WITH O
 A7A4          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
 A7A6          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
 A7A8          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
-A7AA..A7AD    ; Changes_When_Lowercased # L&   [4] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER L WITH BELT
+A7AA..A7AE    ; Changes_When_Lowercased # L&   [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B4    ; Changes_When_Lowercased # L&   [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA
 A7B6          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER OMEGA
 FF21..FF3A    ; Changes_When_Lowercased # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
 10400..10427  ; Changes_When_Lowercased # L&  [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
+104B0..104D3  ; Changes_When_Lowercased # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
 10C80..10CB2  ; Changes_When_Lowercased # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
 118A0..118BF  ; Changes_When_Lowercased # L&  [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
+1E900..1E921  ; Changes_When_Lowercased # L&  [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
 
-# Total code points: 1233
+# Total code points: 1304
 
 # ================================================
 
@@ -3800,8 +3876,7 @@ FF21..FF3A    ; Changes_When_Lowercased # L&  [26] FULLWIDTH LATIN CAPITAL LETTE
 0260..0261    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G
 0263          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER GAMMA
 0265..0266    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK
-0268..0269    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER IOTA
-026B..026C    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER L WITH MIDDLE TILDE..LATIN SMALL LETTER L WITH BELT
+0268..026C    ; Changes_When_Uppercased # L&   [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT
 026F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER TURNED M
 0271..0272    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK
 0275          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER BARRED O
@@ -3937,6 +4012,7 @@ FF21..FF3A    ; Changes_When_Lowercased # L&  [26] FULLWIDTH LATIN CAPITAL LETTE
 052F          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER EL WITH DESCENDER
 0561..0587    ; Changes_When_Uppercased # L&  [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
 13F8..13FD    ; Changes_When_Uppercased # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+1C80..1C88    ; Changes_When_Uppercased # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1D79          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER INSULAR G
 1D7D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER P WITH STROKE
 1E01          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH RING BELOW
@@ -4253,10 +4329,12 @@ FB00..FB06    ; Changes_When_Uppercased # L&   [7] LATIN SMALL LIGATURE FF..LATI
 FB13..FB17    ; Changes_When_Uppercased # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
 FF41..FF5A    ; Changes_When_Uppercased # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
 10428..1044F  ; Changes_When_Uppercased # L&  [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW
+104D8..104FB  ; Changes_When_Uppercased # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10CC0..10CF2  ; Changes_When_Uppercased # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
 118C0..118DF  ; Changes_When_Uppercased # L&  [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+1E922..1E943  ; Changes_When_Uppercased # L&  [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
 
-# Total code points: 1316
+# Total code points: 1396
 
 # ================================================
 
@@ -4416,8 +4494,7 @@ FF41..FF5A    ; Changes_When_Uppercased # L&  [26] FULLWIDTH LATIN SMALL LETTER
 0260..0261    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G
 0263          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER GAMMA
 0265..0266    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK
-0268..0269    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER IOTA
-026B..026C    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER L WITH MIDDLE TILDE..LATIN SMALL LETTER L WITH BELT
+0268..026C    ; Changes_When_Titlecased # L&   [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT
 026F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER TURNED M
 0271..0272    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK
 0275          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER BARRED O
@@ -4553,6 +4630,7 @@ FF41..FF5A    ; Changes_When_Uppercased # L&  [26] FULLWIDTH LATIN SMALL LETTER
 052F          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER EL WITH DESCENDER
 0561..0587    ; Changes_When_Titlecased # L&  [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
 13F8..13FD    ; Changes_When_Titlecased # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+1C80..1C88    ; Changes_When_Titlecased # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1D79          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER INSULAR G
 1D7D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER P WITH STROKE
 1E01          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH RING BELOW
@@ -4869,10 +4947,12 @@ FB00..FB06    ; Changes_When_Titlecased # L&   [7] LATIN SMALL LIGATURE FF..LATI
 FB13..FB17    ; Changes_When_Titlecased # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
 FF41..FF5A    ; Changes_When_Titlecased # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
 10428..1044F  ; Changes_When_Titlecased # L&  [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW
+104D8..104FB  ; Changes_When_Titlecased # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10CC0..10CF2  ; Changes_When_Titlecased # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
 118C0..118DF  ; Changes_When_Titlecased # L&  [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+1E922..1E943  ; Changes_When_Titlecased # L&  [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
 
-# Total code points: 1289
+# Total code points: 1369
 
 # ================================================
 
@@ -5163,6 +5243,7 @@ FF41..FF5A    ; Changes_When_Titlecased # L&  [26] FULLWIDTH LATIN SMALL LETTER
 10C7          ; Changes_When_Casefolded # L&       GEORGIAN CAPITAL LETTER YN
 10CD          ; Changes_When_Casefolded # L&       GEORGIAN CAPITAL LETTER AEN
 13F8..13FD    ; Changes_When_Casefolded # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+1C80..1C88    ; Changes_When_Casefolded # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1E00          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH RING BELOW
 1E02          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER B WITH DOT ABOVE
 1E04          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER B WITH DOT BELOW
@@ -5471,7 +5552,7 @@ A7A2          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER K WITH O
 A7A4          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
 A7A6          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
 A7A8          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
-A7AA..A7AD    ; Changes_When_Casefolded # L&   [4] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER L WITH BELT
+A7AA..A7AE    ; Changes_When_Casefolded # L&   [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B4    ; Changes_When_Casefolded # L&   [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA
 A7B6          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER OMEGA
 AB70..ABBF    ; Changes_When_Casefolded # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
@@ -5479,10 +5560,12 @@ FB00..FB06    ; Changes_When_Casefolded # L&   [7] LATIN SMALL LIGATURE FF..LATI
 FB13..FB17    ; Changes_When_Casefolded # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
 FF21..FF3A    ; Changes_When_Casefolded # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
 10400..10427  ; Changes_When_Casefolded # L&  [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
+104B0..104D3  ; Changes_When_Casefolded # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
 10C80..10CB2  ; Changes_When_Casefolded # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
 118A0..118BF  ; Changes_When_Casefolded # L&  [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
+1E900..1E921  ; Changes_When_Casefolded # L&  [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
 
-# Total code points: 1297
+# Total code points: 1377
 
 # ================================================
 
@@ -5512,8 +5595,7 @@ FF21..FF3A    ; Changes_When_Casefolded # L&  [26] FULLWIDTH LATIN CAPITAL LETTE
 0260..0261    ; Changes_When_Casemapped # L&   [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G
 0263          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER GAMMA
 0265..0266    ; Changes_When_Casemapped # L&   [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK
-0268..0269    ; Changes_When_Casemapped # L&   [2] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER IOTA
-026B..026C    ; Changes_When_Casemapped # L&   [2] LATIN SMALL LETTER L WITH MIDDLE TILDE..LATIN SMALL LETTER L WITH BELT
+0268..026C    ; Changes_When_Casemapped # L&   [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT
 026F          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER TURNED M
 0271..0272    ; Changes_When_Casemapped # L&   [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK
 0275          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER BARRED O
@@ -5544,6 +5626,7 @@ FF21..FF3A    ; Changes_When_Casefolded # L&  [26] FULLWIDTH LATIN CAPITAL LETTE
 10CD          ; Changes_When_Casemapped # L&       GEORGIAN CAPITAL LETTER AEN
 13A0..13F5    ; Changes_When_Casemapped # L&  [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
 13F8..13FD    ; Changes_When_Casemapped # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+1C80..1C88    ; Changes_When_Casemapped # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1D79          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER INSULAR G
 1D7D          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER P WITH STROKE
 1E00..1E9B    ; Changes_When_Casemapped # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
@@ -5592,7 +5675,7 @@ A732..A76F    ; Changes_When_Casemapped # L&  [62] LATIN CAPITAL LETTER AA..LATI
 A779..A787    ; Changes_When_Casemapped # L&  [15] LATIN CAPITAL LETTER INSULAR D..LATIN SMALL LETTER INSULAR T
 A78B..A78D    ; Changes_When_Casemapped # L&   [3] LATIN CAPITAL LETTER SALTILLO..LATIN CAPITAL LETTER TURNED H
 A790..A793    ; Changes_When_Casemapped # L&   [4] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER C WITH BAR
-A796..A7AD    ; Changes_When_Casemapped # L&  [24] LATIN CAPITAL LETTER B WITH FLOURISH..LATIN CAPITAL LETTER L WITH BELT
+A796..A7AE    ; Changes_When_Casemapped # L&  [25] LATIN CAPITAL LETTER B WITH FLOURISH..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; Changes_When_Casemapped # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 AB53          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER CHI
 AB70..ABBF    ; Changes_When_Casemapped # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
@@ -5601,11 +5684,14 @@ FB13..FB17    ; Changes_When_Casemapped # L&   [5] ARMENIAN SMALL LIGATURE MEN N
 FF21..FF3A    ; Changes_When_Casemapped # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
 FF41..FF5A    ; Changes_When_Casemapped # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
 10400..1044F  ; Changes_When_Casemapped # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+104B0..104D3  ; Changes_When_Casemapped # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; Changes_When_Casemapped # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10C80..10CB2  ; Changes_When_Casemapped # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
 10CC0..10CF2  ; Changes_When_Casemapped # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
 118A0..118DF  ; Changes_When_Casemapped # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+1E900..1E943  ; Changes_When_Casemapped # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
 
-# Total code points: 2518
+# Total code points: 2669
 
 # ================================================
 
@@ -5678,6 +5764,7 @@ FF41..FF5A    ; Changes_When_Casemapped # L&  [26] FULLWIDTH LATIN SMALL LETTER
 0828          ; ID_Start # Lm       SAMARITAN MODIFIER LETTER I
 0840..0858    ; ID_Start # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
 08A0..08B4    ; ID_Start # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD    ; ID_Start # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
 0904..0939    ; ID_Start # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
 093D          ; ID_Start # Lo       DEVANAGARI SIGN AVAGRAHA
 0950          ; ID_Start # Lo       DEVANAGARI OM
@@ -5743,6 +5830,7 @@ FF41..FF5A    ; Changes_When_Casemapped # L&  [26] FULLWIDTH LATIN SMALL LETTER
 0C3D          ; ID_Start # Lo       TELUGU SIGN AVAGRAHA
 0C58..0C5A    ; ID_Start # Lo   [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
 0C60..0C61    ; ID_Start # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C80          ; ID_Start # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C85..0C8C    ; ID_Start # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0C8E..0C90    ; ID_Start # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
 0C92..0CA8    ; ID_Start # Lo  [23] KANNADA LETTER O..KANNADA LETTER NA
@@ -5757,6 +5845,7 @@ FF41..FF5A    ; Changes_When_Casemapped # L&  [26] FULLWIDTH LATIN SMALL LETTER
 0D12..0D3A    ; ID_Start # Lo  [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
 0D3D          ; ID_Start # Lo       MALAYALAM SIGN AVAGRAHA
 0D4E          ; ID_Start # Lo       MALAYALAM LETTER DOT REPH
+0D54..0D56    ; ID_Start # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D5F..0D61    ; ID_Start # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D7A..0D7F    ; ID_Start # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 0D85..0D96    ; ID_Start # Lo  [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
@@ -5840,7 +5929,9 @@ FF41..FF5A    ; Changes_When_Casemapped # L&  [26] FULLWIDTH LATIN SMALL LETTER
 1820..1842    ; ID_Start # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; ID_Start # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877    ; ID_Start # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; ID_Start # Lo  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; ID_Start # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885..1886    ; ID_Start # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887..18A8    ; ID_Start # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18AA          ; ID_Start # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5    ; ID_Start # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
 1900..191E    ; ID_Start # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
@@ -5860,6 +5951,7 @@ FF41..FF5A    ; Changes_When_Casemapped # L&  [26] FULLWIDTH LATIN SMALL LETTER
 1C4D..1C4F    ; ID_Start # Lo   [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
 1C5A..1C77    ; ID_Start # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
 1C78..1C7D    ; ID_Start # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+1C80..1C88    ; ID_Start # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1CE9..1CEC    ; ID_Start # Lo   [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
 1CEE..1CF1    ; ID_Start # Lo   [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA
 1CF5..1CF6    ; ID_Start # Lo   [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
@@ -5976,7 +6068,7 @@ A771..A787    ; ID_Start # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER I
 A788          ; ID_Start # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
 A78B..A78E    ; ID_Start # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; ID_Start # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AD    ; ID_Start # L&  [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE    ; ID_Start # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; ID_Start # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7          ; ID_Start # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; ID_Start # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -6081,6 +6173,8 @@ FFDA..FFDC    ; ID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 103D1..103D5  ; ID_Start # Nl   [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
 10400..1044F  ; ID_Start # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
 10450..1049D  ; ID_Start # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+104B0..104D3  ; ID_Start # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; ID_Start # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10500..10527  ; ID_Start # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
 10530..10563  ; ID_Start # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
 10600..10736  ; ID_Start # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
@@ -6142,6 +6236,8 @@ FFDA..FFDC    ; ID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 1133D         ; ID_Start # Lo       GRANTHA SIGN AVAGRAHA
 11350         ; ID_Start # Lo       GRANTHA OM
 1135D..11361  ; ID_Start # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+11400..11434  ; ID_Start # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+11447..1144A  ; ID_Start # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
 11480..114AF  ; ID_Start # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114C4..114C5  ; ID_Start # Lo   [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
 114C7         ; ID_Start # Lo       TIRHUTA OM
@@ -6154,6 +6250,10 @@ FFDA..FFDC    ; ID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 118A0..118DF  ; ID_Start # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
 118FF         ; ID_Start # Lo       WARANG CITI OM
 11AC0..11AF8  ; ID_Start # Lo  [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08  ; ID_Start # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; ID_Start # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C40         ; ID_Start # Lo       BHAIKSUKI SIGN AVAGRAHA
+11C72..11C8F  ; ID_Start # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
 12000..12399  ; ID_Start # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E  ; ID_Start # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12480..12543  ; ID_Start # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
@@ -6169,6 +6269,9 @@ FFDA..FFDC    ; ID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 16F00..16F44  ; ID_Start # Lo  [69] MIAO LETTER PA..MIAO LETTER HHA
 16F50         ; ID_Start # Lo       MIAO LETTER NASALIZATION
 16F93..16F9F  ; ID_Start # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0         ; ID_Start # Lm       TANGUT ITERATION MARK
+17000..187EC  ; ID_Start # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; ID_Start # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B000..1B001  ; ID_Start # Lo   [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
 1BC00..1BC6A  ; ID_Start # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
 1BC70..1BC7C  ; ID_Start # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
@@ -6205,6 +6308,7 @@ FFDA..FFDC    ; ID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 1D7AA..1D7C2  ; ID_Start # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
 1D7C4..1D7CB  ; ID_Start # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
 1E800..1E8C4  ; ID_Start # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
+1E900..1E943  ; ID_Start # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
 1EE00..1EE03  ; ID_Start # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
 1EE05..1EE1F  ; ID_Start # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
 1EE21..1EE22  ; ID_Start # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -6244,7 +6348,7 @@ FFDA..FFDC    ; ID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 2B820..2CEA1  ; ID_Start # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
 2F800..2FA1D  ; ID_Start # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 
-# Total code points: 109830
+# Total code points: 117007
 
 # ================================================
 
@@ -6348,6 +6452,8 @@ FFDA..FFDC    ; ID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 0840..0858    ; ID_Continue # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
 0859..085B    ; ID_Continue # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
 08A0..08B4    ; ID_Continue # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD    ; ID_Continue # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
+08D4..08E1    ; ID_Continue # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
 08E3..0902    ; ID_Continue # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
 0903          ; ID_Continue # Mc       DEVANAGARI SIGN VISARGA
 0904..0939    ; ID_Continue # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
@@ -6491,6 +6597,7 @@ FFDA..FFDC    ; ID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 0C60..0C61    ; ID_Continue # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
 0C62..0C63    ; ID_Continue # Mn   [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
 0C66..0C6F    ; ID_Continue # Nd  [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+0C80          ; ID_Continue # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C81          ; ID_Continue # Mn       KANNADA SIGN CANDRABINDU
 0C82..0C83    ; ID_Continue # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
 0C85..0C8C    ; ID_Continue # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
@@ -6525,6 +6632,7 @@ FFDA..FFDC    ; ID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 0D4A..0D4C    ; ID_Continue # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
 0D4D          ; ID_Continue # Mn       MALAYALAM SIGN VIRAMA
 0D4E          ; ID_Continue # Lo       MALAYALAM LETTER DOT REPH
+0D54..0D56    ; ID_Continue # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D57          ; ID_Continue # Mc       MALAYALAM AU LENGTH MARK
 0D5F..0D61    ; ID_Continue # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D62..0D63    ; ID_Continue # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
@@ -6682,7 +6790,9 @@ FFDA..FFDC    ; ID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 1820..1842    ; ID_Continue # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; ID_Continue # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877    ; ID_Continue # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; ID_Continue # Lo  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; ID_Continue # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885..1886    ; ID_Continue # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887..18A8    ; ID_Continue # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18A9          ; ID_Continue # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 18AA          ; ID_Continue # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5    ; ID_Continue # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
@@ -6767,6 +6877,7 @@ FFDA..FFDC    ; ID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 1C50..1C59    ; ID_Continue # Nd  [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
 1C5A..1C77    ; ID_Continue # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
 1C78..1C7D    ; ID_Continue # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+1C80..1C88    ; ID_Continue # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1CD0..1CD2    ; ID_Continue # Mn   [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
 1CD4..1CE0    ; ID_Continue # Mn  [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
 1CE1          ; ID_Continue # Mc       VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
@@ -6785,7 +6896,7 @@ FFDA..FFDC    ; ID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 1D79..1D9A    ; ID_Continue # L&  [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
 1D9B..1DBF    ; ID_Continue # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
 1DC0..1DF5    ; ID_Continue # Mn  [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF    ; ID_Continue # Mn   [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+1DFB..1DFF    ; ID_Continue # Mn   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
 1E00..1F15    ; ID_Continue # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
 1F18..1F1D    ; ID_Continue # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
 1F20..1F45    ; ID_Continue # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
@@ -6909,7 +7020,7 @@ A771..A787    ; ID_Continue # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTE
 A788          ; ID_Continue # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
 A78B..A78E    ; ID_Continue # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; ID_Continue # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AD    ; ID_Continue # L&  [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE    ; ID_Continue # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; ID_Continue # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7          ; ID_Continue # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; ID_Continue # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -6928,7 +7039,7 @@ A840..A873    ; ID_Continue # Lo  [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDR
 A880..A881    ; ID_Continue # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
 A882..A8B3    ; ID_Continue # Lo  [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
 A8B4..A8C3    ; ID_Continue # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
-A8C4          ; ID_Continue # Mn       SAURASHTRA SIGN VIRAMA
+A8C4..A8C5    ; ID_Continue # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8D0..A8D9    ; ID_Continue # Nd  [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
 A8E0..A8F1    ; ID_Continue # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
 A8F2..A8F7    ; ID_Continue # Lo   [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
@@ -7081,6 +7192,8 @@ FFDA..FFDC    ; ID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
 10400..1044F  ; ID_Continue # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
 10450..1049D  ; ID_Continue # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
 104A0..104A9  ; ID_Continue # Nd  [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+104B0..104D3  ; ID_Continue # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; ID_Continue # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10500..10527  ; ID_Continue # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
 10530..10563  ; ID_Continue # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
 10600..10736  ; ID_Continue # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
@@ -7164,6 +7277,7 @@ FFDA..FFDC    ; ID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
 11234         ; ID_Continue # Mn       KHOJKI SIGN ANUSVARA
 11235         ; ID_Continue # Mc       KHOJKI SIGN VIRAMA
 11236..11237  ; ID_Continue # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E         ; ID_Continue # Mn       KHOJKI SIGN SUKUN
 11280..11286  ; ID_Continue # Lo   [7] MULTANI LETTER A..MULTANI LETTER GA
 11288         ; ID_Continue # Lo       MULTANI LETTER GHA
 1128A..1128D  ; ID_Continue # Lo   [4] MULTANI LETTER CA..MULTANI LETTER JJA
@@ -7195,6 +7309,15 @@ FFDA..FFDC    ; ID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
 11362..11363  ; ID_Continue # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
 11366..1136C  ; ID_Continue # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; ID_Continue # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11400..11434  ; ID_Continue # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+11435..11437  ; ID_Continue # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F  ; ID_Continue # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441  ; ID_Continue # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11442..11444  ; ID_Continue # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11445         ; ID_Continue # Mc       NEWA SIGN VISARGA
+11446         ; ID_Continue # Mn       NEWA SIGN NUKTA
+11447..1144A  ; ID_Continue # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+11450..11459  ; ID_Continue # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
 11480..114AF  ; ID_Continue # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114B0..114B2  ; ID_Continue # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B3..114B8  ; ID_Continue # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
@@ -7245,6 +7368,23 @@ FFDA..FFDC    ; ID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
 118E0..118E9  ; ID_Continue # Nd  [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
 118FF         ; ID_Continue # Lo       WARANG CITI OM
 11AC0..11AF8  ; ID_Continue # Lo  [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08  ; ID_Continue # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; ID_Continue # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C2F         ; ID_Continue # Mc       BHAIKSUKI VOWEL SIGN AA
+11C30..11C36  ; ID_Continue # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; ID_Continue # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3E         ; ID_Continue # Mc       BHAIKSUKI SIGN VISARGA
+11C3F         ; ID_Continue # Mn       BHAIKSUKI SIGN VIRAMA
+11C40         ; ID_Continue # Lo       BHAIKSUKI SIGN AVAGRAHA
+11C50..11C59  ; ID_Continue # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+11C72..11C8F  ; ID_Continue # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+11C92..11CA7  ; ID_Continue # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9         ; ID_Continue # Mc       MARCHEN SUBJOINED LETTER YA
+11CAA..11CB0  ; ID_Continue # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB1         ; ID_Continue # Mc       MARCHEN VOWEL SIGN I
+11CB2..11CB3  ; ID_Continue # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4         ; ID_Continue # Mc       MARCHEN VOWEL SIGN O
+11CB5..11CB6  ; ID_Continue # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 12000..12399  ; ID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E  ; ID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12480..12543  ; ID_Continue # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
@@ -7266,6 +7406,9 @@ FFDA..FFDC    ; ID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
 16F51..16F7E  ; ID_Continue # Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
 16F8F..16F92  ; ID_Continue # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
 16F93..16F9F  ; ID_Continue # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0         ; ID_Continue # Lm       TANGUT ITERATION MARK
+17000..187EC  ; ID_Continue # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; ID_Continue # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B000..1B001  ; ID_Continue # Lo   [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
 1BC00..1BC6A  ; ID_Continue # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
 1BC70..1BC7C  ; ID_Continue # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
@@ -7316,8 +7459,16 @@ FFDA..FFDC    ; ID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
 1DA84         ; ID_Continue # Mn       SIGNWRITING LOCATION HEAD NECK
 1DA9B..1DA9F  ; ID_Continue # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF  ; ID_Continue # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006  ; ID_Continue # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; ID_Continue # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; ID_Continue # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; ID_Continue # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; ID_Continue # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E800..1E8C4  ; ID_Continue # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
 1E8D0..1E8D6  ; ID_Continue # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E900..1E943  ; ID_Continue # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+1E944..1E94A  ; ID_Continue # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+1E950..1E959  ; ID_Continue # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
 1EE00..1EE03  ; ID_Continue # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
 1EE05..1EE1F  ; ID_Continue # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
 1EE21..1EE22  ; ID_Continue # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -7358,7 +7509,7 @@ FFDA..FFDC    ; ID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HAN
 2F800..2FA1D  ; ID_Continue # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 E0100..E01EF  ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 
-# Total code points: 112352
+# Total code points: 119691
 
 # ================================================
 
@@ -7428,6 +7579,7 @@ E0100..E01EF  ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR
 0828          ; XID_Start # Lm       SAMARITAN MODIFIER LETTER I
 0840..0858    ; XID_Start # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
 08A0..08B4    ; XID_Start # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD    ; XID_Start # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
 0904..0939    ; XID_Start # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
 093D          ; XID_Start # Lo       DEVANAGARI SIGN AVAGRAHA
 0950          ; XID_Start # Lo       DEVANAGARI OM
@@ -7493,6 +7645,7 @@ E0100..E01EF  ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR
 0C3D          ; XID_Start # Lo       TELUGU SIGN AVAGRAHA
 0C58..0C5A    ; XID_Start # Lo   [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
 0C60..0C61    ; XID_Start # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C80          ; XID_Start # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C85..0C8C    ; XID_Start # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0C8E..0C90    ; XID_Start # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
 0C92..0CA8    ; XID_Start # Lo  [23] KANNADA LETTER O..KANNADA LETTER NA
@@ -7507,6 +7660,7 @@ E0100..E01EF  ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR
 0D12..0D3A    ; XID_Start # Lo  [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
 0D3D          ; XID_Start # Lo       MALAYALAM SIGN AVAGRAHA
 0D4E          ; XID_Start # Lo       MALAYALAM LETTER DOT REPH
+0D54..0D56    ; XID_Start # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D5F..0D61    ; XID_Start # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D7A..0D7F    ; XID_Start # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 0D85..0D96    ; XID_Start # Lo  [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
@@ -7590,7 +7744,9 @@ E0100..E01EF  ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR
 1820..1842    ; XID_Start # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; XID_Start # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877    ; XID_Start # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; XID_Start # Lo  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; XID_Start # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885..1886    ; XID_Start # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887..18A8    ; XID_Start # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18AA          ; XID_Start # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5    ; XID_Start # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
 1900..191E    ; XID_Start # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
@@ -7610,6 +7766,7 @@ E0100..E01EF  ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR
 1C4D..1C4F    ; XID_Start # Lo   [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
 1C5A..1C77    ; XID_Start # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
 1C78..1C7D    ; XID_Start # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+1C80..1C88    ; XID_Start # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1CE9..1CEC    ; XID_Start # Lo   [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
 1CEE..1CF1    ; XID_Start # Lo   [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA
 1CF5..1CF6    ; XID_Start # Lo   [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
@@ -7725,7 +7882,7 @@ A771..A787    ; XID_Start # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER
 A788          ; XID_Start # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
 A78B..A78E    ; XID_Start # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; XID_Start # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AD    ; XID_Start # L&  [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE    ; XID_Start # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; XID_Start # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7          ; XID_Start # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; XID_Start # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -7835,6 +7992,8 @@ FFDA..FFDC    ; XID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
 103D1..103D5  ; XID_Start # Nl   [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
 10400..1044F  ; XID_Start # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
 10450..1049D  ; XID_Start # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+104B0..104D3  ; XID_Start # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; XID_Start # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10500..10527  ; XID_Start # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
 10530..10563  ; XID_Start # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
 10600..10736  ; XID_Start # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
@@ -7896,6 +8055,8 @@ FFDA..FFDC    ; XID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
 1133D         ; XID_Start # Lo       GRANTHA SIGN AVAGRAHA
 11350         ; XID_Start # Lo       GRANTHA OM
 1135D..11361  ; XID_Start # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+11400..11434  ; XID_Start # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+11447..1144A  ; XID_Start # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
 11480..114AF  ; XID_Start # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114C4..114C5  ; XID_Start # Lo   [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
 114C7         ; XID_Start # Lo       TIRHUTA OM
@@ -7908,6 +8069,10 @@ FFDA..FFDC    ; XID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
 118A0..118DF  ; XID_Start # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
 118FF         ; XID_Start # Lo       WARANG CITI OM
 11AC0..11AF8  ; XID_Start # Lo  [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08  ; XID_Start # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; XID_Start # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C40         ; XID_Start # Lo       BHAIKSUKI SIGN AVAGRAHA
+11C72..11C8F  ; XID_Start # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
 12000..12399  ; XID_Start # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E  ; XID_Start # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12480..12543  ; XID_Start # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
@@ -7923,6 +8088,9 @@ FFDA..FFDC    ; XID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
 16F00..16F44  ; XID_Start # Lo  [69] MIAO LETTER PA..MIAO LETTER HHA
 16F50         ; XID_Start # Lo       MIAO LETTER NASALIZATION
 16F93..16F9F  ; XID_Start # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0         ; XID_Start # Lm       TANGUT ITERATION MARK
+17000..187EC  ; XID_Start # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; XID_Start # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B000..1B001  ; XID_Start # Lo   [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
 1BC00..1BC6A  ; XID_Start # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
 1BC70..1BC7C  ; XID_Start # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
@@ -7959,6 +8127,7 @@ FFDA..FFDC    ; XID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
 1D7AA..1D7C2  ; XID_Start # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
 1D7C4..1D7CB  ; XID_Start # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
 1E800..1E8C4  ; XID_Start # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
+1E900..1E943  ; XID_Start # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
 1EE00..1EE03  ; XID_Start # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
 1EE05..1EE1F  ; XID_Start # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
 1EE21..1EE22  ; XID_Start # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -7998,7 +8167,7 @@ FFDA..FFDC    ; XID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
 2B820..2CEA1  ; XID_Start # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
 2F800..2FA1D  ; XID_Start # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 
-# Total code points: 109807
+# Total code points: 116984
 
 # ================================================
 
@@ -8098,6 +8267,8 @@ FFDA..FFDC    ; XID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
 0840..0858    ; XID_Continue # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
 0859..085B    ; XID_Continue # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
 08A0..08B4    ; XID_Continue # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD    ; XID_Continue # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
+08D4..08E1    ; XID_Continue # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
 08E3..0902    ; XID_Continue # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
 0903          ; XID_Continue # Mc       DEVANAGARI SIGN VISARGA
 0904..0939    ; XID_Continue # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
@@ -8241,6 +8412,7 @@ FFDA..FFDC    ; XID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
 0C60..0C61    ; XID_Continue # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
 0C62..0C63    ; XID_Continue # Mn   [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
 0C66..0C6F    ; XID_Continue # Nd  [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+0C80          ; XID_Continue # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C81          ; XID_Continue # Mn       KANNADA SIGN CANDRABINDU
 0C82..0C83    ; XID_Continue # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
 0C85..0C8C    ; XID_Continue # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
@@ -8275,6 +8447,7 @@ FFDA..FFDC    ; XID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
 0D4A..0D4C    ; XID_Continue # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
 0D4D          ; XID_Continue # Mn       MALAYALAM SIGN VIRAMA
 0D4E          ; XID_Continue # Lo       MALAYALAM LETTER DOT REPH
+0D54..0D56    ; XID_Continue # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D57          ; XID_Continue # Mc       MALAYALAM AU LENGTH MARK
 0D5F..0D61    ; XID_Continue # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D62..0D63    ; XID_Continue # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
@@ -8432,7 +8605,9 @@ FFDA..FFDC    ; XID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
 1820..1842    ; XID_Continue # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; XID_Continue # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877    ; XID_Continue # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; XID_Continue # Lo  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; XID_Continue # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885..1886    ; XID_Continue # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887..18A8    ; XID_Continue # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18A9          ; XID_Continue # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 18AA          ; XID_Continue # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5    ; XID_Continue # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
@@ -8517,6 +8692,7 @@ FFDA..FFDC    ; XID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
 1C50..1C59    ; XID_Continue # Nd  [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
 1C5A..1C77    ; XID_Continue # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
 1C78..1C7D    ; XID_Continue # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+1C80..1C88    ; XID_Continue # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1CD0..1CD2    ; XID_Continue # Mn   [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
 1CD4..1CE0    ; XID_Continue # Mn  [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
 1CE1          ; XID_Continue # Mc       VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
@@ -8535,7 +8711,7 @@ FFDA..FFDC    ; XID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGU
 1D79..1D9A    ; XID_Continue # L&  [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
 1D9B..1DBF    ; XID_Continue # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
 1DC0..1DF5    ; XID_Continue # Mn  [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF    ; XID_Continue # Mn   [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+1DFB..1DFF    ; XID_Continue # Mn   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
 1E00..1F15    ; XID_Continue # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
 1F18..1F1D    ; XID_Continue # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
 1F20..1F45    ; XID_Continue # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
@@ -8658,7 +8834,7 @@ A771..A787    ; XID_Continue # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETT
 A788          ; XID_Continue # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
 A78B..A78E    ; XID_Continue # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; XID_Continue # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AD    ; XID_Continue # L&  [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE    ; XID_Continue # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; XID_Continue # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7          ; XID_Continue # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; XID_Continue # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -8677,7 +8853,7 @@ A840..A873    ; XID_Continue # Lo  [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CAND
 A880..A881    ; XID_Continue # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
 A882..A8B3    ; XID_Continue # Lo  [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
 A8B4..A8C3    ; XID_Continue # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
-A8C4          ; XID_Continue # Mn       SAURASHTRA SIGN VIRAMA
+A8C4..A8C5    ; XID_Continue # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8D0..A8D9    ; XID_Continue # Nd  [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
 A8E0..A8F1    ; XID_Continue # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
 A8F2..A8F7    ; XID_Continue # Lo   [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
@@ -8836,6 +9012,8 @@ FFDA..FFDC    ; XID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
 10400..1044F  ; XID_Continue # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
 10450..1049D  ; XID_Continue # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
 104A0..104A9  ; XID_Continue # Nd  [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+104B0..104D3  ; XID_Continue # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; XID_Continue # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10500..10527  ; XID_Continue # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
 10530..10563  ; XID_Continue # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
 10600..10736  ; XID_Continue # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
@@ -8919,6 +9097,7 @@ FFDA..FFDC    ; XID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
 11234         ; XID_Continue # Mn       KHOJKI SIGN ANUSVARA
 11235         ; XID_Continue # Mc       KHOJKI SIGN VIRAMA
 11236..11237  ; XID_Continue # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E         ; XID_Continue # Mn       KHOJKI SIGN SUKUN
 11280..11286  ; XID_Continue # Lo   [7] MULTANI LETTER A..MULTANI LETTER GA
 11288         ; XID_Continue # Lo       MULTANI LETTER GHA
 1128A..1128D  ; XID_Continue # Lo   [4] MULTANI LETTER CA..MULTANI LETTER JJA
@@ -8950,6 +9129,15 @@ FFDA..FFDC    ; XID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
 11362..11363  ; XID_Continue # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
 11366..1136C  ; XID_Continue # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; XID_Continue # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11400..11434  ; XID_Continue # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+11435..11437  ; XID_Continue # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F  ; XID_Continue # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441  ; XID_Continue # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11442..11444  ; XID_Continue # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11445         ; XID_Continue # Mc       NEWA SIGN VISARGA
+11446         ; XID_Continue # Mn       NEWA SIGN NUKTA
+11447..1144A  ; XID_Continue # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+11450..11459  ; XID_Continue # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
 11480..114AF  ; XID_Continue # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114B0..114B2  ; XID_Continue # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B3..114B8  ; XID_Continue # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
@@ -9000,6 +9188,23 @@ FFDA..FFDC    ; XID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
 118E0..118E9  ; XID_Continue # Nd  [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
 118FF         ; XID_Continue # Lo       WARANG CITI OM
 11AC0..11AF8  ; XID_Continue # Lo  [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08  ; XID_Continue # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; XID_Continue # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C2F         ; XID_Continue # Mc       BHAIKSUKI VOWEL SIGN AA
+11C30..11C36  ; XID_Continue # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; XID_Continue # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3E         ; XID_Continue # Mc       BHAIKSUKI SIGN VISARGA
+11C3F         ; XID_Continue # Mn       BHAIKSUKI SIGN VIRAMA
+11C40         ; XID_Continue # Lo       BHAIKSUKI SIGN AVAGRAHA
+11C50..11C59  ; XID_Continue # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+11C72..11C8F  ; XID_Continue # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+11C92..11CA7  ; XID_Continue # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9         ; XID_Continue # Mc       MARCHEN SUBJOINED LETTER YA
+11CAA..11CB0  ; XID_Continue # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB1         ; XID_Continue # Mc       MARCHEN VOWEL SIGN I
+11CB2..11CB3  ; XID_Continue # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4         ; XID_Continue # Mc       MARCHEN VOWEL SIGN O
+11CB5..11CB6  ; XID_Continue # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 12000..12399  ; XID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E  ; XID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12480..12543  ; XID_Continue # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
@@ -9021,6 +9226,9 @@ FFDA..FFDC    ; XID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
 16F51..16F7E  ; XID_Continue # Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
 16F8F..16F92  ; XID_Continue # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
 16F93..16F9F  ; XID_Continue # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0         ; XID_Continue # Lm       TANGUT ITERATION MARK
+17000..187EC  ; XID_Continue # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; XID_Continue # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B000..1B001  ; XID_Continue # Lo   [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
 1BC00..1BC6A  ; XID_Continue # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
 1BC70..1BC7C  ; XID_Continue # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
@@ -9071,8 +9279,16 @@ FFDA..FFDC    ; XID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
 1DA84         ; XID_Continue # Mn       SIGNWRITING LOCATION HEAD NECK
 1DA9B..1DA9F  ; XID_Continue # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF  ; XID_Continue # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006  ; XID_Continue # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; XID_Continue # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; XID_Continue # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; XID_Continue # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; XID_Continue # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E800..1E8C4  ; XID_Continue # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
 1E8D0..1E8D6  ; XID_Continue # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E900..1E943  ; XID_Continue # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+1E944..1E94A  ; XID_Continue # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+1E950..1E959  ; XID_Continue # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
 1EE00..1EE03  ; XID_Continue # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
 1EE05..1EE1F  ; XID_Continue # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
 1EE21..1EE22  ; XID_Continue # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -9113,7 +9329,7 @@ FFDA..FFDC    ; XID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HA
 2F800..2FA1D  ; XID_Continue # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 E0100..E01EF  ; XID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 
-# Total code points: 112333
+# Total code points: 119672
 
 # ================================================
 
@@ -9124,7 +9340,7 @@ E0100..E01EF  ; XID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTO
 #  + Variation_Selector
 #  - White_Space
 #  - FFF9..FFFB (Annotation Characters)
-#  - 0600..0605, 06DD, 070F, 110BD (exceptional Cf characters that should be visible)
+#  - 0600..0605, 06DD, 070F, 08E2, 110BD (exceptional Cf characters that should be visible)
 
 00AD          ; Default_Ignorable_Code_Point # Cf       SOFT HYPHEN
 034F          ; Default_Ignorable_Code_Point # Mn       COMBINING GRAPHEME JOINER
@@ -9186,6 +9402,7 @@ E01F0..E0FFF  ; Default_Ignorable_Code_Point # Cn [3600] <reserved-E01F0>..<rese
 0825..0827    ; Grapheme_Extend # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
 0829..082D    ; Grapheme_Extend # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
 0859..085B    ; Grapheme_Extend # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+08D4..08E1    ; Grapheme_Extend # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
 08E3..0902    ; Grapheme_Extend # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
 093A          ; Grapheme_Extend # Mn       DEVANAGARI VOWEL SIGN OE
 093C          ; Grapheme_Extend # Mn       DEVANAGARI SIGN NUKTA
@@ -9292,6 +9509,7 @@ E01F0..E0FFF  ; Default_Ignorable_Code_Point # Cn [3600] <reserved-E01F0>..<rese
 17C9..17D3    ; Grapheme_Extend # Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
 17DD          ; Grapheme_Extend # Mn       KHMER SIGN ATTHACAN
 180B..180D    ; Grapheme_Extend # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+1885..1886    ; Grapheme_Extend # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
 18A9          ; Grapheme_Extend # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 1920..1922    ; Grapheme_Extend # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
 1927..1928    ; Grapheme_Extend # Mn   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
@@ -9331,8 +9549,8 @@ E01F0..E0FFF  ; Default_Ignorable_Code_Point # Cn [3600] <reserved-E01F0>..<rese
 1CF4          ; Grapheme_Extend # Mn       VEDIC TONE CANDRA ABOVE
 1CF8..1CF9    ; Grapheme_Extend # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
 1DC0..1DF5    ; Grapheme_Extend # Mn  [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF    ; Grapheme_Extend # Mn   [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
-200C..200D    ; Grapheme_Extend # Cf   [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
+1DFB..1DFF    ; Grapheme_Extend # Mn   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+200C          ; Grapheme_Extend # Cf       ZERO WIDTH NON-JOINER
 20D0..20DC    ; Grapheme_Extend # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
 20DD..20E0    ; Grapheme_Extend # Me   [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
 20E1          ; Grapheme_Extend # Mn       COMBINING LEFT RIGHT ARROW ABOVE
@@ -9353,7 +9571,7 @@ A802          ; Grapheme_Extend # Mn       SYLOTI NAGRI SIGN DVISVARA
 A806          ; Grapheme_Extend # Mn       SYLOTI NAGRI SIGN HASANTA
 A80B          ; Grapheme_Extend # Mn       SYLOTI NAGRI SIGN ANUSVARA
 A825..A826    ; Grapheme_Extend # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
-A8C4          ; Grapheme_Extend # Mn       SAURASHTRA SIGN VIRAMA
+A8C4..A8C5    ; Grapheme_Extend # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8E0..A8F1    ; Grapheme_Extend # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
 A926..A92D    ; Grapheme_Extend # Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
 A947..A951    ; Grapheme_Extend # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
@@ -9406,6 +9624,7 @@ FF9E..FF9F    ; Grapheme_Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK.
 1122F..11231  ; Grapheme_Extend # Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
 11234         ; Grapheme_Extend # Mn       KHOJKI SIGN ANUSVARA
 11236..11237  ; Grapheme_Extend # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E         ; Grapheme_Extend # Mn       KHOJKI SIGN SUKUN
 112DF         ; Grapheme_Extend # Mn       KHUDAWADI SIGN ANUSVARA
 112E3..112EA  ; Grapheme_Extend # Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
 11300..11301  ; Grapheme_Extend # Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
@@ -9415,6 +9634,9 @@ FF9E..FF9F    ; Grapheme_Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK.
 11357         ; Grapheme_Extend # Mc       GRANTHA AU LENGTH MARK
 11366..1136C  ; Grapheme_Extend # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; Grapheme_Extend # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11438..1143F  ; Grapheme_Extend # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11442..11444  ; Grapheme_Extend # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11446         ; Grapheme_Extend # Mn       NEWA SIGN NUKTA
 114B0         ; Grapheme_Extend # Mc       TIRHUTA VOWEL SIGN AA
 114B3..114B8  ; Grapheme_Extend # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
 114BA         ; Grapheme_Extend # Mn       TIRHUTA VOWEL SIGN SHORT E
@@ -9436,6 +9658,13 @@ FF9E..FF9F    ; Grapheme_Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK.
 1171D..1171F  ; Grapheme_Extend # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
 11722..11725  ; Grapheme_Extend # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
 11727..1172B  ; Grapheme_Extend # Mn   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+11C30..11C36  ; Grapheme_Extend # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; Grapheme_Extend # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3F         ; Grapheme_Extend # Mn       BHAIKSUKI SIGN VIRAMA
+11C92..11CA7  ; Grapheme_Extend # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CAA..11CB0  ; Grapheme_Extend # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB2..11CB3  ; Grapheme_Extend # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB5..11CB6  ; Grapheme_Extend # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 16AF0..16AF4  ; Grapheme_Extend # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
 16B30..16B36  ; Grapheme_Extend # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
 16F8F..16F92  ; Grapheme_Extend # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
@@ -9453,10 +9682,17 @@ FF9E..FF9F    ; Grapheme_Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK.
 1DA84         ; Grapheme_Extend # Mn       SIGNWRITING LOCATION HEAD NECK
 1DA9B..1DA9F  ; Grapheme_Extend # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF  ; Grapheme_Extend # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006  ; Grapheme_Extend # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; Grapheme_Extend # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; Grapheme_Extend # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; Grapheme_Extend # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; Grapheme_Extend # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E8D0..1E8D6  ; Grapheme_Extend # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E944..1E94A  ; Grapheme_Extend # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+E0020..E007F  ; Grapheme_Extend # Cf  [96] TAG SPACE..CANCEL TAG
 E0100..E01EF  ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 
-# Total code points: 1610
+# Total code points: 1828
 
 # ================================================
 
@@ -9614,6 +9850,7 @@ E0100..E01EF  ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
 0840..0858    ; Grapheme_Base # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
 085E          ; Grapheme_Base # Po       MANDAIC PUNCTUATION
 08A0..08B4    ; Grapheme_Base # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD    ; Grapheme_Base # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
 0903          ; Grapheme_Base # Mc       DEVANAGARI SIGN VISARGA
 0904..0939    ; Grapheme_Base # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
 093B          ; Grapheme_Base # Mc       DEVANAGARI VOWEL SIGN OOE
@@ -9727,6 +9964,7 @@ E0100..E01EF  ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
 0C66..0C6F    ; Grapheme_Base # Nd  [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
 0C78..0C7E    ; Grapheme_Base # No   [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
 0C7F          ; Grapheme_Base # So       TELUGU SIGN TUUMU
+0C80          ; Grapheme_Base # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C82..0C83    ; Grapheme_Base # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
 0C85..0C8C    ; Grapheme_Base # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0C8E..0C90    ; Grapheme_Base # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
@@ -9752,9 +9990,12 @@ E0100..E01EF  ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
 0D46..0D48    ; Grapheme_Base # Mc   [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
 0D4A..0D4C    ; Grapheme_Base # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
 0D4E          ; Grapheme_Base # Lo       MALAYALAM LETTER DOT REPH
+0D4F          ; Grapheme_Base # So       MALAYALAM SIGN PARA
+0D54..0D56    ; Grapheme_Base # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
+0D58..0D5E    ; Grapheme_Base # No   [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
 0D5F..0D61    ; Grapheme_Base # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D66..0D6F    ; Grapheme_Base # Nd  [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
-0D70..0D75    ; Grapheme_Base # No   [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
+0D70..0D78    ; Grapheme_Base # No   [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
 0D79          ; Grapheme_Base # So       MALAYALAM DATE MARK
 0D7A..0D7F    ; Grapheme_Base # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 0D82..0D83    ; Grapheme_Base # Mc   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
@@ -9911,7 +10152,8 @@ E0100..E01EF  ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
 1820..1842    ; Grapheme_Base # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; Grapheme_Base # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877    ; Grapheme_Base # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; Grapheme_Base # Lo  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; Grapheme_Base # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1887..18A8    ; Grapheme_Base # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18AA          ; Grapheme_Base # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5    ; Grapheme_Base # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
 1900..191E    ; Grapheme_Base # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
@@ -9977,6 +10219,7 @@ E0100..E01EF  ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
 1C5A..1C77    ; Grapheme_Base # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
 1C78..1C7D    ; Grapheme_Base # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
 1C7E..1C7F    ; Grapheme_Base # Po   [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
+1C80..1C88    ; Grapheme_Base # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1CC0..1CC7    ; Grapheme_Base # Po   [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
 1CD3          ; Grapheme_Base # Po       VEDIC SIGN NIHSHVASA
 1CE1          ; Grapheme_Base # Mc       VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
@@ -10128,7 +10371,7 @@ E0100..E01EF  ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
 239B..23B3    ; Grapheme_Base # Sm  [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
 23B4..23DB    ; Grapheme_Base # So  [40] TOP SQUARE BRACKET..FUSE
 23DC..23E1    ; Grapheme_Base # Sm   [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
-23E2..23FA    ; Grapheme_Base # So  [25] WHITE TRAPEZIUM..BLACK CIRCLE FOR RECORD
+23E2..23FE    ; Grapheme_Base # So  [29] WHITE TRAPEZIUM..POWER SLEEP SYMBOL
 2400..2426    ; Grapheme_Base # So  [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
 2440..244A    ; Grapheme_Base # So  [11] OCR HOOK..OCR DOUBLE BACKSLASH
 2460..249B    ; Grapheme_Base # No  [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
@@ -10280,6 +10523,7 @@ E0100..E01EF  ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELE
 2E40          ; Grapheme_Base # Pd       DOUBLE HYPHEN
 2E41          ; Grapheme_Base # Po       REVERSED COMMA
 2E42          ; Grapheme_Base # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
+2E43..2E44    ; Grapheme_Base # Po   [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
 2E80..2E99    ; Grapheme_Base # So  [26] CJK RADICAL REPEAT..CJK RADICAL RAP
 2E9B..2EF3    ; Grapheme_Base # So  [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
 2F00..2FD5    ; Grapheme_Base # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
@@ -10387,7 +10631,7 @@ A788          ; Grapheme_Base # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
 A789..A78A    ; Grapheme_Base # Sk   [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
 A78B..A78E    ; Grapheme_Base # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; Grapheme_Base # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AD    ; Grapheme_Base # L&  [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE    ; Grapheme_Base # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; Grapheme_Base # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7          ; Grapheme_Base # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; Grapheme_Base # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -10618,7 +10862,7 @@ FFFC..FFFD    ; Grapheme_Base # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
 10175..10178  ; Grapheme_Base # No   [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
 10179..10189  ; Grapheme_Base # So  [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
 1018A..1018B  ; Grapheme_Base # No   [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN
-1018C         ; Grapheme_Base # So       GREEK SINUSOID SIGN
+1018C..1018E  ; Grapheme_Base # So   [3] GREEK SINUSOID SIGN..NOMISMA SIGN
 10190..1019B  ; Grapheme_Base # So  [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
 101A0         ; Grapheme_Base # So       GREEK SYMBOL TAU RHO
 101D0..101FC  ; Grapheme_Base # So  [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
@@ -10641,6 +10885,8 @@ FFFC..FFFD    ; Grapheme_Base # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
 10400..1044F  ; Grapheme_Base # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
 10450..1049D  ; Grapheme_Base # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
 104A0..104A9  ; Grapheme_Base # Nd  [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+104B0..104D3  ; Grapheme_Base # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; Grapheme_Base # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10500..10527  ; Grapheme_Base # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
 10530..10563  ; Grapheme_Base # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
 1056F         ; Grapheme_Base # Po       CAUCASIAN ALBANIAN CITATION MARK
@@ -10767,6 +11013,15 @@ FFFC..FFFD    ; Grapheme_Base # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
 11350         ; Grapheme_Base # Lo       GRANTHA OM
 1135D..11361  ; Grapheme_Base # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
 11362..11363  ; Grapheme_Base # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11400..11434  ; Grapheme_Base # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+11435..11437  ; Grapheme_Base # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11440..11441  ; Grapheme_Base # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11445         ; Grapheme_Base # Mc       NEWA SIGN VISARGA
+11447..1144A  ; Grapheme_Base # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+1144B..1144F  ; Grapheme_Base # Po   [5] NEWA DANDA..NEWA ABBREVIATION SIGN
+11450..11459  ; Grapheme_Base # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
+1145B         ; Grapheme_Base # Po       NEWA PLACEHOLDER MARK
+1145D         ; Grapheme_Base # Po       NEWA INSERTION SIGN
 11480..114AF  ; Grapheme_Base # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114B1..114B2  ; Grapheme_Base # Mc   [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II
 114B9         ; Grapheme_Base # Mc       TIRHUTA VOWEL SIGN E
@@ -10790,6 +11045,7 @@ FFFC..FFFD    ; Grapheme_Base # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
 11641..11643  ; Grapheme_Base # Po   [3] MODI DANDA..MODI ABBREVIATION SIGN
 11644         ; Grapheme_Base # Lo       MODI SIGN HUVA
 11650..11659  ; Grapheme_Base # Nd  [10] MODI DIGIT ZERO..MODI DIGIT NINE
+11660..1166C  ; Grapheme_Base # Po  [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
 11680..116AA  ; Grapheme_Base # Lo  [43] TAKRI LETTER A..TAKRI LETTER RRA
 116AC         ; Grapheme_Base # Mc       TAKRI SIGN VISARGA
 116AE..116AF  ; Grapheme_Base # Mc   [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
@@ -10807,6 +11063,19 @@ FFFC..FFFD    ; Grapheme_Base # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
 118EA..118F2  ; Grapheme_Base # No   [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
 118FF         ; Grapheme_Base # Lo       WARANG CITI OM
 11AC0..11AF8  ; Grapheme_Base # Lo  [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08  ; Grapheme_Base # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; Grapheme_Base # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C2F         ; Grapheme_Base # Mc       BHAIKSUKI VOWEL SIGN AA
+11C3E         ; Grapheme_Base # Mc       BHAIKSUKI SIGN VISARGA
+11C40         ; Grapheme_Base # Lo       BHAIKSUKI SIGN AVAGRAHA
+11C41..11C45  ; Grapheme_Base # Po   [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2
+11C50..11C59  ; Grapheme_Base # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+11C5A..11C6C  ; Grapheme_Base # No  [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
+11C70..11C71  ; Grapheme_Base # Po   [2] MARCHEN HEAD MARK..MARCHEN MARK SHAD
+11C72..11C8F  ; Grapheme_Base # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+11CA9         ; Grapheme_Base # Mc       MARCHEN SUBJOINED LETTER YA
+11CB1         ; Grapheme_Base # Mc       MARCHEN VOWEL SIGN I
+11CB4         ; Grapheme_Base # Mc       MARCHEN VOWEL SIGN O
 12000..12399  ; Grapheme_Base # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E  ; Grapheme_Base # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12470..12474  ; Grapheme_Base # Po   [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
@@ -10833,6 +11102,9 @@ FFFC..FFFD    ; Grapheme_Base # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
 16F50         ; Grapheme_Base # Lo       MIAO LETTER NASALIZATION
 16F51..16F7E  ; Grapheme_Base # Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
 16F93..16F9F  ; Grapheme_Base # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0         ; Grapheme_Base # Lm       TANGUT ITERATION MARK
+17000..187EC  ; Grapheme_Base # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; Grapheme_Base # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B000..1B001  ; Grapheme_Base # Lo   [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
 1BC00..1BC6A  ; Grapheme_Base # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
 1BC70..1BC7C  ; Grapheme_Base # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
@@ -10902,6 +11174,9 @@ FFFC..FFFD    ; Grapheme_Base # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
 1DA87..1DA8B  ; Grapheme_Base # Po   [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS
 1E800..1E8C4  ; Grapheme_Base # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
 1E8C7..1E8CF  ; Grapheme_Base # No   [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
+1E900..1E943  ; Grapheme_Base # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+1E950..1E959  ; Grapheme_Base # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
+1E95E..1E95F  ; Grapheme_Base # Po   [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
 1EE00..1EE03  ; Grapheme_Base # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
 1EE05..1EE1F  ; Grapheme_Base # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
 1EE21..1EE22  ; Grapheme_Base # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -10945,18 +11220,16 @@ FFFC..FFFD    ; Grapheme_Base # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
 1F100..1F10C  ; Grapheme_Base # No  [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
 1F110..1F12E  ; Grapheme_Base # So  [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
 1F130..1F16B  ; Grapheme_Base # So  [60] SQUARED LATIN CAPITAL LETTER A..RAISED MD SIGN
-1F170..1F19A  ; Grapheme_Base # So  [43] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VS
+1F170..1F1AC  ; Grapheme_Base # So  [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD
 1F1E6..1F202  ; Grapheme_Base # So  [29] REGIONAL INDICATOR SYMBOL LETTER A..SQUARED KATAKANA SA
-1F210..1F23A  ; Grapheme_Base # So  [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
+1F210..1F23B  ; Grapheme_Base # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
 1F240..1F248  ; Grapheme_Base # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
 1F250..1F251  ; Grapheme_Base # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
 1F300..1F3FA  ; Grapheme_Base # So [251] CYCLONE..AMPHORA
 1F3FB..1F3FF  ; Grapheme_Base # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
-1F400..1F579  ; Grapheme_Base # So [378] RAT..JOYSTICK
-1F57B..1F5A3  ; Grapheme_Base # So  [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
-1F5A5..1F6D0  ; Grapheme_Base # So [300] DESKTOP COMPUTER..PLACE OF WORSHIP
+1F400..1F6D2  ; Grapheme_Base # So [723] RAT..SHOPPING TROLLEY
 1F6E0..1F6EC  ; Grapheme_Base # So  [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
-1F6F0..1F6F3  ; Grapheme_Base # So   [4] SATELLITE..PASSENGER SHIP
+1F6F0..1F6F6  ; Grapheme_Base # So   [7] SATELLITE..CANOE
 1F700..1F773  ; Grapheme_Base # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
 1F780..1F7D4  ; Grapheme_Base # So  [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR
 1F800..1F80B  ; Grapheme_Base # So  [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
@@ -10964,8 +11237,13 @@ FFFC..FFFD    ; Grapheme_Base # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
 1F850..1F859  ; Grapheme_Base # So  [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
 1F860..1F887  ; Grapheme_Base # So  [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
 1F890..1F8AD  ; Grapheme_Base # So  [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F910..1F918  ; Grapheme_Base # So   [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS
-1F980..1F984  ; Grapheme_Base # So   [5] CRAB..UNICORN FACE
+1F910..1F91E  ; Grapheme_Base # So  [15] ZIPPER-MOUTH FACE..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+1F920..1F927  ; Grapheme_Base # So   [8] FACE WITH COWBOY HAT..SNEEZING FACE
+1F930         ; Grapheme_Base # So       PREGNANT WOMAN
+1F933..1F93E  ; Grapheme_Base # So  [12] SELFIE..HANDBALL
+1F940..1F94B  ; Grapheme_Base # So  [12] WILTED FLOWER..MARTIAL ARTS UNIFORM
+1F950..1F95E  ; Grapheme_Base # So  [15] CROISSANT..PANCAKES
+1F980..1F991  ; Grapheme_Base # So  [18] CRAB..SQUID
 1F9C0         ; Grapheme_Base # So       CHEESE WEDGE
 20000..2A6D6  ; Grapheme_Base # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
 2A700..2B734  ; Grapheme_Base # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
@@ -10973,7 +11251,7 @@ FFFC..FFFD    ; Grapheme_Base # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEME
 2B820..2CEA1  ; Grapheme_Base # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
 2F800..2FA1D  ; Grapheme_Base # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 
-# Total code points: 118912
+# Total code points: 126288
 
 # ================================================
 
@@ -11018,12 +11296,14 @@ ABED          ; Grapheme_Link # Mn       MEETEI MAYEK APUN IYEK
 11235         ; Grapheme_Link # Mc       KHOJKI SIGN VIRAMA
 112EA         ; Grapheme_Link # Mn       KHUDAWADI SIGN VIRAMA
 1134D         ; Grapheme_Link # Mc       GRANTHA SIGN VIRAMA
+11442         ; Grapheme_Link # Mn       NEWA SIGN VIRAMA
 114C2         ; Grapheme_Link # Mn       TIRHUTA SIGN VIRAMA
 115BF         ; Grapheme_Link # Mn       SIDDHAM SIGN VIRAMA
 1163F         ; Grapheme_Link # Mn       MODI SIGN VIRAMA
 116B6         ; Grapheme_Link # Mc       TAKRI SIGN VIRAMA
 1172B         ; Grapheme_Link # Mn       AHOM SIGN KILLER
+11C3F         ; Grapheme_Link # Mn       BHAIKSUKI SIGN VIRAMA
 
-# Total code points: 45
+# Total code points: 47
 
 # EOF
index 6492493..089bd42 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedNormalizationProps-8.0.0.txt
-# Date: 2015-02-13, 13:30:23 GMT [MD]
+# DerivedNormalizationProps-9.0.0.txt
+# Date: 2016-03-02, 18:54:59 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
@@ -1679,12 +1680,12 @@ FFED..FFEE    ; NFKD_QC; N # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CI
 1F16A..1F16B  ; NFKD_QC; N # So   [2] RAISED MC SIGN..RAISED MD SIGN
 1F190         ; NFKD_QC; N # So       SQUARE DJ
 1F200..1F202  ; NFKD_QC; N # So   [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
-1F210..1F23A  ; NFKD_QC; N # So  [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
+1F210..1F23B  ; NFKD_QC; N # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
 1F240..1F248  ; NFKD_QC; N # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
 1F250..1F251  ; NFKD_QC; N # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
 2F800..2FA1D  ; NFKD_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 
-# Total code points: 16893
+# Total code points: 16894
 
 # ================================================
 
@@ -2082,12 +2083,12 @@ FFED..FFEE    ; NFKC_QC; N # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CI
 1F16A..1F16B  ; NFKC_QC; N # So   [2] RAISED MC SIGN..RAISED MD SIGN
 1F190         ; NFKC_QC; N # So       SQUARE DJ
 1F200..1F202  ; NFKC_QC; N # So   [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
-1F210..1F23A  ; NFKC_QC; N # So  [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
+1F210..1F23B  ; NFKC_QC; N # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
 1F240..1F248  ; NFKC_QC; N # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
 1F250..1F251  ; NFKC_QC; N # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
 2F800..2FA1D  ; NFKC_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 
-# Total code points: 4793
+# Total code points: 4794
 
 # ================================================
 
@@ -3513,6 +3514,14 @@ FFE3          ; Expands_On_NFKC # Sk       FULLWIDTH MACRON
 17B4..17B5    ; NFKC_CF;                # Mn   [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
 180B..180D    ; NFKC_CF;                # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
 180E          ; NFKC_CF;                # Cf       MONGOLIAN VOWEL SEPARATOR
+1C80          ; NFKC_CF; 0432           # L&       CYRILLIC SMALL LETTER ROUNDED VE
+1C81          ; NFKC_CF; 0434           # L&       CYRILLIC SMALL LETTER LONG-LEGGED DE
+1C82          ; NFKC_CF; 043E           # L&       CYRILLIC SMALL LETTER NARROW O
+1C83          ; NFKC_CF; 0441           # L&       CYRILLIC SMALL LETTER WIDE ES
+1C84..1C85    ; NFKC_CF; 0442           # L&   [2] CYRILLIC SMALL LETTER TALL TE..CYRILLIC SMALL LETTER THREE-LEGGED TE
+1C86          ; NFKC_CF; 044A           # L&       CYRILLIC SMALL LETTER TALL HARD SIGN
+1C87          ; NFKC_CF; 0463           # L&       CYRILLIC SMALL LETTER TALL YAT
+1C88          ; NFKC_CF; A64B           # L&       CYRILLIC SMALL LETTER UNBLENDED UK
 1D2C          ; NFKC_CF; 0061           # Lm       MODIFIER LETTER CAPITAL A
 1D2D          ; NFKC_CF; 00E6           # Lm       MODIFIER LETTER CAPITAL AE
 1D2E          ; NFKC_CF; 0062           # Lm       MODIFIER LETTER CAPITAL B
@@ -5263,6 +5272,7 @@ A7AA          ; NFKC_CF; 0266           # L&       LATIN CAPITAL LETTER H WITH H
 A7AB          ; NFKC_CF; 025C           # L&       LATIN CAPITAL LETTER REVERSED OPEN E
 A7AC          ; NFKC_CF; 0261           # L&       LATIN CAPITAL LETTER SCRIPT G
 A7AD          ; NFKC_CF; 026C           # L&       LATIN CAPITAL LETTER L WITH BELT
+A7AE          ; NFKC_CF; 026A           # L&       LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0          ; NFKC_CF; 029E           # L&       LATIN CAPITAL LETTER TURNED K
 A7B1          ; NFKC_CF; 0287           # L&       LATIN CAPITAL LETTER TURNED T
 A7B2          ; NFKC_CF; 029D           # L&       LATIN CAPITAL LETTER J WITH CROSSED-TAIL
@@ -6731,6 +6741,42 @@ FFF0..FFF8    ; NFKC_CF;                # Cn   [9] <reserved-FFF0>..<reserved-FF
 10425         ; NFKC_CF; 1044D          # L&       DESERET CAPITAL LETTER ENG
 10426         ; NFKC_CF; 1044E          # L&       DESERET CAPITAL LETTER OI
 10427         ; NFKC_CF; 1044F          # L&       DESERET CAPITAL LETTER EW
+104B0         ; NFKC_CF; 104D8          # L&       OSAGE CAPITAL LETTER A
+104B1         ; NFKC_CF; 104D9          # L&       OSAGE CAPITAL LETTER AI
+104B2         ; NFKC_CF; 104DA          # L&       OSAGE CAPITAL LETTER AIN
+104B3         ; NFKC_CF; 104DB          # L&       OSAGE CAPITAL LETTER AH
+104B4         ; NFKC_CF; 104DC          # L&       OSAGE CAPITAL LETTER BRA
+104B5         ; NFKC_CF; 104DD          # L&       OSAGE CAPITAL LETTER CHA
+104B6         ; NFKC_CF; 104DE          # L&       OSAGE CAPITAL LETTER EHCHA
+104B7         ; NFKC_CF; 104DF          # L&       OSAGE CAPITAL LETTER E
+104B8         ; NFKC_CF; 104E0          # L&       OSAGE CAPITAL LETTER EIN
+104B9         ; NFKC_CF; 104E1          # L&       OSAGE CAPITAL LETTER HA
+104BA         ; NFKC_CF; 104E2          # L&       OSAGE CAPITAL LETTER HYA
+104BB         ; NFKC_CF; 104E3          # L&       OSAGE CAPITAL LETTER I
+104BC         ; NFKC_CF; 104E4          # L&       OSAGE CAPITAL LETTER KA
+104BD         ; NFKC_CF; 104E5          # L&       OSAGE CAPITAL LETTER EHKA
+104BE         ; NFKC_CF; 104E6          # L&       OSAGE CAPITAL LETTER KYA
+104BF         ; NFKC_CF; 104E7          # L&       OSAGE CAPITAL LETTER LA
+104C0         ; NFKC_CF; 104E8          # L&       OSAGE CAPITAL LETTER MA
+104C1         ; NFKC_CF; 104E9          # L&       OSAGE CAPITAL LETTER NA
+104C2         ; NFKC_CF; 104EA          # L&       OSAGE CAPITAL LETTER O
+104C3         ; NFKC_CF; 104EB          # L&       OSAGE CAPITAL LETTER OIN
+104C4         ; NFKC_CF; 104EC          # L&       OSAGE CAPITAL LETTER PA
+104C5         ; NFKC_CF; 104ED          # L&       OSAGE CAPITAL LETTER EHPA
+104C6         ; NFKC_CF; 104EE          # L&       OSAGE CAPITAL LETTER SA
+104C7         ; NFKC_CF; 104EF          # L&       OSAGE CAPITAL LETTER SHA
+104C8         ; NFKC_CF; 104F0          # L&       OSAGE CAPITAL LETTER TA
+104C9         ; NFKC_CF; 104F1          # L&       OSAGE CAPITAL LETTER EHTA
+104CA         ; NFKC_CF; 104F2          # L&       OSAGE CAPITAL LETTER TSA
+104CB         ; NFKC_CF; 104F3          # L&       OSAGE CAPITAL LETTER EHTSA
+104CC         ; NFKC_CF; 104F4          # L&       OSAGE CAPITAL LETTER TSHA
+104CD         ; NFKC_CF; 104F5          # L&       OSAGE CAPITAL LETTER DHA
+104CE         ; NFKC_CF; 104F6          # L&       OSAGE CAPITAL LETTER U
+104CF         ; NFKC_CF; 104F7          # L&       OSAGE CAPITAL LETTER WA
+104D0         ; NFKC_CF; 104F8          # L&       OSAGE CAPITAL LETTER KHA
+104D1         ; NFKC_CF; 104F9          # L&       OSAGE CAPITAL LETTER GHA
+104D2         ; NFKC_CF; 104FA          # L&       OSAGE CAPITAL LETTER ZA
+104D3         ; NFKC_CF; 104FB          # L&       OSAGE CAPITAL LETTER ZHA
 10C80         ; NFKC_CF; 10CC0          # L&       OLD HUNGARIAN CAPITAL LETTER A
 10C81         ; NFKC_CF; 10CC1          # L&       OLD HUNGARIAN CAPITAL LETTER AA
 10C82         ; NFKC_CF; 10CC2          # L&       OLD HUNGARIAN CAPITAL LETTER EB
@@ -7819,6 +7865,40 @@ FFF0..FFF8    ; NFKC_CF;                # Cn   [9] <reserved-FFF0>..<reserved-FF
 1D7FD         ; NFKC_CF; 0037           # Nd       MATHEMATICAL MONOSPACE DIGIT SEVEN
 1D7FE         ; NFKC_CF; 0038           # Nd       MATHEMATICAL MONOSPACE DIGIT EIGHT
 1D7FF         ; NFKC_CF; 0039           # Nd       MATHEMATICAL MONOSPACE DIGIT NINE
+1E900         ; NFKC_CF; 1E922          # L&       ADLAM CAPITAL LETTER ALIF
+1E901         ; NFKC_CF; 1E923          # L&       ADLAM CAPITAL LETTER DAALI
+1E902         ; NFKC_CF; 1E924          # L&       ADLAM CAPITAL LETTER LAAM
+1E903         ; NFKC_CF; 1E925          # L&       ADLAM CAPITAL LETTER MIIM
+1E904         ; NFKC_CF; 1E926          # L&       ADLAM CAPITAL LETTER BA
+1E905         ; NFKC_CF; 1E927          # L&       ADLAM CAPITAL LETTER SINNYIIYHE
+1E906         ; NFKC_CF; 1E928          # L&       ADLAM CAPITAL LETTER PE
+1E907         ; NFKC_CF; 1E929          # L&       ADLAM CAPITAL LETTER BHE
+1E908         ; NFKC_CF; 1E92A          # L&       ADLAM CAPITAL LETTER RA
+1E909         ; NFKC_CF; 1E92B          # L&       ADLAM CAPITAL LETTER E
+1E90A         ; NFKC_CF; 1E92C          # L&       ADLAM CAPITAL LETTER FA
+1E90B         ; NFKC_CF; 1E92D          # L&       ADLAM CAPITAL LETTER I
+1E90C         ; NFKC_CF; 1E92E          # L&       ADLAM CAPITAL LETTER O
+1E90D         ; NFKC_CF; 1E92F          # L&       ADLAM CAPITAL LETTER DHA
+1E90E         ; NFKC_CF; 1E930          # L&       ADLAM CAPITAL LETTER YHE
+1E90F         ; NFKC_CF; 1E931          # L&       ADLAM CAPITAL LETTER WAW
+1E910         ; NFKC_CF; 1E932          # L&       ADLAM CAPITAL LETTER NUN
+1E911         ; NFKC_CF; 1E933          # L&       ADLAM CAPITAL LETTER KAF
+1E912         ; NFKC_CF; 1E934          # L&       ADLAM CAPITAL LETTER YA
+1E913         ; NFKC_CF; 1E935          # L&       ADLAM CAPITAL LETTER U
+1E914         ; NFKC_CF; 1E936          # L&       ADLAM CAPITAL LETTER JIIM
+1E915         ; NFKC_CF; 1E937          # L&       ADLAM CAPITAL LETTER CHI
+1E916         ; NFKC_CF; 1E938          # L&       ADLAM CAPITAL LETTER HA
+1E917         ; NFKC_CF; 1E939          # L&       ADLAM CAPITAL LETTER QAAF
+1E918         ; NFKC_CF; 1E93A          # L&       ADLAM CAPITAL LETTER GA
+1E919         ; NFKC_CF; 1E93B          # L&       ADLAM CAPITAL LETTER NYA
+1E91A         ; NFKC_CF; 1E93C          # L&       ADLAM CAPITAL LETTER TU
+1E91B         ; NFKC_CF; 1E93D          # L&       ADLAM CAPITAL LETTER NHA
+1E91C         ; NFKC_CF; 1E93E          # L&       ADLAM CAPITAL LETTER VA
+1E91D         ; NFKC_CF; 1E93F          # L&       ADLAM CAPITAL LETTER KHA
+1E91E         ; NFKC_CF; 1E940          # L&       ADLAM CAPITAL LETTER GBE
+1E91F         ; NFKC_CF; 1E941          # L&       ADLAM CAPITAL LETTER ZAL
+1E920         ; NFKC_CF; 1E942          # L&       ADLAM CAPITAL LETTER KPO
+1E921         ; NFKC_CF; 1E943          # L&       ADLAM CAPITAL LETTER SHA
 1EE00         ; NFKC_CF; 0627           # Lo       ARABIC MATHEMATICAL ALEF
 1EE01         ; NFKC_CF; 0628           # Lo       ARABIC MATHEMATICAL BEH
 1EE02         ; NFKC_CF; 062C           # Lo       ARABIC MATHEMATICAL JEEM
@@ -8083,6 +8163,7 @@ FFF0..FFF8    ; NFKC_CF;                # Cn   [9] <reserved-FFF0>..<reserved-FF
 1F238         ; NFKC_CF; 7533           # So       SQUARED CJK UNIFIED IDEOGRAPH-7533
 1F239         ; NFKC_CF; 5272           # So       SQUARED CJK UNIFIED IDEOGRAPH-5272
 1F23A         ; NFKC_CF; 55B6           # So       SQUARED CJK UNIFIED IDEOGRAPH-55B6
+1F23B         ; NFKC_CF; 914D           # So       SQUARED CJK UNIFIED IDEOGRAPH-914D
 1F240         ; NFKC_CF; 3014 672C 3015 # So       TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C
 1F241         ; NFKC_CF; 3014 4E09 3015 # So       TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09
 1F242         ; NFKC_CF; 3014 4E8C 3015 # So       TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C
@@ -8634,7 +8715,7 @@ E0080..E00FF  ; NFKC_CF;                # Cn [128] <reserved-E0080>..<reserved-E
 E0100..E01EF  ; NFKC_CF;                # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 E01F0..E0FFF  ; NFKC_CF;                # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
 
-# Total code points: 10146
+# Total code points: 10227
 
 # ================================================
 
@@ -8972,6 +9053,7 @@ E01F0..E0FFF  ; NFKC_CF;                # Cn [3600] <reserved-E01F0>..<reserved-
 17B4..17B5    ; Changes_When_NFKC_Casefolded # Mn   [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
 180B..180D    ; Changes_When_NFKC_Casefolded # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
 180E          ; Changes_When_NFKC_Casefolded # Cf       MONGOLIAN VOWEL SEPARATOR
+1C80..1C88    ; Changes_When_NFKC_Casefolded # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1D2C..1D2E    ; Changes_When_NFKC_Casefolded # Lm   [3] MODIFIER LETTER CAPITAL A..MODIFIER LETTER CAPITAL B
 1D30..1D3A    ; Changes_When_NFKC_Casefolded # Lm  [11] MODIFIER LETTER CAPITAL D..MODIFIER LETTER CAPITAL N
 1D3C..1D4D    ; Changes_When_NFKC_Casefolded # Lm  [18] MODIFIER LETTER CAPITAL O..MODIFIER LETTER SMALL G
@@ -9389,7 +9471,7 @@ A7A2          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER K W
 A7A4          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
 A7A6          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
 A7A8          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
-A7AA..A7AD    ; Changes_When_NFKC_Casefolded # L&   [4] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER L WITH BELT
+A7AA..A7AE    ; Changes_When_NFKC_Casefolded # L&   [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B4    ; Changes_When_NFKC_Casefolded # L&   [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA
 A7B6          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER OMEGA
 A7F8..A7F9    ; Changes_When_NFKC_Casefolded # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -9519,6 +9601,7 @@ FFE9..FFEC    ; Changes_When_NFKC_Casefolded # Sm   [4] HALFWIDTH LEFTWARDS ARRO
 FFED..FFEE    ; Changes_When_NFKC_Casefolded # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
 FFF0..FFF8    ; Changes_When_NFKC_Casefolded # Cn   [9] <reserved-FFF0>..<reserved-FFF8>
 10400..10427  ; Changes_When_NFKC_Casefolded # L&  [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
+104B0..104D3  ; Changes_When_NFKC_Casefolded # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
 10C80..10CB2  ; Changes_When_NFKC_Casefolded # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
 118A0..118BF  ; Changes_When_NFKC_Casefolded # L&  [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
 1BCA0..1BCA3  ; Changes_When_NFKC_Casefolded # Cf   [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
@@ -9566,6 +9649,7 @@ FFF0..FFF8    ; Changes_When_NFKC_Casefolded # Cn   [9] <reserved-FFF0>..<reserv
 1D7C3         ; Changes_When_NFKC_Casefolded # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
 1D7C4..1D7CB  ; Changes_When_NFKC_Casefolded # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
 1D7CE..1D7FF  ; Changes_When_NFKC_Casefolded # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+1E900..1E921  ; Changes_When_NFKC_Casefolded # L&  [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
 1EE00..1EE03  ; Changes_When_NFKC_Casefolded # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
 1EE05..1EE1F  ; Changes_When_NFKC_Casefolded # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
 1EE21..1EE22  ; Changes_When_NFKC_Casefolded # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -9605,7 +9689,7 @@ FFF0..FFF8    ; Changes_When_NFKC_Casefolded # Cn   [9] <reserved-FFF0>..<reserv
 1F16A..1F16B  ; Changes_When_NFKC_Casefolded # So   [2] RAISED MC SIGN..RAISED MD SIGN
 1F190         ; Changes_When_NFKC_Casefolded # So       SQUARE DJ
 1F200..1F202  ; Changes_When_NFKC_Casefolded # So   [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
-1F210..1F23A  ; Changes_When_NFKC_Casefolded # So  [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
+1F210..1F23B  ; Changes_When_NFKC_Casefolded # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
 1F240..1F248  ; Changes_When_NFKC_Casefolded # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
 1F250..1F251  ; Changes_When_NFKC_Casefolded # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
 2F800..2FA1D  ; Changes_When_NFKC_Casefolded # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
@@ -9617,6 +9701,6 @@ E0080..E00FF  ; Changes_When_NFKC_Casefolded # Cn [128] <reserved-E0080>..<reser
 E0100..E01EF  ; Changes_When_NFKC_Casefolded # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 E01F0..E0FFF  ; Changes_When_NFKC_Casefolded # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
 
-# Total code points: 10146
+# Total code points: 10227
 
 # EOF
index b72970e..5a2ede5 100644 (file)
@@ -1,35 +1,34 @@
-# EastAsianWidth-8.0.0.txt
-# Date: 2015-02-10, 21:00:00 GMT [KW, LI]
+# EastAsianWidth-9.0.0.txt
+# Date: 2016-05-27, 17:00:00 GMT [KW, LI]
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+# For documentation, see http://www.unicode.org/reports/tr44/
 #
 # East_Asian_Width Property
 #
 # This file is an informative contributory data file in the
 # Unicode Character Database.
 #
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
 # The format is two fields separated by a semicolon.
 # Field 0: Unicode code point value or range of code point values
 # Field 1: East_Asian_Width property, consisting of one of the following values:
-#         "N", "A", "H", "W", "F", "Na"
+#         "A", "F", "H", "N", "Na", "W"
 #  - All code points, assigned or unassigned, that are not listed
-#         explicitly are given the value "N".
-# The unassigned code points that default to "W" include ranges in the
-# following blocks:
-#     CJK Unified Ideographs Extension A:       U+3400..U+4DBF
-#     CJK Unified Ideographs:                   U+4E00..U+9FFF
-#     CJK Compatibility Ideographs:             U+F900..U+FAFF
-#     CJK Unified Ideographs Extension B:      U+20000..U+2A6DF
-#     CJK Unified Ideographs Extension C:      U+2A700..U+2B73F
-#     CJK Unified Ideographs Extension D:      U+2B740..U+2B81F
-#     CJK Unified Ideographs Extension E:      U+2B820..U+2CEAF
-#     CJK Compatibility Ideographs Supplement: U+2F800..U+2FA1F
-#     and any other reserved code points on
-#         Planes 2 and 3:                      U+20000..U+2FFFD
-#                                              U+30000..U+3FFFD
-#  - Character ranges are specified as for other property files in
-#         the Unicode Character Database.
+#      explicitly are given the value "N".
+#  - The unassigned code points in the following blocks default to "W":
+#         CJK Unified Ideographs Extension A: U+3400..U+4DBF
+#         CJK Unified Ideographs:             U+4E00..U+9FFF
+#         CJK Compatibility Ideographs:       U+F900..U+FAFF
+#  - All undesignated code points in Planes 2 and 3, whether inside or
+#      outside of allocated blocks, default to "W":
+#         Plane 2:                            U+20000..U+2FFFD
+#         Plane 3:                            U+30000..U+3FFFD
+#
+# Character ranges are specified as for other property files in the
+# Unicode Character Database.
 #
 # For legacy reasons, there are no spaces before or after the semicolon
 # which separates the two fields. The comments following the number sign
 0859..085B;N     # Mn     [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
 085E;N           # Po         MANDAIC PUNCTUATION
 08A0..08B4;N     # Lo    [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD;N     # Lo     [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
+08D4..08E1;N     # Mn    [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
+08E2;N           # Cf         ARABIC DISPUTED END OF AYAH
 08E3..08FF;N     # Mn    [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA
 0900..0902;N     # Mn     [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA
 0903;N           # Mc         DEVANAGARI SIGN VISARGA
 0C66..0C6F;N     # Nd    [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
 0C78..0C7E;N     # No     [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
 0C7F;N           # So         TELUGU SIGN TUUMU
+0C80;N           # Lo         KANNADA SIGN SPACING CANDRABINDU
 0C81;N           # Mn         KANNADA SIGN CANDRABINDU
 0C82..0C83;N     # Mc     [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
 0C85..0C8C;N     # Lo     [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0D4A..0D4C;N     # Mc     [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
 0D4D;N           # Mn         MALAYALAM SIGN VIRAMA
 0D4E;N           # Lo         MALAYALAM LETTER DOT REPH
+0D4F;N           # So         MALAYALAM SIGN PARA
+0D54..0D56;N     # Lo     [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D57;N           # Mc         MALAYALAM AU LENGTH MARK
+0D58..0D5E;N     # No     [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
 0D5F..0D61;N     # Lo     [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D62..0D63;N     # Mn     [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
 0D66..0D6F;N     # Nd    [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
-0D70..0D75;N     # No     [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
+0D70..0D78;N     # No     [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
 0D79;N           # So         MALAYALAM DATE MARK
 0D7A..0D7F;N     # Lo     [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 0D82..0D83;N     # Mc     [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
 1820..1842;N     # Lo    [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843;N           # Lm         MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877;N     # Lo    [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8;N     # Lo    [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884;N     # Lo     [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885..1886;N     # Mn     [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887..18A8;N     # Lo    [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18A9;N           # Mn         MONGOLIAN LETTER ALI GALI DAGALGA
 18AA;N           # Lo         MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5;N     # Lo    [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
 1C5A..1C77;N     # Lo    [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
 1C78..1C7D;N     # Lm     [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
 1C7E..1C7F;N     # Po     [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
+1C80..1C88;N     # Ll     [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1CC0..1CC7;N     # Po     [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
 1CD0..1CD2;N     # Mn     [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
 1CD3;N           # Po         VEDIC SIGN NIHSHVASA
 1D80..1D9A;N     # Ll    [27] LATIN SMALL LETTER B WITH PALATAL HOOK..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
 1D9B..1DBF;N     # Lm    [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
 1DC0..1DF5;N     # Mn    [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF;N     # Mn     [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+1DFB..1DFF;N     # Mn     [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
 1E00..1EFF;N     # L&   [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP
 1F00..1F15;N     # L&    [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
 1F18..1F1D;N     # Lu     [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
 230B;N           # Pe         RIGHT FLOOR
 230C..2311;N     # So     [6] BOTTOM RIGHT CROP..SQUARE LOZENGE
 2312;A           # So         ARC
-2313..231F;N     # So    [13] SEGMENT..BOTTOM RIGHT CORNER
+2313..2319;N     # So     [7] SEGMENT..TURNED NOT SIGN
+231A..231B;W     # So     [2] WATCH..HOURGLASS
+231C..231F;N     # So     [4] TOP LEFT CORNER..BOTTOM RIGHT CORNER
 2320..2321;N     # Sm     [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
 2322..2328;N     # So     [7] FROWN..KEYBOARD
 2329;W           # Ps         LEFT-POINTING ANGLE BRACKET
 239B..23B3;N     # Sm    [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
 23B4..23DB;N     # So    [40] TOP SQUARE BRACKET..FUSE
 23DC..23E1;N     # Sm     [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
-23E2..23FA;N     # So    [25] WHITE TRAPEZIUM..BLACK CIRCLE FOR RECORD
+23E2..23E8;N     # So     [7] WHITE TRAPEZIUM..DECIMAL EXPONENT SYMBOL
+23E9..23EC;W     # So     [4] BLACK RIGHT-POINTING DOUBLE TRIANGLE..BLACK DOWN-POINTING DOUBLE TRIANGLE
+23ED..23EF;N     # So     [3] BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR..BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR
+23F0;W           # So         ALARM CLOCK
+23F1..23F2;N     # So     [2] STOPWATCH..TIMER CLOCK
+23F3;W           # So         HOURGLASS WITH FLOWING SAND
+23F4..23FE;N     # So    [11] BLACK MEDIUM LEFT-POINTING TRIANGLE..POWER SLEEP SYMBOL
 2400..2426;N     # So    [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
 2440..244A;N     # So    [11] OCR HOOK..OCR DOUBLE BACKSLASH
 2460..249B;A     # No    [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
 25E6..25EE;N     # So     [9] WHITE BULLET..UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
 25EF;A           # So         LARGE CIRCLE
 25F0..25F7;N     # So     [8] WHITE SQUARE WITH UPPER LEFT QUADRANT..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
-25F8..25FF;N     # Sm     [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
+25F8..25FC;N     # Sm     [5] UPPER LEFT TRIANGLE..BLACK MEDIUM SQUARE
+25FD..25FE;W     # Sm     [2] WHITE MEDIUM SMALL SQUARE..BLACK MEDIUM SMALL SQUARE
+25FF;N           # Sm         LOWER RIGHT TRIANGLE
 2600..2604;N     # So     [5] BLACK SUN WITH RAYS..COMET
 2605..2606;A     # So     [2] BLACK STAR..WHITE STAR
 2607..2608;N     # So     [2] LIGHTNING..THUNDERSTORM
 260A..260D;N     # So     [4] ASCENDING NODE..OPPOSITION
 260E..260F;A     # So     [2] BLACK TELEPHONE..WHITE TELEPHONE
 2610..2613;N     # So     [4] BALLOT BOX..SALTIRE
-2614..2615;A     # So     [2] UMBRELLA WITH RAIN DROPS..HOT BEVERAGE
+2614..2615;W     # So     [2] UMBRELLA WITH RAIN DROPS..HOT BEVERAGE
 2616..261B;N     # So     [6] WHITE SHOGI PIECE..BLACK RIGHT POINTING INDEX
 261C;A           # So         WHITE LEFT POINTING INDEX
 261D;N           # So         WHITE UP POINTING INDEX
 2640;A           # So         FEMALE SIGN
 2641;N           # So         EARTH
 2642;A           # So         MALE SIGN
-2643..265F;N     # So    [29] JUPITER..BLACK CHESS PAWN
+2643..2647;N     # So     [5] JUPITER..PLUTO
+2648..2653;W     # So    [12] ARIES..PISCES
+2654..265F;N     # So    [12] WHITE CHESS KING..BLACK CHESS PAWN
 2660..2661;A     # So     [2] BLACK SPADE SUIT..WHITE HEART SUIT
 2662;N           # So         WHITE DIAMOND SUIT
 2663..2665;A     # So     [3] BLACK CLUB SUIT..BLACK HEART SUIT
 266C..266D;A     # So     [2] BEAMED SIXTEENTH NOTES..MUSIC FLAT SIGN
 266E;N           # So         MUSIC NATURAL SIGN
 266F;A           # Sm         MUSIC SHARP SIGN
-2670..269D;N     # So    [46] WEST SYRIAC CROSS..OUTLINED WHITE STAR
+2670..267E;N     # So    [15] WEST SYRIAC CROSS..PERMANENT PAPER SIGN
+267F;W           # So         WHEELCHAIR SYMBOL
+2680..2692;N     # So    [19] DIE FACE-1..HAMMER AND PICK
+2693;W           # So         ANCHOR
+2694..269D;N     # So    [10] CROSSED SWORDS..OUTLINED WHITE STAR
 269E..269F;A     # So     [2] THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT
-26A0..26BD;N     # So    [30] WARNING SIGN..SOCCER BALL
-26BE..26BF;A     # So     [2] BASEBALL..SQUARED KEY
+26A0;N           # So         WARNING SIGN
+26A1;W           # So         HIGH VOLTAGE SIGN
+26A2..26A9;N     # So     [8] DOUBLED FEMALE SIGN..HORIZONTAL MALE WITH STROKE SIGN
+26AA..26AB;W     # So     [2] MEDIUM WHITE CIRCLE..MEDIUM BLACK CIRCLE
+26AC..26BC;N     # So    [17] MEDIUM SMALL WHITE CIRCLE..SESQUIQUADRATE
+26BD..26BE;W     # So     [2] SOCCER BALL..BASEBALL
+26BF;A           # So         SQUARED KEY
 26C0..26C3;N     # So     [4] WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING
-26C4..26CD;A     # So    [10] SNOWMAN WITHOUT SNOW..DISABLED CAR
-26CE;N           # So         OPHIUCHUS
-26CF..26E1;A     # So    [19] PICK..RESTRICTED LEFT ENTRY-2
+26C4..26C5;W     # So     [2] SNOWMAN WITHOUT SNOW..SUN BEHIND CLOUD
+26C6..26CD;A     # So     [8] RAIN..DISABLED CAR
+26CE;W           # So         OPHIUCHUS
+26CF..26D3;A     # So     [5] PICK..CHAINS
+26D4;W           # So         NO ENTRY
+26D5..26E1;A     # So    [13] ALTERNATE ONE-WAY LEFT WAY TRAFFIC..RESTRICTED LEFT ENTRY-2
 26E2;N           # So         ASTRONOMICAL SYMBOL FOR URANUS
 26E3;A           # So         HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE
 26E4..26E7;N     # So     [4] PENTAGRAM..INVERTED PENTAGRAM
-26E8..26FF;A     # So    [24] BLACK CROSS ON SHIELD..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
-2700..273C;N     # So    [61] BLACK SAFETY SCISSORS..OPEN CENTRE TEARDROP-SPOKED ASTERISK
+26E8..26E9;A     # So     [2] BLACK CROSS ON SHIELD..SHINTO SHRINE
+26EA;W           # So         CHURCH
+26EB..26F1;A     # So     [7] CASTLE..UMBRELLA ON GROUND
+26F2..26F3;W     # So     [2] FOUNTAIN..FLAG IN HOLE
+26F4;A           # So         FERRY
+26F5;W           # So         SAILBOAT
+26F6..26F9;A     # So     [4] SQUARE FOUR CORNERS..PERSON WITH BALL
+26FA;W           # So         TENT
+26FB..26FC;A     # So     [2] JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL
+26FD;W           # So         FUEL PUMP
+26FE..26FF;A     # So     [2] CUP ON BLACK SQUARE..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
+2700..2704;N     # So     [5] BLACK SAFETY SCISSORS..WHITE SCISSORS
+2705;W           # So         WHITE HEAVY CHECK MARK
+2706..2709;N     # So     [4] TELEPHONE LOCATION SIGN..ENVELOPE
+270A..270B;W     # So     [2] RAISED FIST..RAISED HAND
+270C..2727;N     # So    [28] VICTORY HAND..WHITE FOUR POINTED STAR
+2728;W           # So         SPARKLES
+2729..273C;N     # So    [20] STRESS OUTLINED WHITE STAR..OPEN CENTRE TEARDROP-SPOKED ASTERISK
 273D;A           # So         HEAVY TEARDROP-SPOKED ASTERISK
-273E..2756;N     # So    [25] SIX PETALLED BLACK AND WHITE FLORETTE..BLACK DIAMOND MINUS WHITE X
-2757;A           # So         HEAVY EXCLAMATION MARK SYMBOL
+273E..274B;N     # So    [14] SIX PETALLED BLACK AND WHITE FLORETTE..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274C;W           # So         CROSS MARK
+274D;N           # So         SHADOWED WHITE CIRCLE
+274E;W           # So         NEGATIVE SQUARED CROSS MARK
+274F..2752;N     # So     [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE
+2753..2755;W     # So     [3] BLACK QUESTION MARK ORNAMENT..WHITE EXCLAMATION MARK ORNAMENT
+2756;N           # So         BLACK DIAMOND MINUS WHITE X
+2757;W           # So         HEAVY EXCLAMATION MARK SYMBOL
 2758..2767;N     # So    [16] LIGHT VERTICAL BAR..ROTATED FLORAL HEART BULLET
 2768;N           # Ps         MEDIUM LEFT PARENTHESIS ORNAMENT
 2769;N           # Pe         MEDIUM RIGHT PARENTHESIS ORNAMENT
 2775;N           # Pe         MEDIUM RIGHT CURLY BRACKET ORNAMENT
 2776..277F;A     # No    [10] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED NUMBER TEN
 2780..2793;N     # No    [20] DINGBAT CIRCLED SANS-SERIF DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
-2794..27BF;N     # So    [44] HEAVY WIDE-HEADED RIGHTWARDS ARROW..DOUBLE CURLY LOOP
+2794;N           # So         HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2795..2797;W     # So     [3] HEAVY PLUS SIGN..HEAVY DIVISION SIGN
+2798..27AF;N     # So    [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B0;W           # So         CURLY LOOP
+27B1..27BE;N     # So    [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW
+27BF;W           # So         DOUBLE CURLY LOOP
 27C0..27C4;N     # Sm     [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
 27C5;N           # Ps         LEFT S-SHAPED BAG DELIMITER
 27C6;N           # Pe         RIGHT S-SHAPED BAG DELIMITER
 29FD;N           # Pe         RIGHT-POINTING CURVED ANGLE BRACKET
 29FE..29FF;N     # Sm     [2] TINY..MINY
 2A00..2AFF;N     # Sm   [256] N-ARY CIRCLED DOT OPERATOR..N-ARY WHITE VERTICAL BAR
-2B00..2B2F;N     # So    [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE
+2B00..2B1A;N     # So    [27] NORTH EAST WHITE ARROW..DOTTED SQUARE
+2B1B..2B1C;W     # So     [2] BLACK LARGE SQUARE..WHITE LARGE SQUARE
+2B1D..2B2F;N     # So    [19] BLACK VERY SMALL SQUARE..WHITE VERTICAL ELLIPSE
 2B30..2B44;N     # Sm    [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET
 2B45..2B46;N     # So     [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW
 2B47..2B4C;N     # Sm     [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
-2B4D..2B54;N     # So     [8] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..WHITE RIGHT-POINTING PENTAGON
-2B55..2B59;A     # So     [5] HEAVY LARGE CIRCLE..HEAVY CIRCLED SALTIRE
+2B4D..2B4F;N     # So     [3] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..SHORT BACKSLANTED SOUTH ARROW
+2B50;W           # So         WHITE MEDIUM STAR
+2B51..2B54;N     # So     [4] BLACK SMALL STAR..WHITE RIGHT-POINTING PENTAGON
+2B55;W           # So         HEAVY LARGE CIRCLE
+2B56..2B59;A     # So     [4] HEAVY OVAL WITH OVAL INSIDE..HEAVY CIRCLED SALTIRE
 2B5A..2B73;N     # So    [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
 2B76..2B95;N     # So    [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
 2B98..2BB9;N     # So    [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX
 2E40;N           # Pd         DOUBLE HYPHEN
 2E41;N           # Po         REVERSED COMMA
 2E42;N           # Ps         DOUBLE LOW-REVERSED-9 QUOTATION MARK
+2E43..2E44;N     # Po     [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
 2E80..2E99;W     # So    [26] CJK RADICAL REPEAT..CJK RADICAL RAP
 2E9B..2EF3;W     # So    [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
 2F00..2FD5;W     # So   [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
@@ -1450,7 +1516,7 @@ A788;N           # Lm         MODIFIER LETTER LOW CIRCUMFLEX ACCENT
 A789..A78A;N     # Sk     [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
 A78B..A78E;N     # L&     [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F;N           # Lo         LATIN LETTER SINOLOGICAL DOT
-A790..A7AD;N     # L&    [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE;N     # L&    [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7;N     # L&     [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7;N           # Lo         LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9;N     # Lm     [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -1476,7 +1542,7 @@ A874..A877;N     # Po     [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SH
 A880..A881;N     # Mc     [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
 A882..A8B3;N     # Lo    [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
 A8B4..A8C3;N     # Mc    [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
-A8C4;N           # Mn         SAURASHTRA SIGN VIRAMA
+A8C4..A8C5;N     # Mn     [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8CE..A8CF;N     # Po     [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
 A8D0..A8D9;N     # Nd    [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
 A8E0..A8F1;N     # Mn    [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
@@ -1726,7 +1792,7 @@ FFFD;A           # So         REPLACEMENT CHARACTER
 10175..10178;N   # No     [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
 10179..10189;N   # So    [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
 1018A..1018B;N   # No     [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN
-1018C;N          # So         GREEK SINUSOID SIGN
+1018C..1018E;N   # So     [3] GREEK SINUSOID SIGN..NOMISMA SIGN
 10190..1019B;N   # So    [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
 101A0;N          # So         GREEK SYMBOL TAU RHO
 101D0..101FC;N   # So    [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
@@ -1753,6 +1819,8 @@ FFFD;A           # So         REPLACEMENT CHARACTER
 10450..1047F;N   # Lo    [48] SHAVIAN LETTER PEEP..SHAVIAN LETTER YEW
 10480..1049D;N   # Lo    [30] OSMANYA LETTER ALEF..OSMANYA LETTER OO
 104A0..104A9;N   # Nd    [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+104B0..104D3;N   # Lu    [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB;N   # Ll    [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10500..10527;N   # Lo    [40] ELBASAN LETTER A..ELBASAN LETTER KHE
 10530..10563;N   # Lo    [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
 1056F;N          # Po         CAUCASIAN ALBANIAN CITATION MARK
@@ -1880,6 +1948,7 @@ FFFD;A           # So         REPLACEMENT CHARACTER
 11235;N          # Mc         KHOJKI SIGN VIRAMA
 11236..11237;N   # Mn     [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
 11238..1123D;N   # Po     [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN
+1123E;N          # Mn         KHOJKI SIGN SUKUN
 11280..11286;N   # Lo     [7] MULTANI LETTER A..MULTANI LETTER GA
 11288;N          # Lo         MULTANI LETTER GHA
 1128A..1128D;N   # Lo     [4] MULTANI LETTER CA..MULTANI LETTER JJA
@@ -1912,6 +1981,18 @@ FFFD;A           # So         REPLACEMENT CHARACTER
 11362..11363;N   # Mc     [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
 11366..1136C;N   # Mn     [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374;N   # Mn     [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11400..11434;N   # Lo    [53] NEWA LETTER A..NEWA LETTER HA
+11435..11437;N   # Mc     [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F;N   # Mn     [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441;N   # Mc     [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11442..11444;N   # Mn     [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11445;N          # Mc         NEWA SIGN VISARGA
+11446;N          # Mn         NEWA SIGN NUKTA
+11447..1144A;N   # Lo     [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+1144B..1144F;N   # Po     [5] NEWA DANDA..NEWA ABBREVIATION SIGN
+11450..11459;N   # Nd    [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
+1145B;N          # Po         NEWA PLACEHOLDER MARK
+1145D;N          # Po         NEWA INSERTION SIGN
 11480..114AF;N   # Lo    [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114B0..114B2;N   # Mc     [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B3..114B8;N   # Mn     [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
@@ -1945,6 +2026,7 @@ FFFD;A           # So         REPLACEMENT CHARACTER
 11641..11643;N   # Po     [3] MODI DANDA..MODI ABBREVIATION SIGN
 11644;N          # Lo         MODI SIGN HUVA
 11650..11659;N   # Nd    [10] MODI DIGIT ZERO..MODI DIGIT NINE
+11660..1166C;N   # Po    [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
 11680..116AA;N   # Lo    [43] TAKRI LETTER A..TAKRI LETTER RRA
 116AB;N          # Mn         TAKRI SIGN ANUSVARA
 116AC;N          # Mc         TAKRI SIGN VISARGA
@@ -1969,6 +2051,26 @@ FFFD;A           # So         REPLACEMENT CHARACTER
 118EA..118F2;N   # No     [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
 118FF;N          # Lo         WARANG CITI OM
 11AC0..11AF8;N   # Lo    [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08;N   # Lo     [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E;N   # Lo    [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C2F;N          # Mc         BHAIKSUKI VOWEL SIGN AA
+11C30..11C36;N   # Mn     [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D;N   # Mn     [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3E;N          # Mc         BHAIKSUKI SIGN VISARGA
+11C3F;N          # Mn         BHAIKSUKI SIGN VIRAMA
+11C40;N          # Lo         BHAIKSUKI SIGN AVAGRAHA
+11C41..11C45;N   # Po     [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2
+11C50..11C59;N   # Nd    [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+11C5A..11C6C;N   # No    [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
+11C70..11C71;N   # Po     [2] MARCHEN HEAD MARK..MARCHEN MARK SHAD
+11C72..11C8F;N   # Lo    [30] MARCHEN LETTER KA..MARCHEN LETTER A
+11C92..11CA7;N   # Mn    [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9;N          # Mc         MARCHEN SUBJOINED LETTER YA
+11CAA..11CB0;N   # Mn     [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB1;N          # Mc         MARCHEN VOWEL SIGN I
+11CB2..11CB3;N   # Mn     [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4;N          # Mc         MARCHEN VOWEL SIGN O
+11CB5..11CB6;N   # Mn     [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 12000..12399;N   # Lo   [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E;N   # Nl   [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12470..12474;N   # Po     [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
@@ -1998,6 +2100,9 @@ FFFD;A           # So         REPLACEMENT CHARACTER
 16F51..16F7E;N   # Mc    [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
 16F8F..16F92;N   # Mn     [4] MIAO TONE RIGHT..MIAO TONE BELOW
 16F93..16F9F;N   # Lm    [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0;W          # Lm         TANGUT ITERATION MARK
+17000..187EC;W   # Lo  [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2;W   # Lo   [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B000..1B001;W   # Lo     [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
 1BC00..1BC6A;N   # Lo   [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
 1BC70..1BC7C;N   # Lo    [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
@@ -2079,9 +2184,18 @@ FFFD;A           # So         REPLACEMENT CHARACTER
 1DA87..1DA8B;N   # Po     [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS
 1DA9B..1DA9F;N   # Mn     [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF;N   # Mn    [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006;N   # Mn     [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018;N   # Mn    [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021;N   # Mn     [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024;N   # Mn     [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A;N   # Mn     [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E800..1E8C4;N   # Lo   [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
 1E8C7..1E8CF;N   # No     [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
 1E8D0..1E8D6;N   # Mn     [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E900..1E943;N   # L&    [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+1E944..1E94A;N   # Mn     [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+1E950..1E959;N   # Nd    [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
+1E95E..1E95F;N   # Po     [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
 1EE00..1EE03;N   # Lo     [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
 1EE05..1EE1F;N   # Lo    [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
 1EE21..1EE22;N   # Lo     [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -2116,11 +2230,14 @@ FFFD;A           # So         REPLACEMENT CHARACTER
 1EEA5..1EEA9;N   # Lo     [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
 1EEAB..1EEBB;N   # Lo    [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
 1EEF0..1EEF1;N   # Sm     [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
-1F000..1F02B;N   # So    [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
+1F000..1F003;N   # So     [4] MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND
+1F004;W          # So         MAHJONG TILE RED DRAGON
+1F005..1F02B;N   # So    [39] MAHJONG TILE GREEN DRAGON..MAHJONG TILE BACK
 1F030..1F093;N   # So   [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
 1F0A0..1F0AE;N   # So    [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES
 1F0B1..1F0BF;N   # So    [15] PLAYING CARD ACE OF HEARTS..PLAYING CARD RED JOKER
-1F0C1..1F0CF;N   # So    [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
+1F0C1..1F0CE;N   # So    [14] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD KING OF DIAMONDS
+1F0CF;W          # So         PLAYING CARD BLACK JOKER
 1F0D1..1F0F5;N   # So    [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21
 1F100..1F10A;A   # No    [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA
 1F10B..1F10C;N   # No     [2] DINGBAT CIRCLED SANS-SERIF DIGIT ZERO..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
@@ -2128,22 +2245,64 @@ FFFD;A           # So         REPLACEMENT CHARACTER
 1F12E;N          # So         CIRCLED WZ
 1F130..1F169;A   # So    [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
 1F16A..1F16B;N   # So     [2] RAISED MC SIGN..RAISED MD SIGN
-1F170..1F19A;A   # So    [43] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VS
+1F170..1F18D;A   # So    [30] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED SA
+1F18E;W          # So         NEGATIVE SQUARED AB
+1F18F..1F190;A   # So     [2] NEGATIVE SQUARED WC..SQUARE DJ
+1F191..1F19A;W   # So    [10] SQUARED CL..SQUARED VS
+1F19B..1F1AC;A   # So    [18] SQUARED THREE D..SQUARED VOD
 1F1E6..1F1FF;N   # So    [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
 1F200..1F202;W   # So     [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
-1F210..1F23A;W   # So    [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
+1F210..1F23B;W   # So    [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
 1F240..1F248;W   # So     [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
 1F250..1F251;W   # So     [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
-1F300..1F3FA;N   # So   [251] CYCLONE..AMPHORA
-1F3FB..1F3FF;N   # Sk     [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
-1F400..1F579;N   # So   [378] RAT..JOYSTICK
-1F57B..1F5A3;N   # So    [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
-1F5A5..1F5FF;N   # So    [91] DESKTOP COMPUTER..MOYAI
-1F600..1F64F;N   # So    [80] GRINNING FACE..PERSON WITH FOLDED HANDS
+1F300..1F320;W   # So    [33] CYCLONE..SHOOTING STAR
+1F321..1F32C;N   # So    [12] THERMOMETER..WIND BLOWING FACE
+1F32D..1F335;W   # So     [9] HOT DOG..CACTUS
+1F336;N          # So         HOT PEPPER
+1F337..1F37C;W   # So    [70] TULIP..BABY BOTTLE
+1F37D;N          # So         FORK AND KNIFE WITH PLATE
+1F37E..1F393;W   # So    [22] BOTTLE WITH POPPING CORK..GRADUATION CAP
+1F394..1F39F;N   # So    [12] HEART WITH TIP ON THE LEFT..ADMISSION TICKETS
+1F3A0..1F3CA;W   # So    [43] CAROUSEL HORSE..SWIMMER
+1F3CB..1F3CE;N   # So     [4] WEIGHT LIFTER..RACING CAR
+1F3CF..1F3D3;W   # So     [5] CRICKET BAT AND BALL..TABLE TENNIS PADDLE AND BALL
+1F3D4..1F3DF;N   # So    [12] SNOW CAPPED MOUNTAIN..STADIUM
+1F3E0..1F3F0;W   # So    [17] HOUSE BUILDING..EUROPEAN CASTLE
+1F3F1..1F3F3;N   # So     [3] WHITE PENNANT..WAVING WHITE FLAG
+1F3F4;W          # So         WAVING BLACK FLAG
+1F3F5..1F3F7;N   # So     [3] ROSETTE..LABEL
+1F3F8..1F3FA;W   # So     [3] BADMINTON RACQUET AND SHUTTLECOCK..AMPHORA
+1F3FB..1F3FF;W   # Sk     [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
+1F400..1F43E;W   # So    [63] RAT..PAW PRINTS
+1F43F;N          # So         CHIPMUNK
+1F440;W          # So         EYES
+1F441;N          # So         EYE
+1F442..1F4FC;W   # So   [187] EAR..VIDEOCASSETTE
+1F4FD..1F4FE;N   # So     [2] FILM PROJECTOR..PORTABLE STEREO
+1F4FF..1F53D;W   # So    [63] PRAYER BEADS..DOWN-POINTING SMALL RED TRIANGLE
+1F53E..1F54A;N   # So    [13] LOWER RIGHT SHADOWED WHITE CIRCLE..DOVE OF PEACE
+1F54B..1F54E;W   # So     [4] KAABA..MENORAH WITH NINE BRANCHES
+1F54F;N          # So         BOWL OF HYGIEIA
+1F550..1F567;W   # So    [24] CLOCK FACE ONE OCLOCK..CLOCK FACE TWELVE-THIRTY
+1F568..1F579;N   # So    [18] RIGHT SPEAKER..JOYSTICK
+1F57A;W          # So         MAN DANCING
+1F57B..1F594;N   # So    [26] LEFT HAND TELEPHONE RECEIVER..REVERSED VICTORY HAND
+1F595..1F596;W   # So     [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
+1F597..1F5A3;N   # So    [13] WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX
+1F5A4;W          # So         BLACK HEART
+1F5A5..1F5FA;N   # So    [86] DESKTOP COMPUTER..WORLD MAP
+1F5FB..1F5FF;W   # So     [5] MOUNT FUJI..MOYAI
+1F600..1F64F;W   # So    [80] GRINNING FACE..PERSON WITH FOLDED HANDS
 1F650..1F67F;N   # So    [48] NORTH WEST POINTING LEAF..REVERSE CHECKER BOARD
-1F680..1F6D0;N   # So    [81] ROCKET..PLACE OF WORSHIP
-1F6E0..1F6EC;N   # So    [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
+1F680..1F6C5;W   # So    [70] ROCKET..LEFT LUGGAGE
+1F6C6..1F6CB;N   # So     [6] TRIANGLE WITH ROUNDED CORNERS..COUCH AND LAMP
+1F6CC;W          # So         SLEEPING ACCOMMODATION
+1F6CD..1F6CF;N   # So     [3] SHOPPING BAGS..BED
+1F6D0..1F6D2;W   # So     [3] PLACE OF WORSHIP..SHOPPING TROLLEY
+1F6E0..1F6EA;N   # So    [11] HAMMER AND WRENCH..NORTHEAST-POINTING AIRPLANE
+1F6EB..1F6EC;W   # So     [2] AIRPLANE DEPARTURE..AIRPLANE ARRIVING
 1F6F0..1F6F3;N   # So     [4] SATELLITE..PASSENGER SHIP
+1F6F4..1F6F6;W   # So     [3] SCOOTER..CANOE
 1F700..1F773;N   # So   [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
 1F780..1F7D4;N   # So    [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR
 1F800..1F80B;N   # So    [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
@@ -2151,9 +2310,14 @@ FFFD;A           # So         REPLACEMENT CHARACTER
 1F850..1F859;N   # So    [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
 1F860..1F887;N   # So    [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
 1F890..1F8AD;N   # So    [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F910..1F918;N   # So     [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS
-1F980..1F984;N   # So     [5] CRAB..UNICORN FACE
-1F9C0;N          # So         CHEESE WEDGE
+1F910..1F91E;W   # So    [15] ZIPPER-MOUTH FACE..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+1F920..1F927;W   # So     [8] FACE WITH COWBOY HAT..SNEEZING FACE
+1F930;W          # So         PREGNANT WOMAN
+1F933..1F93E;W   # So    [12] SELFIE..HANDBALL
+1F940..1F94B;W   # So    [12] WILTED FLOWER..MARTIAL ARTS UNIFORM
+1F950..1F95E;W   # So    [15] CROISSANT..PANCAKES
+1F980..1F991;W   # So    [18] CRAB..SQUID
+1F9C0;W          # So         CHEESE WEDGE
 20000..2A6D6;W   # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
 2A6D7..2A6FF;W   # Cn    [41] <reserved-2A6D7>..<reserved-2A6FF>
 2A700..2B734;W   # Lo  [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
index f6185d4..39255f1 100644 (file)
@@ -1,9 +1,9 @@
-# EmojiSources-8.0.0.txt
-# Date: 2015-01-20, 02:00:00 GMT [MS, KW]
+# EmojiSources-9.0.0.txt
+# Date: 2016-01-21, 22:00:00 GMT [MS, KW]
+# © 2016 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 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 provides mappings between Unicode code points and sequences on one hand
index e30a82b..951787b 100644 (file)
@@ -1,10 +1,11 @@
-# HangulSyllableType-8.0.0.txt
-# Date: 2014-12-16, 23:07:45 GMT [MD]
+# HangulSyllableType-9.0.0.txt
+# Date: 2016-03-02, 18:55:01 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2014 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
index 196a1e0..7cf6d0a 100644 (file)
@@ -118,6 +118,7 @@ ACUTE TONE MARK, COMBINING  0341
 ADDAK, GURMUKHI        0A71
 ADDRESSED TO THE SUBJECT       2101
 ADI SHAKTI     262C
+Adlam  1E900
 AE, LATIN CAPITAL LETTER       00C6
 ae, latin capital ligature     00C6
 AE, LATIN LETTER SMALL CAPITAL 1D01
@@ -165,6 +166,7 @@ AMPERSAND, TURNED   214B
 Anatolian Hieroglyphs  14400
 ANCHOR 2693
 ANCHOR, INTERLINEAR ANNOTATION FFF9
+Ancient Greek Textual Symbols  2E0E
 AND, CURLY LOGICAL     22CF
 AND, LOGICAL   2227
 AND, N-ARY LOGICAL     22C0
@@ -202,6 +204,7 @@ Angles and Measured Angles  299B
 ANGSTROM SIGN  212B
 Animal Faces   1F42D
 Animal Symbols 1F400
+Animal Symbols 1F980
 ANKH   2625
 ANNOTATION ANCHOR, INTERLINEAR FFF9
 ANNOTATION SEPARATOR, INTERLINEAR      FFFA
@@ -447,7 +450,9 @@ barred o, latin capital letter      019F
 BARRED O, LATIN SMALL LETTER   0275
 base   22A5
 BASEBALL       26BE
+Basic Musical Symbols  2669
 Bassa Vah      16AD0
+BAT    1F987
 Batak  1BC0
 batsaganchakan nshan, armenian 055C
 BATTERY        1F50B
@@ -527,6 +532,7 @@ beta, curled        03D0
 BETWEEN        226C
 Beverage Symbols       1F375
 BEVERAGE, HOT  2615
+Bhaiksuki      11C00
 Bidirectional Format Characters        202A
 Big 5, Duplicate Characters from       FA0C
 BIG REVERSE SOLIDUS    29F9
@@ -542,6 +548,7 @@ BISMILLAH AR-RAHMAN AR-RAHEEM, ARABIC LIGATURE      FDFD
 BLACK CIRCLE   25CF
 BLACK CIRCLE, MEDIUM   26AB
 BLACK FLAG     2691
+BLACK HEART    1F5A4
 BLACK HOURGLASS        29D7
 BLACK LEFT POINTING INDEX      261A
 BLACK LEFTWARDS BULLET 204C
@@ -689,6 +696,7 @@ BRIDGE BELOW, COMBINING INVERTED    033A
 briffits       1F4A8
 BROKEN BAR     00A6
 broken vertical bar    00A6
+bronze medal   1F949
 Bubble Symbols, Speech and Thought     1F5E8
 Bud Ornaments, Pointing        1F660
 BUG    1F41B
@@ -710,6 +718,7 @@ bullseye    1F78B
 bullseye, latin letter 0298
 buried symbol  26B0
 Burmese        1000
+BUTTERFLY      1F98B
 by definition, equal to        225C
 BY DEFINITION, EQUAL TO        225D
 BY, MEASURED   225E
@@ -736,6 +745,7 @@ C0 Control Codes, ASCII     0000
 C1 Control Codes       0080
 CADA UNA       2106
 CADUCEUS       2624
+CALL ME HAND   1F919
 Cambodian      1780
 CAMEL, BACTRIAN        1F42B
 CAMEL, DROMEDARY       1F42A
@@ -1271,6 +1281,7 @@ CROSS, ORTHODOX   2626
 cross, st. andrew's    2613
 CROSS, WEST SYRIAC     2670
 CROSS, WHITE LATIN     1F546
+crossed fingers        1F91E
 CROSSED SWORDS 2694
 Crosses        2719
 Crosses, Greek 1F7A1
@@ -1346,6 +1357,7 @@ Cyrillic Capital Letters  0400
 Cyrillic Combining Characters  0483
 Cyrillic Extended-A    2DE0
 Cyrillic Extended-B    A640
+Cyrillic Extended-C    1C80
 Cyrillic Extensions    0450
 Cyrillic Extensions    048A
 Cyrillic Historic Letters      0460
@@ -1453,6 +1465,7 @@ Device Controls   0011
 Device Controls, Symbols for   2411
 DHARMA, WHEEL OF       2638
 diacritic, finite function     20E6
+Diacritical Marks for Symbols  20D0
 Diacritical Marks for Symbols, Combining       20D0
 Diacritical Marks, Combining   0300
 Diacritics for Greek   0342
@@ -1779,6 +1792,7 @@ E, LATIN SMALL LETTER TURNED      01DD
 E, LATIN SMALL LETTER TURNED OPEN      1D08
 E, SCRIPT CAPITAL      2130
 E, SCRIPT SMALL        212F
+EAGLE  1F985
 EAR    1F442
 EARTH  2641
 EARTH GROUND   23DA
@@ -1991,11 +2005,13 @@ f, latin small letter script    0192
 F, SCRIPT CAPITAL      2131
 F, TURNED CAPITAL      2132
 F, TURNED SMALL        214E
+FACE PALM      1F926
 FACE, BLACK SMILING    263B
 FACE, POSTAL MARK      3020
 FACE, WHITE FROWNING   2639
 FACE, WHITE SMILING    263A
 Faces  1F600
+Faces  1F920
 Facial Parts Symbols   1F440
 FACSIMILE SIGN 213B
 factorial      0021
@@ -2030,6 +2046,7 @@ FILL SPACE, IDEOGRAPHIC HALF      303F
 FILLER, HANGUL 3164
 FILM FRAMES    1F39E
 Finger Dingbats, Pointing Index        261A
+fingers crossed        1F91E
 finite function        21FB
 finite function diacritic      20E6
 finite injection       2915
@@ -2065,6 +2082,7 @@ folder    0192
 FONGMAN, THAI CHARACTER        0E4F
 food available symbol  1F37D
 Food Symbols   1F354
+Food Symbols   1F950
 FOOTPRINTS     1F463
 FOR ALL        2200
 FORCES 22A9
@@ -2208,6 +2226,7 @@ GHOST     1F47B
 GIMEL SYMBOL   2137
 GIRL   1F467
 Glagolitic     2C00
+Glagolitic Supplement  1E000
 GLEICH STARK   29E6
 Globe Symbols  1F30D
 GLOBE WITH MERIDIANS   1F310
@@ -2224,6 +2243,7 @@ gnaborretni       2E18
 Go Markers     2686
 GOAT   1F410
 GOBLIN, JAPANESE       1F47A
+gold medal     1F947
 Golden Numbers, Runic  16EE
 golf course    26F3
 Gothic 10330
@@ -2383,11 +2403,14 @@ han-daku-on, combining japanese 309A
 han-daku-on, japanese  309C
 Hand Symbols   1F446
 Hand Symbols   1F58E
+Hand Symbols   1F918
 Hand Symbols, Pointing 261A
 Hand, Index Finger Pointing    1F446
 HAND, RAISED   270B
+HAND, RAISED BACK OF   1F91A
 HAND, VICTORY  270C
 HAND, WRITING  270D
+HANDSHAKE      1F91D
 Hangul Archaic Letters, Korean 3165
 HANGUL CHOSEONG FILLER 115F
 Hangul Compatibility Jamo, Korean      3130
@@ -2431,6 +2454,7 @@ HEART BULLET, REVERSED ROTATED FLORAL     2619
 Heart Dingbats 2763
 Heart Ornaments        2763
 Heart Symbols  1F493
+HEART, BLACK   1F5A4
 HEAVY BALLOT X 2718
 HEAVY CHECK MARK       2714
 HEAVY EXCLAMATION MARK ORNAMENT        2762
@@ -2568,6 +2592,7 @@ IDEOGRAPHIC ITERATION MARK, VERTICAL      303B
 IDEOGRAPHIC NUMBER ZERO        3007
 IDEOGRAPHIC SPACE      3000
 Ideographic Supplement, Enclosed       1F200
+Ideographic Symbols and Punctuation    16FE0
 Ideographic Telegraph Symbols for Days 33E0
 Ideographic Telegraph Symbols for Hours        3358
 Ideographic Telegraph Symbols for Months       32C0
@@ -3283,6 +3308,7 @@ maps from 2906
 maps to        27FC
 maps to        2905
 maps to        2907
+Marchen        11C70
 marina or yacht harbour        26F4
 mark pre-wwii, german  2133
 marker, histogram      25AE
@@ -3403,6 +3429,8 @@ MINUS, SQUARED    229F
 MINUS-OR-PLUS SIGN     2213
 minutes        2032
 MINY   29FF
+Miscellaneous Symbols  2600
+Miscellaneous Symbols  1F940
 Mkhedruli, Georgian    10D0
 mmsp   205F
 Modal Logic Operators  27E0
@@ -3436,6 +3464,7 @@ MONGOLIAN MANCHU FULL STOP        1809
 MONGOLIAN NIRUGU       180A
 Mongolian Punctuation  1800
 MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER        1807
+Mongolian Supplement   11660
 MONGOLIAN TODO SOFT HYPHEN     1806
 MONGOLIAN VOWEL SEPARATOR      180E
 MONKEY 1F412
@@ -3561,6 +3590,7 @@ New Tai Lue       1980
 New Tai Lue Digits     19D0
 New Testament Editorial Symbols        2E00
 new testament majority text    1D510
+Newa   11400
 NEWLINE, SYMBOL FOR    2424
 NEXT LINE      0085
 NEXT PAGE      2398
@@ -3811,6 +3841,7 @@ ORNATE RIGHT PARENTHESIS  FD3F
 Ors, Logical Ands and  2A51
 ORTHODOX CROSS 2626
 orthogonal to  22A5
+Osage  104B0
 Osmanya        10480
 Osmanya Digits 104A0
 OU, LATIN LETTER SMALL CAPITAL 1D15
@@ -3858,6 +3889,7 @@ P, DOUBLE-STRUCK CAPITAL  2119
 P, LATIN LETTER SMALL CAPITAL  1D18
 P, LATIN SUBSCRIPT SMALL LETTER        209A
 P, SCRIPT CAPITAL      2118
+paella 1F958
 page down      21DF
 page down      2B7D
 PAGE FACING UP 1F4C4
@@ -4007,6 +4039,7 @@ Planet Symbols    263F
 Plant Symbols  1F330
 Plastics Recycling Symbols     2673
 Playing Card Suits     2660
+Playing Card Symbols   2660
 Playing Cards  1F0A0
 plewds 1F4A6
 Plus and Minus Sign Operators  2A22
@@ -4039,7 +4072,7 @@ Points, Hebrew    05B0
 Points, Syriac 0730
 poison 2620
 POLICE OFFICER 1F46E
-Political Symbols, Religious and       2625
+Political Symbols, Religious and       2626
 Polygonal Symbols      2B12
 Polytonic Greek, Precomposed   1F00
 POO, PILE OF   1F4A9
@@ -4048,6 +4081,7 @@ POP DIRECTIONAL FORMATTING        202C
 POP DIRECTIONAL ISOLATE        2069
 pork (on menus)        1F416
 Portrait and Role Symbols      1F464
+Portrait and Role Symbols      1F930
 POSITION INDICATOR     2316
 POSITION INDICATOR, SQUARE     2BD0
 positive difference or sum     2A24
@@ -4062,6 +4096,7 @@ pound sign        0023
 POUND SIGN     00A3
 pound sterling 00A3
 pounds 2114
+Power On/Off Symbols   23FB
 power plant    26EE
 power set      1D4AB
 Precedence Signs, Order Relation       227A
@@ -4482,8 +4517,11 @@ rlo      202E
 RNAM BCAD, TIBETAN SIGN        0F7F
 road closed    26D2
 rock in rock, paper, scissors game     270A
+rofl   1F923
 Role Symbols   1F481
 Role Symbols, Portrait and     1F464
+Role Symbols, Portrait and     1F930
+ROLLING ON THE FLOOR LAUGHING  1F923
 Roman Numerals 2160
 Roman Numerals, Archaic        2185
 Roman Symbols  10190
@@ -4602,6 +4640,7 @@ SELECTED AREA, END OF     0087
 SELECTED AREA, START OF        0086
 Selectors Supplement, Variation        E0100
 Selectors, Variation   FE00
+SELFIE 1F933
 semibreve      1D15D
 SEMICOLON      003B
 SEMICOLON, ARABIC      061B
@@ -4682,6 +4721,7 @@ SHOGI PIECE, TURNED BLACK 26CA
 SHOGI PIECE, TURNED WHITE      26C9
 SHOGI PIECE, WHITE     2616
 SHOOTING STAR  1F320
+shopping cart  1F6D2
 short  0306
 short slash overlay    0337
 SHORT SOLIDUS OVERLAY, COMBINING       0337
@@ -4707,6 +4747,7 @@ Signage and Other Symbols 1F6A9
 Signs, Warning 2620
 Signs, Warning 26A0
 SignWriting, Sutton    1D800
+silver medal   1F948
 similar to     223C
 SINE WAVE      223F
 SINGLE CHARACTER INTRODUCER    009A
@@ -4931,6 +4972,7 @@ STENOGRAPHIC FULL STOP    2E3C
 sterling, pound        00A3
 stile, apl     2223
 stop play      23F9
+stop sign      1F6D1
 STOPWATCH      23F1
 straight epsilon       03F5
 straight epsilon, reversed     03F6
@@ -5048,60 +5090,146 @@ Symbols for Days, Ideographic Telegraph        33E0
 Symbols for Divination, Khmer Numeric  17F0
 Symbols for Hours, Ideographic Telegraph       3358
 Symbols for Months, Ideographic Telegraph      32C0
+Symbols, Alchemical    1F700
 Symbols, Ancient Greek Textual 2E0E
+Symbols, Animal        1F400
+Symbols, Animal        1F980
 Symbols, APL Functional        2336
+Symbols, Arabic Mathematical Alphabetic        1EE00
+Symbols, Area, 2000
+Symbols, Area, CJK Phonetics and       2E80
 Symbols, ASCII Punctuation and 0020
 Symbols, Astrological  263D
+Symbols, Audio and Video       1F4F7
 Symbols, Balinese Musical      1B61
+Symbols, Ballot        1F5F3
 Symbols, Basic Musical 2669
+Symbols, Beverage      1F375
+Symbols, Black-letter Mathematical     1D504
+Symbols, Bold Fraktur Mathematical     1D56C
+Symbols, Bold Greek Mathematical       1D6A8
+Symbols, Bold Italic Greek Mathematical        1D71C
+Symbols, Bold Italic Mathematical      1D468
+Symbols, Bold Mathematical     1D400
+Symbols, Bold Script Mathematical      1D4D0
 Symbols, Bowtie        29D1
+Symbols, Building and Map      1F3D4
+Symbols, Building and Map      1F3E0
 Symbols, Byzantine Musical     1D000
+Symbols, Celebration   1F380
 Symbols, Chess 2654
 Symbols, Circle        29B5
+Symbols, Clock Face    1F550
 Symbols, Combining Diacritical Marks for       20D0
+Symbols, Comic Style   1F4A0
+Symbols, Communication 1F4DD
+Symbols, Communication 1F57B
+Symbols, Computer Component    1F5A5
+Symbols, Cultural      1F5FB
 Symbols, Currency      20A0
 Symbols, Dentistry Notation    23BE
 Symbols, Diacritical Marks for 20D0
 Symbols, Dictionary and Map    2690
+Symbols, Dotless Mathematical  1D6A4
+Symbols, Double-struck Italic Mathematical     2145
+Symbols, Double-struck Mathematical    1D538
 Symbols, Drafting      232D
 Symbols, Electrotechnical      238D
+Symbols, Entertainment 1F3A0
 Symbols, Error Bar     29EE
+Symbols, Facial Parts  1F440
+Symbols, Fairy Tale    1F478
+Symbols, Food  1F354
+Symbols, Food  1F950
+Symbols, Fraktur Mathematical  1D504
+Symbols, Fruit and Vegetable   1F345
+Symbols, Game  1F3AE
 Symbols, Gender        26A2
 Symbols, Genealogical  26AD
+Symbols, Gesture       1F645
+Symbols, Globe 1F30D
 Symbols, Greek Mathematical    1D6A8
+Symbols, Gregorian Musical     1D1D0
+Symbols, Hand  1F446
+Symbols, Hand  1F58E
+Symbols, Hand  1F918
+Symbols, Heart 1F493
 Symbols, Hebrew Letterlike Mathematical        2135
 Symbols, I Ching / Yijing Hexagram     4DC0
 Symbols, I Ching / Yijing Monogram and Digram  268A
 Symbols, I Ching / Yijing Trigram      2630
+Symbols, Italic Greek Mathematical     1D6E2
+Symbols, Italic Mathematical   1D434
 Symbols, Japanese Chess        2616
 Symbols, Keyboard      21E6
 Symbols, Keyboard      2324
 Symbols, Keyboard      2380
 Symbols, Keyboard      2396
 Symbols, Khmer 19E0
+Symbols, Kievan Musical        1D1DE
 Symbols, Latin-1 Punctuation and       00A0
 Symbols, Letterlike    2100
+Symbols, Lock  1F50F
+Symbols, Mail  1F4E4
 Symbols, Mathematical  27C0
 Symbols, Mathematical  2980
 Symbols, Mathematical Alphanumeric     1D400
 Symbols, Mathematical Digits   1D7CE
 Symbols, Metrical      23D1
 Symbols, Miscellaneous 2600
+Symbols, Miscellaneous 1F940
+Symbols, Money 1F4B0
+Symbols, Monospace Mathematical        1D670
+Symbols, Moon, Sun, and Star   1F311
+Symbols, Music 1F3B5
 Symbols, Musical       1D100
 Symbols, New Testament Editorial       2E00
+Symbols, Office        1F4BA
+Symbols, Palaeotype Transliteration    2E32
+Symbols, Personal Care 1F484
 Symbols, Planet        263F
+Symbols, Plant 1F330
 Symbols, Plastics Recycling    2673
 Symbols, Playing Card  2660
 Symbols, Pointing Hand 261A
 Symbols, Polygonal     2B12
+Symbols, Portrait and Role     1F464
+Symbols, Portrait and Role     1F930
+Symbols, Power On/Off  23FB
 Symbols, Recycling     2672
-Symbols, Religious and Political       2625
+Symbols, Religious and Political       2626
+Symbols, Restroom      1F6B9
+Symbols, Role  1F481
+Symbols, Roman 10190
+Symbols, Romance       1F48B
+Symbols, Rumi Numeral  10E60
+Symbols, Sans-serif Bold Greek Mathematical    1D756
+Symbols, Sans-serif Bold Italic Greek Mathematical     1D790
+Symbols, Sans-serif Bold Italic Mathematical   1D63C
+Symbols, Sans-serif Bold Mathematical  1D5D4
+Symbols, Sans-serif Italic Mathematical        1D608
+Symbols, Sans-serif Mathematical       1D5A0
+Symbols, Script Mathematical   1D49C
+Symbols, Signage and Other     1F6A9
+Symbols, Speaker       1F507
+Symbols, Speech and Thought Bubble     1F5E8
+Symbols, Sport 1F3BD
+Symbols, Sport 1F3CF
 Symbols, Square        29C4
 Symbols, Tai Xuan Jing 1D300
 Symbols, Tamil 0BF3
 Symbols, Tibetan       0FC4
+Symbols, Tool  1F525
+Symbols, Transport and Map     1F680
 Symbols, Triangle      29CA
+Symbols, User Interface        1F500
+Symbols, User Interface        1F53A
+Symbols, User Interface        1F5BF
+Symbols, User Interface Input Status   1F520
+Symbols, Vehicle       1F6E5
+Symbols, Weather       1F321
 Symbols, Weather and Astrological      2600
+Symbols, Weather, Landscape, and Sky   1F300
 Symbols, Yijing / I Ching Hexagram     4DC0
 Symbols, Yijing / I Ching Monogram and Digram  268A
 Symbols, Yijing / I Ching Trigram      2630
@@ -5209,6 +5337,8 @@ Tamil Symbols     0BF3
 tamil varavu   0BF7
 tamil varudam  0BF5
 TAMIL YEAR SIGN        0BF5
+Tangut 17000
+Tangut Components      18800
 TAPE DRIVE     2707
 TAPER, CONICAL 2332
 TARGET, ROUND  1F78B
index 92cca55..16a8268 100644 (file)
@@ -1,9 +1,9 @@
-# IndicPositionalCategory-8.0.0.txt
-# Date: 2015-05-12, 10:00:00 GMT [RP, KW, LI]
-#
-# Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
+# IndicPositionalCategory-9.0.0.txt
+# Date: 2016-06-09, 19:33:00 GMT [RP]
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
+#
 # For documentation, see UAX #44: Unicode Character Database,
 # at http://www.unicode.org/reports/tr44/
 #
 # in the structural sense used for the Indic_Positional_Category are the
 # following:
 #
-# Ahom, Balinese, Batak, Bengali, Brahmi, Buginese, Buhid, Chakma,
-# Cham, Devanagari, Grantha, Gujarati, Gurmukhi, Hanunoo, Javanese,
-# Kaithi, Kannada, Kharoshthi, Khmer, Khojki, Khudawadi, Lao, Lepcha,
-# Limbu, Malayalam, Meetei Mayek, Modi, Myanmar, New Tai Lue, Oriya,
-# Rejang, Saurashtra, Sharada, Siddham, Sinhala, Sundanese, Syloti
-# Nagri, Tagalog, Tagbanwa, Tai Tham, Tai Viet, Takri, Tamil, Telugu,
-# Thai, Tibetan, and Tirhuta.
+# Ahom, Balinese, Batak, Bengali, Bhaiksuki, Brahmi, Buginese, Buhid,
+# Chakma, Cham, Devanagari, Grantha, Gujarati, Gurmukhi, Hanunoo,
+# Javanese, Kaithi, Kannada, Kharoshthi, Khmer, Khojki, Khudawadi,
+# Lao, Lepcha, Limbu, Malayalam, Marchen, Meetei Mayek, Modi,
+# Myanmar, Newa, New Tai Lue, Oriya, Rejang, Saurashtra, Sharada,
+# Siddham, Sinhala, Sundanese, Syloti Nagri, Tagalog, Tagbanwa, Tai
+# Tham, Tai Viet, Takri, Tamil, Telugu, Thai, Tibetan, and Tirhuta.
 #
 # All characters for all other scripts not in that list
 # take the default value for this property.
 # Indic scripts without positional characters are
 # Kayah Li, Mahajani, Multani, Phags-pa, and Tai Le.
 #
+# Note: The following characters are all assigned the positional category
+# Right, but may have different positions in some cases:
+#   * U+0BC1 TAMIL VOWEL SIGN U and U+0BC2 TAMIL VOWEL SIGN UU have
+#     contextually variable placement in Tamil.
+#   * U+0D41 MALAYALAM VOWEL SIGN U and U+0D42 MALAYALAM VOWEL SIGN UU form
+#     complex ligatures with consonants in older Malayalam orthography.
+#   * U+11341 GRANTHA VOWEL SIGN U and U+11342 GRANTHA VOWEL SIGN UU have
+#     contextually variable placement in Grantha.
 
 # ================================================
 
 0B40          ; Right # Mc       ORIYA VOWEL SIGN II
 0BBE..0BBF    ; Right # Mc   [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
 0BC1..0BC2    ; Right # Mc   [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
-# Note: U and UU have contextually variable placement in Tamil.
 0BD7          ; Right # Mc       TAMIL AU LENGTH MARK
 0C01..0C03    ; Right # Mc   [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
 0C41..0C44    ; Right # Mc   [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
 0D02..0D03    ; Right # Mc   [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
 0D3E..0D40    ; Right # Mc   [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
 0D41..0D42    ; Right # Mn   [2] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN UU
-# Note: U and UU form complex ligatures with consonants in older Malayalam orthography.
 0D57          ; Right # Mc       MALAYALAM AU LENGTH MARK
 0D82..0D83    ; Right # Mc   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
 0DCF..0DD1    ; Right # Mc   [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
@@ -210,12 +216,14 @@ ABEC          ; Right # Mc       MEETEI MAYEK LUM IYEK
 112E2         ; Right # Mc       KHUDAWADI VOWEL SIGN II
 11302..11303  ; Right # Mc   [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
 1133E..1133F  ; Right # Mc   [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I
-11341..11342  ; Right # Mc   [2] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN UU
-# Note: U and UU have contextually variable placement in Grantha.
-11343..11344  ; Right # Mc   [2] GRANTHA VOWEL SIGN VOCALIC R..GRANTHA VOWEL SIGN VOCALIC RR
+11341..11344  ; Right # Mc   [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
 1134D         ; Right # Mc       GRANTHA SIGN VIRAMA
 11357         ; Right # Mc       GRANTHA AU LENGTH MARK
 11362..11363  ; Right # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11435         ; Right # Mc       NEWA VOWEL SIGN AA
+11437         ; Right # Mc       NEWA VOWEL SIGN II
+11440..11441  ; Right # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11445         ; Right # Mc       NEWA SIGN VISARGA
 114B0         ; Right # Mc       TIRHUTA VOWEL SIGN AA
 114B2         ; Right # Mc       TIRHUTA VOWEL SIGN II
 114BD         ; Right # Mc       TIRHUTA VOWEL SIGN SHORT O
@@ -230,6 +238,10 @@ ABEC          ; Right # Mc       MEETEI MAYEK LUM IYEK
 116AF         ; Right # Mc       TAKRI VOWEL SIGN II
 116B6         ; Right # Mc       TAKRI SIGN VIRAMA
 11720..11721  ; Right # Mc   [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
+11C2F         ; Right # Mc       BHAIKSUKI VOWEL SIGN AA
+11C3E         ; Right # Mc       BHAIKSUKI SIGN VISARGA
+11CA9         ; Right # Mc       MARCHEN SUBJOINED LETTER YA
+11CB4         ; Right # Mc       MARCHEN VOWEL SIGN O
 
 # Indic_Positional_Category=Left
 
@@ -265,12 +277,14 @@ AAEE          ; Left # Mc       MEETEI MAYEK VOWEL SIGN AU
 111B4         ; Left # Mc       SHARADA VOWEL SIGN I
 112E1         ; Left # Mc       KHUDAWADI VOWEL SIGN I
 11347..11348  ; Left # Mc   [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
+11436         ; Left # Mc       NEWA VOWEL SIGN I
 114B1         ; Left # Mc       TIRHUTA VOWEL SIGN I
 114B9         ; Left # Mc       TIRHUTA VOWEL SIGN E
 115B0         ; Left # Mc       SIDDHAM VOWEL SIGN I
 115B8         ; Left # Mc       SIDDHAM VOWEL SIGN E
 116AE         ; Left # Mc       TAKRI VOWEL SIGN I
 11726         ; Left # Mc       AHOM VOWEL SIGN E
+11CB1         ; Left # Mc       MARCHEN VOWEL SIGN I
 
 # Indic_Positional_Category=Visual_Order_Left
 
@@ -397,9 +411,11 @@ AABB..AABC    ; Visual_Order_Left # Lo   [2] TAI VIET VOWEL AUE..TAI VIET VOWEL
 1CDA..1CDB    ; Top # Mn   [2] VEDIC TONE DOUBLE SVARITA..VEDIC TONE TRIPLE SVARITA
 1CE0          ; Top # Mn       VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
 1CF4          ; Top # Mn       VEDIC TONE CANDRA ABOVE
+1DFB          ; Top # Mn       COMBINING DELETION MARK
 A806          ; Top # Mn       SYLOTI NAGRI SIGN HASANTA
 A80B          ; Top # Mn       SYLOTI NAGRI SIGN ANUSVARA
 A826          ; Top # Mn       SYLOTI NAGRI VOWEL SIGN E
+A8C5          ; Top # Mn       SAURASHTRA SIGN CANDRABINDU
 A8E0..A8F1    ; Top # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
 A94A          ; Top # Mn       REJANG VOWEL SIGN AI
 A94F..A951    ; Top # Mn   [3] REJANG CONSONANT SIGN NG..REJANG CONSONANT SIGN R
@@ -440,12 +456,15 @@ ABE5          ; Top # Mn       MEETEI MAYEK VOWEL SIGN ANAP
 11230..11231  ; Top # Mn   [2] KHOJKI VOWEL SIGN E..KHOJKI VOWEL SIGN AI
 11234         ; Top # Mn       KHOJKI SIGN ANUSVARA
 11236..11237  ; Top # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E         ; Top # Mn       KHOJKI SIGN SUKUN
 112DF         ; Top # Mn       KHUDAWADI SIGN ANUSVARA
 112E5..112E8  ; Top # Mn   [4] KHUDAWADI VOWEL SIGN E..KHUDAWADI VOWEL SIGN AU
 11301         ; Top # Mn       GRANTHA SIGN CANDRABINDU
 11340         ; Top # Mn       GRANTHA VOWEL SIGN II
 11366..1136C  ; Top # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; Top # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+1143E..1143F  ; Top # Mn   [2] NEWA VOWEL SIGN E..NEWA VOWEL SIGN AI
+11443..11444  ; Top # Mn   [2] NEWA SIGN CANDRABINDU..NEWA SIGN ANUSVARA
 114BA         ; Top # Mn       TIRHUTA VOWEL SIGN SHORT E
 114BF..114C0  ; Top # Mn   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
 115BC..115BD  ; Top # Mn   [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
@@ -459,6 +478,10 @@ ABE5          ; Top # Mn       MEETEI MAYEK VOWEL SIGN ANAP
 11722..11723  ; Top # Mn   [2] AHOM VOWEL SIGN I..AHOM VOWEL SIGN II
 11727         ; Top # Mn       AHOM VOWEL SIGN AW
 11729..1172B  ; Top # Mn   [3] AHOM VOWEL SIGN AI..AHOM SIGN KILLER
+11C30..11C31  ; Top # Mn   [2] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN II
+11C38..11C3D  ; Top # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11CB3         ; Top # Mn       MARCHEN VOWEL SIGN E
+11CB5..11CB6  ; Top # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 
 # Indic_Positional_Category=Bottom
 
@@ -563,6 +586,9 @@ ABED          ; Bottom # Mn       MEETEI MAYEK APUN IYEK
 1122F         ; Bottom # Mn       KHOJKI VOWEL SIGN U
 112E3..112E4  ; Bottom # Mn   [2] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN UU
 112E9..112EA  ; Bottom # Mn   [2] KHUDAWADI SIGN NUKTA..KHUDAWADI SIGN VIRAMA
+11438..1143D  ; Bottom # Mn   [6] NEWA VOWEL SIGN U..NEWA VOWEL SIGN VOCALIC LL
+11442         ; Bottom # Mn       NEWA SIGN VIRAMA
+11446         ; Bottom # Mn       NEWA SIGN NUKTA
 114B3..114B8  ; Bottom # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
 114C2..114C3  ; Bottom # Mn   [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
 115B2..115B5  ; Bottom # Mn   [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
@@ -575,6 +601,11 @@ ABED          ; Bottom # Mn       MEETEI MAYEK APUN IYEK
 1171D         ; Bottom # Mn       AHOM CONSONANT SIGN MEDIAL LA
 11724..11725  ; Bottom # Mn   [2] AHOM VOWEL SIGN U..AHOM VOWEL SIGN UU
 11728         ; Bottom # Mn       AHOM VOWEL SIGN O
+11C32..11C36  ; Bottom # Mn   [5] BHAIKSUKI VOWEL SIGN U..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C3F         ; Bottom # Mn       BHAIKSUKI SIGN VIRAMA
+11C92..11CA7  ; Bottom # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CAA..11CB0  ; Bottom # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB2         ; Bottom # Mn       MARCHEN VOWEL SIGN U
 
 # Indic_Positional_Category=Top_And_Bottom
 
index d7834f3..d6c6162 100644 (file)
@@ -1,9 +1,9 @@
-# IndicSyllabicCategory-8.0.0.txt
-# Date: 2015-05-12, 10:00:00 GMT [RP, KW, LI]
-#
-# Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
+# IndicSyllabicCategory-9.0.0.txt
+# Date: 2016-05-21, 02:46:00 GMT [RP]
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
+#
 # For documentation, see UAX #44: Unicode Character Database,
 # at http://www.unicode.org/reports/tr44/
 #
 # The scripts assessed as Indic in the structural sense used for the
 # Indic_Syllabic_Category are the following:
 #
-# Ahom, Balinese, Batak, Bengali, Brahmi, Buginese, Buhid, Chakma,
-# Cham, Devanagari, Grantha, Gujarati, Gurmukhi, Hanunoo, Javanese,
-# Kaithi, Kannada, Kayah Li, Kharoshthi, Khmer, Khojki, Khudawadi,
-# Lao, Lepcha, Limbu, Mahajani, Malayalam, Meetei Mayek, Modi,
-# Multani, Myanmar, New Tai Lue, Oriya, Phags-pa, Rejang, Saurashtra,
-# Sharada, Siddham, Sinhala, Sundanese, Syloti Nagri, Tagalog,
-# Tagbanwa, Tai Le, Tai Tham, Tai Viet, Takri, Tamil, Telugu, Thai,
-# Tibetan, and Tirhuta.
+# Ahom, Balinese, Batak, Bengali, Bhaiksuki, Brahmi, Buginese, Buhid,
+# Chakma, Cham, Devanagari, Grantha, Gujarati, Gurmukhi, Hanunoo,
+# Javanese, Kaithi, Kannada, Kayah Li, Kharoshthi, Khmer, Khojki,
+# Khudawadi, Lao, Lepcha, Limbu, Mahajani, Malayalam, Marchen, Meetei
+# Mayek, Modi, Multani, Myanmar, Newa, New Tai Lue, Oriya, Phags-pa,
+# Rejang, Saurashtra, Sharada, Siddham, Sinhala, Sundanese, Syloti
+# Nagri, Tagalog, Tagbanwa, Tai Le, Tai Tham, Tai Viet, Takri, Tamil,
+# Telugu, Thai, Tibetan, and Tirhuta.
 #
 # All characters for all other scripts not in that list
 # take the default value for this property, unless they
@@ -96,6 +96,7 @@
 A80B          ; Bindu # Mn       SYLOTI NAGRI SIGN ANUSVARA
 A873          ; Bindu # Lo       PHAGS-PA LETTER CANDRABINDU
 A880          ; Bindu # Mc       SAURASHTRA SIGN ANUSVARA
+A8C5          ; Bindu # Mn       SAURASHTRA SIGN CANDRABINDU
 A980..A981    ; Bindu # Mn   [2] JAVANESE SIGN PANYANGGA..JAVANESE SIGN CECAK
 10A0E         ; Bindu # Mn       KHAROSHTHI SIGN ANUSVARA
 11000         ; Bindu # Mc       BRAHMI SIGN CANDRABINDU
@@ -107,10 +108,13 @@ A980..A981    ; Bindu # Mn   [2] JAVANESE SIGN PANYANGGA..JAVANESE SIGN CECAK
 112DF         ; Bindu # Mn       KHUDAWADI SIGN ANUSVARA
 11300..11301  ; Bindu # Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
 11302         ; Bindu # Mc       GRANTHA SIGN ANUSVARA
+11443..11444  ; Bindu # Mn   [2] NEWA SIGN CANDRABINDU..NEWA SIGN ANUSVARA
 114BF..114C0  ; Bindu # Mn   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
 115BC..115BD  ; Bindu # Mn   [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
 1163D         ; Bindu # Mn       MODI SIGN ANUSVARA
 116AB         ; Bindu # Mn       TAKRI SIGN ANUSVARA
+11C3C..11C3D  ; Bindu # Mn   [2] BHAIKSUKI SIGN CANDRABINDU..BHAIKSUKI SIGN ANUSVARA
+11CB5..11CB6  ; Bindu # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 
 # ================================================
 
@@ -147,10 +151,12 @@ AAF5          ; Visarga # Mc       MEETEI MAYEK VOWEL SIGN VISARGA
 11102         ; Visarga # Mn       CHAKMA SIGN VISARGA
 11182         ; Visarga # Mc       SHARADA SIGN VISARGA
 11303         ; Visarga # Mc       GRANTHA SIGN VISARGA
+11445         ; Visarga # Mc       NEWA SIGN VISARGA
 114C1         ; Visarga # Mc       TIRHUTA SIGN VISARGA
 115BE         ; Visarga # Mc       SIDDHAM SIGN VISARGA
 1163E         ; Visarga # Mc       MODI SIGN VISARGA
 116AC         ; Visarga # Mc       TAKRI SIGN VISARGA
+11C3E         ; Visarga # Mc       BHAIKSUKI SIGN VISARGA
 
 # ================================================
 
@@ -172,7 +178,9 @@ AAF5          ; Visarga # Mc       MEETEI MAYEK VOWEL SIGN VISARGA
 1BBA          ; Avagraha # Lo       SUNDANESE AVAGRAHA
 111C1         ; Avagraha # Lo       SHARADA SIGN AVAGRAHA
 1133D         ; Avagraha # Lo       GRANTHA SIGN AVAGRAHA
+11447         ; Avagraha # Lo       NEWA SIGN AVAGRAHA
 114C4         ; Avagraha # Lo       TIRHUTA SIGN AVAGRAHA
+11C40         ; Avagraha # Lo       BHAIKSUKI SIGN AVAGRAHA
 
 # ================================================
 
@@ -181,7 +189,7 @@ AAF5          ; Visarga # Mc       MEETEI MAYEK VOWEL SIGN VISARGA
 # Nukta (diacritic for borrowed consonants or other consonant
 # modifications)
 
-# [Derivation: (ccc=7) + 0F39 + 10A38..10A3A - 1037]
+# [Derivation: (ccc=7) + 0F39 + 10A38..10A3A - 1037 - 1E94A]
 
 093C          ; Nukta # Mn       DEVANAGARI SIGN NUKTA
 09BC          ; Nukta # Mn       BENGALI SIGN NUKTA
@@ -201,6 +209,7 @@ A9B3          ; Nukta # Mn       JAVANESE SIGN CECAK TELU
 11236         ; Nukta # Mn       KHOJKI SIGN NUKTA
 112E9         ; Nukta # Mn       KHUDAWADI SIGN NUKTA
 1133C         ; Nukta # Mn       GRANTHA SIGN NUKTA
+11446         ; Nukta # Mn       NEWA SIGN NUKTA
 114C3         ; Nukta # Mn       TIRHUTA SIGN NUKTA
 115C0         ; Nukta # Mn       SIDDHAM SIGN NUKTA
 116B7         ; Nukta # Mn       TAKRI SIGN NUKTA
@@ -236,10 +245,12 @@ A9C0          ; Virama # Mc       JAVANESE PANGKON
 111C0         ; Virama # Mc       SHARADA SIGN VIRAMA
 11235         ; Virama # Mc       KHOJKI SIGN VIRAMA
 1134D         ; Virama # Mc       GRANTHA SIGN VIRAMA
+11442         ; Virama # Mn       NEWA SIGN VIRAMA
 114C2         ; Virama # Mn       TIRHUTA SIGN VIRAMA
 115BF         ; Virama # Mn       SIDDHAM SIGN VIRAMA
 1163F         ; Virama # Mn       MODI SIGN VIRAMA
 116B6         ; Virama # Mc       TAKRI SIGN VIRAMA
+11C3F         ; Virama # Mn       BHAIKSUKI SIGN VIRAMA
 
 # ================================================
 
@@ -355,11 +366,14 @@ ABD1          ; Vowel_Independent # Lo       MEETEI MAYEK LETTER ATIYA
 1130F..11310  ; Vowel_Independent # Lo   [2] GRANTHA LETTER EE..GRANTHA LETTER AI
 11313..11314  ; Vowel_Independent # Lo   [2] GRANTHA LETTER OO..GRANTHA LETTER AU
 11360..11361  ; Vowel_Independent # Lo   [2] GRANTHA LETTER VOCALIC RR..GRANTHA LETTER VOCALIC LL
+11400..1140D  ; Vowel_Independent # Lo  [14] NEWA LETTER A..NEWA LETTER AU
 11481..1148E  ; Vowel_Independent # Lo  [14] TIRHUTA LETTER A..TIRHUTA LETTER AU
 11580..1158D  ; Vowel_Independent # Lo  [14] SIDDHAM LETTER A..SIDDHAM LETTER AU
 115D8..115DB  ; Vowel_Independent # Lo   [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U
 11600..1160D  ; Vowel_Independent # Lo  [14] MODI LETTER A..MODI LETTER AU
 11680..11689  ; Vowel_Independent # Lo  [10] TAKRI LETTER A..TAKRI LETTER AU
+11C00..11C08  ; Vowel_Independent # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C0D  ; Vowel_Independent # Lo   [4] BHAIKSUKI LETTER E..BHAIKSUKI LETTER AU
 
 # ================================================
 
@@ -556,6 +570,9 @@ ABE9..ABEA    ; Vowel_Dependent # Mc   [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEET
 1134B..1134C  ; Vowel_Dependent # Mc   [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU
 11357         ; Vowel_Dependent # Mc       GRANTHA AU LENGTH MARK
 11362..11363  ; Vowel_Dependent # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11435..11437  ; Vowel_Dependent # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F  ; Vowel_Dependent # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441  ; Vowel_Dependent # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
 114B0..114B2  ; Vowel_Dependent # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B3..114B8  ; Vowel_Dependent # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
 114B9         ; Vowel_Dependent # Mc       TIRHUTA VOWEL SIGN E
@@ -576,6 +593,13 @@ ABE9..ABEA    ; Vowel_Dependent # Mc   [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEET
 11722..11725  ; Vowel_Dependent # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
 11726         ; Vowel_Dependent # Mc       AHOM VOWEL SIGN E
 11727..1172A  ; Vowel_Dependent # Mn   [4] AHOM VOWEL SIGN AW..AHOM VOWEL SIGN AM
+11C2F         ; Vowel_Dependent # Mc       BHAIKSUKI VOWEL SIGN AA
+11C30..11C36  ; Vowel_Dependent # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3B  ; Vowel_Dependent # Mn   [4] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI VOWEL SIGN AU
+11CB0         ; Vowel_Dependent # Mn       MARCHEN VOWEL SIGN AA
+11CB1         ; Vowel_Dependent # Mc       MARCHEN VOWEL SIGN I
+11CB2..11CB3  ; Vowel_Dependent # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4         ; Vowel_Dependent # Mc       MARCHEN VOWEL SIGN O
 
 # ================================================
 
@@ -612,6 +636,7 @@ A926..A92A    ; Vowel # Mn   [5] KAYAH LI VOWEL UE..KAYAH LI VOWEL O
 1900          ; Consonant_Placeholder # Lo       LIMBU VOWEL-CARRIER LETTER
 2010..2014    ; Consonant_Placeholder # Pd   [5] HYPHEN..EM DASH
 25CC          ; Consonant_Placeholder # So       DOTTED CIRCLE
+AA74..AA76    ; Consonant_Placeholder # Lo   [3] MYANMAR LOGOGRAM KHAMTI OAY..MYANMAR LOGOGRAM KHAMTI HM
 
 # ================================================
 
@@ -760,11 +785,14 @@ ABD2..ABDA    ; Consonant # Lo   [9] MEETEI MAYEK LETTER GOK..MEETEI MAYEK LETTE
 1132A..11330  ; Consonant # Lo   [7] GRANTHA LETTER PA..GRANTHA LETTER RA
 11332..11333  ; Consonant # Lo   [2] GRANTHA LETTER LA..GRANTHA LETTER LLA
 11335..11339  ; Consonant # Lo   [5] GRANTHA LETTER VA..GRANTHA LETTER HA
+1140E..11434  ; Consonant # Lo  [39] NEWA LETTER KA..NEWA LETTER HA
 1148F..114AF  ; Consonant # Lo  [33] TIRHUTA LETTER KA..TIRHUTA LETTER HA
 1158E..115AE  ; Consonant # Lo  [33] SIDDHAM LETTER KA..SIDDHAM LETTER HA
 1160E..1162F  ; Consonant # Lo  [34] MODI LETTER KA..MODI LETTER LLA
 1168A..116AA  ; Consonant # Lo  [33] TAKRI LETTER KA..TAKRI LETTER RRA
 11700..11719  ; Consonant # Lo  [26] AHOM LETTER KA..AHOM LETTER JHA
+11C0E..11C2E  ; Consonant # Lo  [33] BHAIKSUKI LETTER KA..BHAIKSUKI LETTER HA
+11C72..11C8F  ; Consonant # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
 
 # ================================================
 
@@ -775,6 +803,7 @@ ABD2..ABDA    ; Consonant # Lo   [9] MEETEI MAYEK LETTER GOK..MEETEI MAYEK LETTE
 # [Not derivable]
 
 09CE          ; Consonant_Dead # Lo       BENGALI LETTER KHANDA TA
+0D54..0D56    ; Consonant_Dead # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D7A..0D7F    ; Consonant_Dead # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 
 # ================================================
@@ -840,6 +869,9 @@ A982          ; Consonant_Succeeding_Repha # Mn       JAVANESE SIGN LAYAR
 A867..A868    ; Consonant_Subjoined # Lo   [2] PHAGS-PA SUBJOINED LETTER WA..PHAGS-PA SUBJOINED LETTER YA
 A871          ; Consonant_Subjoined # Lo       PHAGS-PA SUBJOINED LETTER RA
 A9BD          ; Consonant_Subjoined # Mc       JAVANESE CONSONANT SIGN KERET
+11C92..11CA7  ; Consonant_Subjoined # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9         ; Consonant_Subjoined # Mc       MARCHEN SUBJOINED LETTER YA
+11CAA..11CAF  ; Consonant_Subjoined # Mn   [6] MARCHEN SUBJOINED LETTER RA..MARCHEN SUBJOINED LETTER A
 
 # ================================================
 
@@ -977,6 +1009,7 @@ ABEC          ; Tone_Mark # Mc       MEETEI MAYEK LUM IYEK
 1CF4          ; Cantillation_Mark # Mn       VEDIC TONE CANDRA ABOVE
 1CF8..1CF9    ; Cantillation_Mark # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
 A8E0..A8F1    ; Cantillation_Mark # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
+1123E         ; Cantillation_Mark # Mn       KHOJKI SIGN SUKUN
 11366..1136C  ; Cantillation_Mark # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; Cantillation_Mark # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
 
@@ -1006,10 +1039,12 @@ A8E0..A8F1    ; Cantillation_Mark # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..CO
 17CB          ; Syllable_Modifier # Mn       KHMER SIGN BANTOC
 17CE..17D0    ; Syllable_Modifier # Mn   [3] KHMER SIGN KAKABAT..KHMER SIGN SAMYOK SANNYA
 17D3          ; Syllable_Modifier # Mn       KHMER SIGN BATHAMASAT
+17DD          ; Syllable_Modifier # Mn       KHMER SIGN ATTHACAN
 193B          ; Syllable_Modifier # Mn       LIMBU SIGN SA-I
 1A7A..1A7C    ; Syllable_Modifier # Mn   [3] TAI THAM SIGN RA HAAM..TAI THAM SIGN KHUEN-LUE KARAN
 1A7F          ; Syllable_Modifier # Mn       TAI THAM COMBINING CRYPTOGRAMMIC DOT
 1C36          ; Syllable_Modifier # Mn       LEPCHA SIGN RAN
+1DFB          ; Syllable_Modifier # Mn       COMBINING DELETION MARK
 2074          ; Syllable_Modifier # No       SUPERSCRIPT FOUR
 2082..2084    ; Syllable_Modifier # No   [3] SUBSCRIPT TWO..SUBSCRIPT FOUR
 
@@ -1100,11 +1135,14 @@ ABF0..ABF9    ; Number # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NI
 111D0..111D9  ; Number # Nd  [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
 111E1..111F4  ; Number # No  [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND
 112F0..112F9  ; Number # Nd  [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
+11450..11459  ; Number # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
 114D0..114D9  ; Number # Nd  [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
 11650..11659  ; Number # Nd  [10] MODI DIGIT ZERO..MODI DIGIT NINE
 116C0..116C9  ; Number # Nd  [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
 11730..11739  ; Number # Nd  [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
 1173A..1173B  ; Number # No   [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY
+11C50..11C59  ; Number # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+11C5A..11C6C  ; Number # No  [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
 
 # ================================================
 
index 8f7c593..13111e1 100644 (file)
@@ -1,14 +1,14 @@
-# Jamo-8.0.0.txt
-# Date: 2015-01-20, 01:30:00 GMT [KW, LI]
+# Jamo-9.0.0.txt
+# Date: 2016-01-21, 22:00:00 GMT [KW, LI]
+# © 2016 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 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 8.0
+# See Section 3.12 of The Unicode Standard, Version 9.0
 # for more information.
 #
 # Each line contains two fields, separated by a semicolon.
index b627f87..5f09ad7 100644 (file)
@@ -1,45 +1,45 @@
-# LineBreak-8.0.0.txt
-# Date: 2015-02-13, 09:15:00 GMT [KW, LI]
+# LineBreak-9.0.0.txt
+# Date: 2016-05-26, 01:00:00 GMT [KW, LI]
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+# For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Line_Break Property
 #
 # This file is a normative contributory data file in the
 # Unicode Character Database.
-# It contains both normative and informative data.
-#
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # The format is two fields separated by a semicolon.
 # Field 0: Unicode code point value or range of code point values
 # Field 1: Line_Break property, consisting of one of the following values:
-#   Normative:
-#         "BK", "CR", "LF", "CM", "SG", "GL", "CB", "SP", "ZW",
-#         "NL", "WJ", "JL", "JV", "JT", "H2", "H3"
-#   Informative:
-#         "XX", "OP", "CL", "CP", "QU", "NS", "EX", "SY",
-#         "IS", "PR", "PO", "NU", "AL", "ID", "IN", "HY",
-#         "BB", "BA", "SA", "AI", "B2", "HL", "CJ", "RI"
+#   Non-tailorable:
+#         "BK", "CM", "CR", "GL", "LF", "NL", "SP", "WJ", "ZW", "ZWJ"
+#   Tailorable:
+#         "AI", "AL", "B2", "BA", "BB", "CB", "CJ", "CL", "CP", "EB",
+#         "EM", "EX", "H2", "H3", "HL", "HY", "ID", "IN", "IS", "JL",
+#         "JT", "JV", "NS", "NU", "OP", "PO", "PR", "QU", "RI", "SA",
+#         "SG", "SY", "XX"
 #  - 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
-# following blocks:
-#     CJK Unified Ideographs Extension A:       U+3400..U+4DBF
-#     CJK Unified Ideographs:                   U+4E00..U+9FFF
-#     CJK Compatibility Ideographs:             U+F900..U+FAFF
-#     CJK Unified Ideographs Extension B:      U+20000..U+2A6DF
-#     CJK Unified Ideographs Extension C:      U+2A700..U+2B73F
-#     CJK Unified Ideographs Extension D:      U+2B740..U+2B81F
-#     CJK Unified Ideographs Extension E:      U+2B820..U+2CEAF
-#     CJK Compatibility Ideographs Supplement: U+2F800..U+2FA1F
-#     and any other reserved code points on
-#         Planes 2 and 3:                      U+20000..U+2FFFD
-#                                              U+30000..U+3FFFD
-# The unassigned code points that default to "PR" comprise a range in the
-# following block:
-#     Currency Symbols:                         U+20A0..U+20CF
-#  - Character ranges are specified as for other property files in
-#         the Unicode Character Database.
+#      explicitly are given the value "XX".
+#  - The unassigned code points in the following blocks default to "ID":
+#         CJK Unified Ideographs Extension A: U+3400..U+4DBF
+#         CJK Unified Ideographs:             U+4E00..U+9FFF
+#         CJK Compatibility Ideographs:       U+F900..U+FAFF
+#  - All undesignated code points in Planes 2 and 3, whether inside or
+#      outside of allocated blocks, default to "ID":
+#         Plane 2:                            U+20000..U+2FFFD
+#         Plane 3:                            U+30000..U+3FFFD
+#  - All unassigned code points in the following Plane 1 range, whether
+#      inside or outside of allocated blocks, also default to "ID":
+#         Plane 1 range:                      U+1F000..U+1FFFD
+#  - The unassigned code points in the following block default to "PR":
+#         Currency Symbols:                   U+20A0..U+20CF
+#
+# Character ranges are specified as for other property files in the
+# Unicode Character Database.
 #
 # For legacy reasons, there are no spaces before or after the semicolon
 # which separates the two fields. The comments following the number sign
 0859..085B;CM     # Mn     [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
 085E;AL           # Po         MANDAIC PUNCTUATION
 08A0..08B4;AL     # Lo    [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD;AL     # Lo     [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
+08D4..08E1;CM     # Mn    [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
+08E2;AL           # Cf         ARABIC DISPUTED END OF AYAH
 08E3..08FF;CM     # Mn    [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA
 0900..0902;CM     # Mn     [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA
 0903;CM           # Mc         DEVANAGARI SIGN VISARGA
 0C66..0C6F;NU     # Nd    [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
 0C78..0C7E;AL     # No     [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
 0C7F;AL           # So         TELUGU SIGN TUUMU
+0C80;AL           # Lo         KANNADA SIGN SPACING CANDRABINDU
 0C81;CM           # Mn         KANNADA SIGN CANDRABINDU
 0C82..0C83;CM     # Mc     [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
 0C85..0C8C;AL     # Lo     [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0D4A..0D4C;CM     # Mc     [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
 0D4D;CM           # Mn         MALAYALAM SIGN VIRAMA
 0D4E;AL           # Lo         MALAYALAM LETTER DOT REPH
+0D4F;AL           # So         MALAYALAM SIGN PARA
+0D54..0D56;AL     # Lo     [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D57;CM           # Mc         MALAYALAM AU LENGTH MARK
+0D58..0D5E;AL     # No     [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
 0D5F..0D61;AL     # Lo     [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D62..0D63;CM     # Mn     [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
 0D66..0D6F;NU     # Nd    [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
-0D70..0D75;AL     # No     [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
+0D70..0D78;AL     # No     [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
 0D79;PO           # So         MALAYALAM DATE MARK
 0D7A..0D7F;AL     # Lo     [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 0D82..0D83;CM     # Mc     [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
 1820..1842;AL     # Lo    [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843;AL           # Lm         MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877;AL     # Lo    [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8;AL     # Lo    [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884;AL     # Lo     [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885..1886;CM     # Mn     [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887..18A8;AL     # Lo    [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18A9;CM           # Mn         MONGOLIAN LETTER ALI GALI DAGALGA
 18AA;AL           # Lo         MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5;AL     # Lo    [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
 1C5A..1C77;AL     # Lo    [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
 1C78..1C7D;AL     # Lm     [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
 1C7E..1C7F;BA     # Po     [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
+1C80..1C88;AL     # Ll     [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1CC0..1CC7;AL     # Po     [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
 1CD0..1CD2;CM     # Mn     [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
 1CD3;AL           # Po         VEDIC SIGN NIHSHVASA
 1D80..1D9A;AL     # Ll    [27] LATIN SMALL LETTER B WITH PALATAL HOOK..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
 1D9B..1DBF;AL     # Lm    [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
 1DC0..1DF5;CM     # Mn    [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF;CM     # Mn     [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+1DFB..1DFF;CM     # Mn     [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
 1E00..1EFF;AL     # L&   [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP
 1F00..1F15;AL     # L&    [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
 1F18..1F1D;AL     # Lu     [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
 2007;GL           # Zs         FIGURE SPACE
 2008..200A;BA     # Zs     [3] PUNCTUATION SPACE..HAIR SPACE
 200B;ZW           # Cf         ZERO WIDTH SPACE
-200C..200F;CM     # Cf     [4] ZERO WIDTH NON-JOINER..RIGHT-TO-LEFT MARK
+200C;CM           # Cf         ZERO WIDTH NON-JOINER
+200D;ZWJ          # Cf         ZERO WIDTH JOINER
+200E..200F;CM     # Cf     [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
 2010;BA           # Pd         HYPHEN
 2011;GL           # Pd         NON-BREAKING HYPHEN
 2012..2013;BA     # Pd     [2] FIGURE DASH..EN DASH
 23DC..23E1;AL     # Sm     [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
 23E2..23EF;AL     # So    [14] WHITE TRAPEZIUM..BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR
 23F0..23F3;ID     # So     [4] ALARM CLOCK..HOURGLASS WITH FLOWING SAND
-23F4..23FA;AL     # So     [7] BLACK MEDIUM LEFT-POINTING TRIANGLE..BLACK CIRCLE FOR RECORD
+23F4..23FE;AL     # So    [11] BLACK MEDIUM LEFT-POINTING TRIANGLE..POWER SLEEP SYMBOL
 2400..2426;AL     # So    [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
 2440..244A;AL     # So    [11] OCR HOOK..OCR DOUBLE BACKSLASH
 2460..249B;AI     # No    [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
 2616..2617;AI     # So     [2] WHITE SHOGI PIECE..BLACK SHOGI PIECE
 2618;ID           # So         SHAMROCK
 2619;AL           # So         REVERSED ROTATED FLORAL HEART BULLET
-261A..261F;ID     # So     [6] BLACK LEFT POINTING INDEX..WHITE DOWN POINTING INDEX
+261A..261C;ID     # So     [3] BLACK LEFT POINTING INDEX..WHITE LEFT POINTING INDEX
+261D;EB           # So         WHITE UP POINTING INDEX
+261E..261F;ID     # So     [2] WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX
 2620..2638;AL     # So    [25] SKULL AND CROSSBONES..WHEEL OF DHARMA
 2639..263B;ID     # So     [3] WHITE FROWNING FACE..BLACK SMILING FACE
 263C..263F;AL     # So     [4] WHITE SUN WITH RAYS..MERCURY
 26EB..26F0;AI     # So     [6] CASTLE..MOUNTAIN
 26F1..26F5;ID     # So     [5] UMBRELLA ON GROUND..SAILBOAT
 26F6;AI           # So         SQUARE FOUR CORNERS
-26F7..26FA;ID     # So     [4] SKIER..TENT
+26F7..26F8;ID     # So     [2] SKIER..ICE SKATE
+26F9;EB           # So         PERSON WITH BALL
+26FA;ID           # So         TENT
 26FB..26FC;AI     # So     [2] JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL
 26FD..26FF;ID     # So     [3] FUEL PUMP..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
 2700..2704;ID     # So     [5] BLACK SAFETY SCISSORS..WHITE SCISSORS
 2705..2707;AL     # So     [3] WHITE HEAVY CHECK MARK..TAPE DRIVE
-2708..270D;ID     # So     [6] AIRPLANE..WRITING HAND
+2708..2709;ID     # So     [2] AIRPLANE..ENVELOPE
+270A..270D;EB     # So     [4] RAISED FIST..WRITING HAND
 270E..2756;AL     # So    [73] LOWER RIGHT PENCIL..BLACK DIAMOND MINUS WHITE X
 2757;AI           # So         HEAVY EXCLAMATION MARK SYMBOL
 2758..275A;AL     # So     [3] LIGHT VERTICAL BAR..HEAVY VERTICAL BAR
 275B..2760;QU     # So     [6] HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT..HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT
 2761;AL           # So         CURVED STEM PARAGRAPH SIGN ORNAMENT
 2762..2763;EX     # So     [2] HEAVY EXCLAMATION MARK ORNAMENT..HEAVY HEART EXCLAMATION MARK ORNAMENT
-2764..2767;AL     # So     [4] HEAVY BLACK HEART..ROTATED FLORAL HEART BULLET
+2764;ID           # So         HEAVY BLACK HEART
+2765..2767;AL     # So     [3] ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET
 2768;OP           # Ps         MEDIUM LEFT PARENTHESIS ORNAMENT
 2769;CL           # Pe         MEDIUM RIGHT PARENTHESIS ORNAMENT
 276A;OP           # Ps         MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
 2E40;BA           # Pd         DOUBLE HYPHEN
 2E41;BA           # Po         REVERSED COMMA
 2E42;OP           # Ps         DOUBLE LOW-REVERSED-9 QUOTATION MARK
+2E43..2E44;BA     # Po     [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
 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
@@ -1519,7 +1538,7 @@ A788;AL           # Lm         MODIFIER LETTER LOW CIRCUMFLEX ACCENT
 A789..A78A;AL     # Sk     [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
 A78B..A78E;AL     # L&     [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F;AL           # Lo         LATIN LETTER SINOLOGICAL DOT
-A790..A7AD;AL     # L&    [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE;AL     # L&    [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7;AL     # L&     [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7;AL           # Lo         LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9;AL     # Lm     [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -1546,7 +1565,7 @@ A876..A877;EX     # Po     [2] PHAGS-PA MARK SHAD..PHAGS-PA MARK DOUBLE SHAD
 A880..A881;CM     # Mc     [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
 A882..A8B3;AL     # Lo    [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
 A8B4..A8C3;CM     # Mc    [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
-A8C4;CM           # Mn         SAURASHTRA SIGN VIRAMA
+A8C4..A8C5;CM     # Mn     [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8CE..A8CF;BA     # Po     [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
 A8D0..A8D9;NU     # Nd    [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
 A8E0..A8F1;CM     # Mn    [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
@@ -2574,16 +2593,16 @@ FF62;OP           # Ps         HALFWIDTH LEFT CORNER BRACKET
 FF63;CL           # Pe         HALFWIDTH RIGHT CORNER BRACKET
 FF64;CL           # Po         HALFWIDTH IDEOGRAPHIC COMMA
 FF65;NS           # Po         HALFWIDTH KATAKANA MIDDLE DOT
-FF66;AL           # Lo         HALFWIDTH KATAKANA LETTER WO
+FF66;ID           # Lo         HALFWIDTH KATAKANA LETTER WO
 FF67..FF6F;CJ     # Lo     [9] HALFWIDTH KATAKANA LETTER SMALL A..HALFWIDTH KATAKANA LETTER SMALL TU
 FF70;CJ           # Lm         HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
-FF71..FF9D;AL     # Lo    [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+FF71..FF9D;ID     # Lo    [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
 FF9E..FF9F;NS     # Lm     [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
-FFA0..FFBE;AL     # Lo    [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
-FFC2..FFC7;AL     # Lo     [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
-FFCA..FFCF;AL     # Lo     [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
-FFD2..FFD7;AL     # Lo     [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
-FFDA..FFDC;AL     # Lo     [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+FFA0..FFBE;ID     # Lo    [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7;ID     # Lo     [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF;ID     # Lo     [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7;ID     # Lo     [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC;ID     # Lo     [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
 FFE0;PO           # Sc         FULLWIDTH CENT SIGN
 FFE1;PR           # Sc         FULLWIDTH POUND SIGN
 FFE2;ID           # Sm         FULLWIDTH NOT SIGN
@@ -2610,7 +2629,7 @@ FFFD;AI           # So         REPLACEMENT CHARACTER
 10175..10178;AL   # No     [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
 10179..10189;AL   # So    [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
 1018A..1018B;AL   # No     [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN
-1018C;AL          # So         GREEK SINUSOID SIGN
+1018C..1018E;AL   # So     [3] GREEK SINUSOID SIGN..NOMISMA SIGN
 10190..1019B;AL   # So    [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
 101A0;AL          # So         GREEK SYMBOL TAU RHO
 101D0..101FC;AL   # So    [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
@@ -2637,6 +2656,8 @@ FFFD;AI           # So         REPLACEMENT CHARACTER
 10450..1047F;AL   # Lo    [48] SHAVIAN LETTER PEEP..SHAVIAN LETTER YEW
 10480..1049D;AL   # Lo    [30] OSMANYA LETTER ALEF..OSMANYA LETTER OO
 104A0..104A9;NU   # Nd    [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+104B0..104D3;AL   # Lu    [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB;AL   # Ll    [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10500..10527;AL   # Lo    [40] ELBASAN LETTER A..ELBASAN LETTER KHE
 10530..10563;AL   # Lo    [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
 1056F;AL          # Po         CAUCASIAN ALBANIAN CITATION MARK
@@ -2774,6 +2795,7 @@ FFFD;AI           # So         REPLACEMENT CHARACTER
 1123A;AL          # Po         KHOJKI WORD SEPARATOR
 1123B..1123C;BA   # Po     [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK
 1123D;AL          # Po         KHOJKI ABBREVIATION SIGN
+1123E;CM          # Mn         KHOJKI SIGN SUKUN
 11280..11286;AL   # Lo     [7] MULTANI LETTER A..MULTANI LETTER GA
 11288;AL          # Lo         MULTANI LETTER GHA
 1128A..1128D;AL   # Lo     [4] MULTANI LETTER CA..MULTANI LETTER JJA
@@ -2806,6 +2828,19 @@ FFFD;AI           # So         REPLACEMENT CHARACTER
 11362..11363;CM   # Mc     [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
 11366..1136C;CM   # Mn     [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374;CM   # Mn     [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11400..11434;AL   # Lo    [53] NEWA LETTER A..NEWA LETTER HA
+11435..11437;CM   # Mc     [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F;CM   # Mn     [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441;CM   # Mc     [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11442..11444;CM   # Mn     [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11445;CM          # Mc         NEWA SIGN VISARGA
+11446;CM          # Mn         NEWA SIGN NUKTA
+11447..1144A;AL   # Lo     [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+1144B..1144E;BA   # Po     [4] NEWA DANDA..NEWA GAP FILLER
+1144F;AL          # Po         NEWA ABBREVIATION SIGN
+11450..11459;NU   # Nd    [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
+1145B;BA          # Po         NEWA PLACEHOLDER MARK
+1145D;AL          # Po         NEWA INSERTION SIGN
 11480..114AF;AL   # Lo    [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114B0..114B2;CM   # Mc     [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B3..114B8;CM   # Mn     [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
@@ -2844,6 +2879,7 @@ FFFD;AI           # So         REPLACEMENT CHARACTER
 11643;AL          # Po         MODI ABBREVIATION SIGN
 11644;AL          # Lo         MODI SIGN HUVA
 11650..11659;NU   # Nd    [10] MODI DIGIT ZERO..MODI DIGIT NINE
+11660..1166C;BB   # Po    [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
 11680..116AA;AL   # Lo    [43] TAKRI LETTER A..TAKRI LETTER RRA
 116AB;CM          # Mn         TAKRI SIGN ANUSVARA
 116AC;CM          # Mc         TAKRI SIGN VISARGA
@@ -2868,6 +2904,27 @@ FFFD;AI           # So         REPLACEMENT CHARACTER
 118EA..118F2;AL   # No     [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
 118FF;AL          # Lo         WARANG CITI OM
 11AC0..11AF8;AL   # Lo    [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08;AL   # Lo     [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E;AL   # Lo    [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C2F;CM          # Mc         BHAIKSUKI VOWEL SIGN AA
+11C30..11C36;CM   # Mn     [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D;CM   # Mn     [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3E;CM          # Mc         BHAIKSUKI SIGN VISARGA
+11C3F;CM          # Mn         BHAIKSUKI SIGN VIRAMA
+11C40;AL          # Lo         BHAIKSUKI SIGN AVAGRAHA
+11C41..11C45;BA   # Po     [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2
+11C50..11C59;NU   # Nd    [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+11C5A..11C6C;AL   # No    [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
+11C70;BB          # Po         MARCHEN HEAD MARK
+11C71;EX          # Po         MARCHEN MARK SHAD
+11C72..11C8F;AL   # Lo    [30] MARCHEN LETTER KA..MARCHEN LETTER A
+11C92..11CA7;CM   # Mn    [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9;CM          # Mc         MARCHEN SUBJOINED LETTER YA
+11CAA..11CB0;CM   # Mn     [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB1;CM          # Mc         MARCHEN VOWEL SIGN I
+11CB2..11CB3;CM   # Mn     [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4;CM          # Mc         MARCHEN VOWEL SIGN O
+11CB5..11CB6;CM   # Mn     [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 12000..12399;AL   # Lo   [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E;AL   # Nl   [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12470..12474;BA   # Po     [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
@@ -2914,6 +2971,9 @@ FFFD;AI           # So         REPLACEMENT CHARACTER
 16F51..16F7E;CM   # Mc    [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
 16F8F..16F92;CM   # Mn     [4] MIAO TONE RIGHT..MIAO TONE BELOW
 16F93..16F9F;AL   # Lm    [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0;NS          # Lm         TANGUT ITERATION MARK
+17000..187EC;ID   # Lo  [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2;ID   # Lo   [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B000..1B001;ID   # Lo     [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
 1BC00..1BC6A;AL   # Lo   [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
 1BC70..1BC7C;AL   # Lo    [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
@@ -2996,9 +3056,18 @@ FFFD;AI           # So         REPLACEMENT CHARACTER
 1DA8B;AL          # Po         SIGNWRITING PARENTHESIS
 1DA9B..1DA9F;CM   # Mn     [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF;CM   # Mn    [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006;CM   # Mn     [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018;CM   # Mn    [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021;CM   # Mn     [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024;CM   # Mn     [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A;CM   # Mn     [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E800..1E8C4;AL   # Lo   [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
 1E8C7..1E8CF;AL   # No     [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
 1E8D0..1E8D6;CM   # Mn     [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E900..1E943;AL   # L&    [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+1E944..1E94A;CM   # Mn     [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+1E950..1E959;NU   # Nd    [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
+1E95E..1E95F;OP   # Po     [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
 1EE00..1EE03;AL   # Lo     [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
 1EE05..1EE1F;AL   # Lo    [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
 1EE21..1EE22;AL   # Lo     [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -3034,37 +3103,75 @@ FFFD;AI           # So         REPLACEMENT CHARACTER
 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;ID   # So    [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
+1F02C..1F02F;ID   # Cn     [4] <reserved-1F02C>..<reserved-1F02F>
 1F030..1F093;ID   # So   [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
+1F094..1F09F;ID   # Cn    [12] <reserved-1F094>..<reserved-1F09F>
 1F0A0..1F0AE;ID   # So    [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES
+1F0AF..1F0B0;ID   # Cn     [2] <reserved-1F0AF>..<reserved-1F0B0>
 1F0B1..1F0BF;ID   # So    [15] PLAYING CARD ACE OF HEARTS..PLAYING CARD RED JOKER
+1F0C0;ID          # Cn         <reserved-1F0C0>
 1F0C1..1F0CF;ID   # So    [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
+1F0D0;ID          # Cn         <reserved-1F0D0>
 1F0D1..1F0F5;ID   # So    [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21
+1F0F6..1F0FF;ID   # Cn    [10] <reserved-1F0F6>..<reserved-1F0FF>
 1F100..1F10C;AI   # No    [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
+1F10D..1F10F;ID   # Cn     [3] <reserved-1F10D>..<reserved-1F10F>
 1F110..1F12D;AI   # So    [30] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED CD
 1F12E;AL          # So         CIRCLED WZ
+1F12F;ID          # Cn         <reserved-1F12F>
 1F130..1F169;AI   # So    [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
 1F16A..1F16B;AL   # So     [2] RAISED MC SIGN..RAISED MD SIGN
-1F170..1F19A;AI   # So    [43] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VS
+1F16C..1F16F;ID   # Cn     [4] <reserved-1F16C>..<reserved-1F16F>
+1F170..1F1AC;AI   # So    [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD
+1F1AD..1F1E5;ID   # Cn    [57] <reserved-1F1AD>..<reserved-1F1E5>
 1F1E6..1F1FF;RI   # So    [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
 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
+1F203..1F20F;ID   # Cn    [13] <reserved-1F203>..<reserved-1F20F>
+1F210..1F23B;ID   # So    [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
+1F23C..1F23F;ID   # Cn     [4] <reserved-1F23C>..<reserved-1F23F>
 1F240..1F248;ID   # So     [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+1F249..1F24F;ID   # Cn     [7] <reserved-1F249>..<reserved-1F24F>
 1F250..1F251;ID   # So     [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
-1F300..1F39B;ID   # So   [156] CYCLONE..CONTROL KNOBS
+1F252..1F2FF;ID   # Cn   [174] <reserved-1F252>..<reserved-1F2FF>
+1F300..1F384;ID   # So   [133] CYCLONE..CHRISTMAS TREE
+1F385;EB          # So         FATHER CHRISTMAS
+1F386..1F39B;ID   # So    [22] FIREWORKS..CONTROL KNOBS
 1F39C..1F39D;AL   # So     [2] BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES
 1F39E..1F3B4;ID   # So    [23] FILM FRAMES..FLOWER PLAYING CARDS
 1F3B5..1F3B6;AL   # So     [2] MUSICAL NOTE..MULTIPLE MUSICAL NOTES
 1F3B7..1F3BB;ID   # So     [5] SAXOPHONE..VIOLIN
 1F3BC;AL          # So         MUSICAL SCORE
-1F3BD..1F3FA;ID   # So    [62] RUNNING SHIRT WITH SASH..AMPHORA
-1F3FB..1F3FF;AL   # Sk     [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
-1F400..1F49F;ID   # So   [160] RAT..HEART DECORATION
+1F3BD..1F3C2;ID   # So     [6] RUNNING SHIRT WITH SASH..SNOWBOARDER
+1F3C3..1F3C4;EB   # So     [2] RUNNER..SURFER
+1F3C5..1F3C9;ID   # So     [5] SPORTS MEDAL..RUGBY FOOTBALL
+1F3CA..1F3CB;EB   # So     [2] SWIMMER..WEIGHT LIFTER
+1F3CC..1F3FA;ID   # So    [47] GOLFER..AMPHORA
+1F3FB..1F3FF;EM   # Sk     [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
+1F400..1F441;ID   # So    [66] RAT..EYE
+1F442..1F443;EB   # So     [2] EAR..NOSE
+1F444..1F445;ID   # So     [2] MOUTH..TONGUE
+1F446..1F450;EB   # So    [11] WHITE UP POINTING BACKHAND INDEX..OPEN HANDS SIGN
+1F451..1F465;ID   # So    [21] CROWN..BUSTS IN SILHOUETTE
+1F466..1F469;EB   # So     [4] BOY..WOMAN
+1F46A..1F46D;ID   # So     [4] FAMILY..TWO WOMEN HOLDING HANDS
+1F46E;EB          # So         POLICE OFFICER
+1F46F;ID          # So         WOMAN WITH BUNNY EARS
+1F470..1F478;EB   # So     [9] BRIDE WITH VEIL..PRINCESS
+1F479..1F47B;ID   # So     [3] JAPANESE OGRE..GHOST
+1F47C;EB          # So         BABY ANGEL
+1F47D..1F480;ID   # So     [4] EXTRATERRESTRIAL ALIEN..SKULL
+1F481..1F483;EB   # So     [3] INFORMATION DESK PERSON..DANCER
+1F484;ID          # So         LIPSTICK
+1F485..1F487;EB   # So     [3] NAIL POLISH..HAIRCUT
+1F488..1F49F;ID   # So    [24] BARBER POLE..HEART DECORATION
 1F4A0;AL          # So         DIAMOND SHAPE WITH A DOT INSIDE
 1F4A1;ID          # So         ELECTRIC LIGHT BULB
 1F4A2;AL          # So         ANGER SYMBOL
 1F4A3;ID          # So         BOMB
 1F4A4;AL          # So         SLEEPING SYMBOL
-1F4A5..1F4AE;ID   # So    [10] COLLISION SYMBOL..WHITE FLOWER
+1F4A5..1F4A9;ID   # So     [5] COLLISION SYMBOL..PILE OF POO
+1F4AA;EB          # So         FLEXED BICEPS
+1F4AB..1F4AE;ID   # So     [4] DIZZY SYMBOL..WHITE FLOWER
 1F4AF;AL          # So         HUNDRED POINTS SYMBOL
 1F4B0;ID          # So         MONEY BAG
 1F4B1..1F4B2;AL   # So     [2] CURRENCY EXCHANGE..HEAVY DOLLAR SIGN
@@ -3074,31 +3181,74 @@ FFFD;AI           # So         REPLACEMENT CHARACTER
 1F517..1F524;AL   # So    [14] LINK SYMBOL..INPUT SYMBOL FOR LATIN LETTERS
 1F525..1F531;ID   # So    [13] FIRE..TRIDENT EMBLEM
 1F532..1F549;AL   # So    [24] BLACK SQUARE BUTTON..OM SYMBOL
-1F54A..1F579;ID   # So    [48] DOVE OF PEACE..JOYSTICK
-1F57B..1F5A3;ID   # So    [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
-1F5A5..1F5D3;ID   # So    [47] DESKTOP COMPUTER..SPIRAL CALENDAR PAD
+1F54A..1F574;ID   # So    [43] DOVE OF PEACE..MAN IN BUSINESS SUIT LEVITATING
+1F575;EB          # So         SLEUTH OR SPY
+1F576..1F579;ID   # So     [4] DARK SUNGLASSES..JOYSTICK
+1F57A;EB          # So         MAN DANCING
+1F57B..1F58F;ID   # So    [21] LEFT HAND TELEPHONE RECEIVER..TURNED OK HAND SIGN
+1F590;EB          # So         RAISED HAND WITH FINGERS SPLAYED
+1F591..1F594;ID   # So     [4] REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND
+1F595..1F596;EB   # So     [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
+1F597..1F5D3;ID   # So    [61] WHITE DOWN POINTING LEFT HAND INDEX..SPIRAL CALENDAR PAD
 1F5D4..1F5DB;AL   # So     [8] DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL
 1F5DC..1F5F3;ID   # So    [24] COMPRESSION..BALLOT BOX WITH BALLOT
 1F5F4..1F5F9;AL   # So     [6] BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK
 1F5FA..1F5FF;ID   # So     [6] WORLD MAP..MOYAI
-1F600..1F64F;ID   # So    [80] GRINNING FACE..PERSON WITH FOLDED HANDS
+1F600..1F644;ID   # So    [69] GRINNING FACE..FACE WITH ROLLING EYES
+1F645..1F647;EB   # So     [3] FACE WITH NO GOOD GESTURE..PERSON BOWING DEEPLY
+1F648..1F64A;ID   # So     [3] SEE-NO-EVIL MONKEY..SPEAK-NO-EVIL MONKEY
+1F64B..1F64F;EB   # So     [5] HAPPY PERSON RAISING ONE HAND..PERSON WITH FOLDED HANDS
 1F650..1F675;AL   # So    [38] NORTH WEST POINTING LEAF..SWASH AMPERSAND ORNAMENT
 1F676..1F678;QU   # So     [3] SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT..SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT
 1F679..1F67B;NS   # So     [3] HEAVY INTERROBANG ORNAMENT..HEAVY SANS-SERIF INTERROBANG ORNAMENT
 1F67C..1F67F;AL   # So     [4] VERY HEAVY SOLIDUS..REVERSE CHECKER BOARD
-1F680..1F6D0;ID   # So    [81] ROCKET..PLACE OF WORSHIP
+1F680..1F6A2;ID   # So    [35] ROCKET..SHIP
+1F6A3;EB          # So         ROWBOAT
+1F6A4..1F6B3;ID   # So    [16] SPEEDBOAT..NO BICYCLES
+1F6B4..1F6B6;EB   # So     [3] BICYCLIST..PEDESTRIAN
+1F6B7..1F6BF;ID   # So     [9] NO PEDESTRIANS..SHOWER
+1F6C0;EB          # So         BATH
+1F6C1..1F6D2;ID   # So    [18] BATHTUB..SHOPPING TROLLEY
+1F6D3..1F6DF;ID   # Cn    [13] <reserved-1F6D3>..<reserved-1F6DF>
 1F6E0..1F6EC;ID   # So    [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
-1F6F0..1F6F3;ID   # So     [4] SATELLITE..PASSENGER SHIP
+1F6ED..1F6EF;ID   # Cn     [3] <reserved-1F6ED>..<reserved-1F6EF>
+1F6F0..1F6F6;ID   # So     [7] SATELLITE..CANOE
+1F6F7..1F6FF;ID   # Cn     [9] <reserved-1F6F7>..<reserved-1F6FF>
 1F700..1F773;AL   # So   [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
+1F774..1F77F;ID   # Cn    [12] <reserved-1F774>..<reserved-1F77F>
 1F780..1F7D4;AL   # So    [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR
+1F7D5..1F7FF;ID   # Cn    [43] <reserved-1F7D5>..<reserved-1F7FF>
 1F800..1F80B;AL   # So    [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
+1F80C..1F80F;ID   # Cn     [4] <reserved-1F80C>..<reserved-1F80F>
 1F810..1F847;AL   # So    [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW
+1F848..1F84F;ID   # Cn     [8] <reserved-1F848>..<reserved-1F84F>
 1F850..1F859;AL   # So    [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
+1F85A..1F85F;ID   # Cn     [6] <reserved-1F85A>..<reserved-1F85F>
 1F860..1F887;AL   # So    [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
+1F888..1F88F;ID   # Cn     [8] <reserved-1F888>..<reserved-1F88F>
 1F890..1F8AD;AL   # So    [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F910..1F918;ID   # So     [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS
-1F980..1F984;ID   # So     [5] CRAB..UNICORN FACE
+1F8AE..1F90F;ID   # Cn    [98] <reserved-1F8AE>..<reserved-1F90F>
+1F910..1F917;ID   # So     [8] ZIPPER-MOUTH FACE..HUGGING FACE
+1F918..1F91E;EB   # So     [7] SIGN OF THE HORNS..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+1F91F;ID          # Cn         <reserved-1F91F>
+1F920..1F925;ID   # So     [6] FACE WITH COWBOY HAT..LYING FACE
+1F926;EB          # So         FACE PALM
+1F927;ID          # So         SNEEZING FACE
+1F928..1F92F;ID   # Cn     [8] <reserved-1F928>..<reserved-1F92F>
+1F930;EB          # So         PREGNANT WOMAN
+1F931..1F932;ID   # Cn     [2] <reserved-1F931>..<reserved-1F932>
+1F933..1F939;EB   # So     [7] SELFIE..JUGGLING
+1F93A..1F93B;ID   # So     [2] FENCER..MODERN PENTATHLON
+1F93C..1F93E;EB   # So     [3] WRESTLERS..HANDBALL
+1F93F;ID          # Cn         <reserved-1F93F>
+1F940..1F94B;ID   # So    [12] WILTED FLOWER..MARTIAL ARTS UNIFORM
+1F94C..1F94F;ID   # Cn     [4] <reserved-1F94C>..<reserved-1F94F>
+1F950..1F95E;ID   # So    [15] CROISSANT..PANCAKES
+1F95F..1F97F;ID   # Cn    [33] <reserved-1F95F>..<reserved-1F97F>
+1F980..1F991;ID   # So    [18] CRAB..SQUID
+1F992..1F9BF;ID   # Cn    [46] <reserved-1F992>..<reserved-1F9BF>
 1F9C0;ID          # So         CHEESE WEDGE
+1F9C1..1FFFD;ID   # Cn  [1597] <reserved-1F9C1>..<reserved-1FFFD>
 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
index a59698a..4a2a150 100644 (file)
@@ -1,12 +1,14 @@
-# NameAliases-8.0.0.txt
-# Date: 2014-11-19, 01:30:00 GMT [KW, LI]
+# NameAliases-9.0.0.txt
+# Date: 2016-01-21, 22:00:00 GMT [KW, LI]
+# © 2016 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+# For documentation, see http://www.unicode.org/reports/tr44/
 #
 # This file is a normative contributory data file in the
 # Unicode Character Database.
 #
-# Copyright (c) 2005-2014 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
 # This file defines the formal name aliases for Unicode characters.
 #
 # For informative aliases, see NamesList.txt
index b1bfc2f..6213419 100644 (file)
@@ -1,14 +1,16 @@
-# NamedSequences-8.0.0.txt
-# Date: 2015-02-19, 00:30:00 GMT [KW, LI]
+# NamedSequences-9.0.0.txt
+# Date: 2016-05-26, 00:00:00 GMT [KW, LI]
+# © 2016 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+# For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Unicode Named Character Sequences
 #
 # This file is a normative contributory data file in the Unicode
 # Character Database.
 #
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
 # Format:
 # Name of Sequence; Code Point Sequence for USI
 #
 
 # ================================================
 
+# Latin letter plus accent combinations.
+# These are part of the original set of approved named sequences
+# for Unicode 4.1. 2005.
+
 LATIN CAPITAL LETTER A WITH MACRON AND GRAVE;0100 0300
 LATIN SMALL LETTER A WITH MACRON AND GRAVE;0101 0300
 LATIN CAPITAL LETTER E WITH VERTICAL LINE BELOW;0045 0329
@@ -463,7 +469,16 @@ SINHALA CONSONANT SIGN YANSAYA;0DCA 200D 0DBA
 SINHALA CONSONANT SIGN RAKAARAANSAYA;0DCA 200D 0DBB
 SINHALA CONSONANT SIGN REPAYA;0DBB 0DCA 200D
 
+# Georgian letter plus accent sequence.
+# This is part of the original set of approved named sequences
+# for Unicode 4.1. 2005.
+
 GEORGIAN LETTER U-BRJGU;10E3 0302
+
+# Khmer subjoined forms and other sequences.
+# These are part of the original set of approved named sequences
+# for Unicode 4.1. 2005.
+
 KHMER CONSONANT SIGN COENG KA;17D2 1780
 KHMER CONSONANT SIGN COENG KHA;17D2 1781
 KHMER CONSONANT SIGN COENG KO;17D2 1782
@@ -508,6 +523,9 @@ KHMER VOWEL SIGN AAM;17B6 17C6
 
 # Entries for JIS X 0213 compatibility mapping.
 # Provisional 2008-11-07, Approved 2010-05-14
+# 
+# Two of these were part of the original set of approved named sequences
+# for Unicode 4.1. 2005.
 
 HIRAGANA LETTER BIDAKUON NGA;304B 309A
 HIRAGANA LETTER BIDAKUON NGI;304D 309A
index cc1d5e8..e3cea4f 100644 (file)
@@ -1,5 +1,10 @@
-# NamedSequencesProv-8.0.0.txt
-# Date: 2015-05-11, 23:40:00 GMT [KW, LI]
+# NamedSequencesProv-9.0.0.txt
+# Date: 2016-05-26, 00:00:00 GMT [KW, LI]
+# © 2016 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+# For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Provisional Unicode Named Character Sequences
 #
@@ -7,9 +12,6 @@
 #   sequences which have been designated to be provisional,
 #   rather than fully approved.
 #
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
 # Format:
 # Name of Sequence; Code Point Sequence for USI
 #
 
 # Named keycap sequences for telephone keypad (used for emoji)
 # Added to provisional named sequences, 2015-05-05
+# FE0F added to the sequences, 2016-05-11
 
-KEYCAP NUMBER SIGN;0023 20E3
-KEYCAP ASTERISK;002A 20E3
-KEYCAP DIGIT ZERO;0030 20E3
-KEYCAP DIGIT ONE;0031 20E3
-KEYCAP DIGIT TWO;0032 20E3
-KEYCAP DIGIT THREE;0033 20E3
-KEYCAP DIGIT FOUR;0034 20E3
-KEYCAP DIGIT FIVE;0035 20E3
-KEYCAP DIGIT SIX;0036 20E3
-KEYCAP DIGIT SEVEN;0037 20E3
-KEYCAP DIGIT EIGHT;0038 20E3
-KEYCAP DIGIT NINE;0039 20E3
+KEYCAP NUMBER SIGN;0023 FE0F 20E3
+KEYCAP ASTERISK;002A FE0F 20E3
+KEYCAP DIGIT ZERO;0030 FE0F 20E3
+KEYCAP DIGIT ONE;0031 FE0F 20E3
+KEYCAP DIGIT TWO;0032 FE0F 20E3
+KEYCAP DIGIT THREE;0033 FE0F 20E3
+KEYCAP DIGIT FOUR;0034 FE0F 20E3
+KEYCAP DIGIT FIVE;0035 FE0F 20E3
+KEYCAP DIGIT SIX;0036 FE0F 20E3
+KEYCAP DIGIT SEVEN;0037 FE0F 20E3
+KEYCAP DIGIT EIGHT;0038 FE0F 20E3
+KEYCAP DIGIT NINE;0039 FE0F 20E3
 
 # ================================================
 
index 2f84c23..ef838ee 100644 (file)
@@ -1,14 +1,14 @@
 ; charset=UTF-8
-@@@    The Unicode Standard 8.0.0
-@@@+   U80M150527.lst
-       Unicode 8.0.0 final names list.
+@@@    The Unicode Standard 9.0.0
+@@@+   U90M160615.lst
+       Unicode 9.0.0 final names list.
        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
        for this process are aimed at readability for the human reader,
        at the expense of some details; therefore, this file should not
        be parsed for machine-readable information.
-@+             Copyright (c) 1991-2015 Unicode, Inc.
+@+             © 2016 Unicode®, Inc.
        For terms of use, see http://www.unicode.org/terms_of_use.html
 @@     0000    C0 Controls and Basic Latin (Basic Latin)       007F
 @@+
        x (asterisk operator - 2217)
        x (sextile - 26B9)
        x (heavy asterisk - 2731)
+       ~ 002A FE0E text style
+       ~ 002A FE0F emoji style
 002B   PLUS SIGN
        x (heavy plus sign - 2795)
 002C   COMMA
        x (division slash - 2215)
 @              ASCII digits
 0030   DIGIT ZERO
+       ~ 0030 FE00 short diagonal stroke form
        ~ 0030 FE0E text style
        ~ 0030 FE0F emoji style
 0031   DIGIT ONE
        * usually closing, sometimes opening
        x (much greater-than - 226B)
        x (right double angle bracket - 300B)
+@              Vulgar fractions
+@+             The fraction bar for these may be rendered horizontally or at a slant. For other fraction characters, see 2150-215E.
 00BC   VULGAR FRACTION ONE QUARTER
-       * bar may be horizontal or slanted
-       * other fraction characters: 2153-215E
        # <fraction> 0031 2044 0034
 00BD   VULGAR FRACTION ONE HALF
-       * bar may be horizontal or slanted
        # <fraction> 0031 2044 0032
 00BE   VULGAR FRACTION THREE QUARTERS
-       * bar may be horizontal or slanted
        # <fraction> 0033 2044 0034
+@              Punctuation
 00BF   INVERTED QUESTION MARK
        = turned question mark
        * Spanish
        x (angstrom sign - 212B)
        : 0041 030A
 00C6   LATIN CAPITAL LETTER AE
-       = latin capital ligature ae (1.0)
+       = latin capital ligature ae (1.1)
 00C7   LATIN CAPITAL LETTER C WITH CEDILLA
        : 0043 0327
 00C8   LATIN CAPITAL LETTER E WITH GRAVE
 00CF   LATIN CAPITAL LETTER I WITH DIAERESIS
        : 0049 0308
 00D0   LATIN CAPITAL LETTER ETH
-       x (latin small letter eth - 00F0)
+       * lowercase is 00F0
        x (latin capital letter d with stroke - 0110)
        x (latin capital letter african d - 0189)
 00D1   LATIN CAPITAL LETTER N WITH TILDE
        = Eszett
        * German
        * uppercase is "SS"
+       * nonstandard uppercase is 1E9E
        * typographically the glyph for this character can be based on a ligature of 017F with either 0073 or with an old-style glyph for 007A (the latter similar in appearance to 0292). Both forms exist interchangeably today.
        x (greek small letter beta - 03B2)
-       x (latin capital letter sharp s - 1E9E)
 00E0   LATIN SMALL LETTER A WITH GRAVE
        : 0061 0300
 00E1   LATIN SMALL LETTER A WITH ACUTE
        * Danish, Norwegian, Swedish, Walloon
        : 0061 030A
 00E6   LATIN SMALL LETTER AE
-       = latin small ligature ae (1.0)
+       = latin small ligature ae (1.1)
        = ash (from Old English æsc)
        * Danish, Norwegian, Icelandic, Faroese, Old English, French, IPA
        x (latin small ligature oe - 0153)
        : 0069 0308
 00F0   LATIN SMALL LETTER ETH
        * Icelandic, Faroese, Old English, IPA
-       x (latin capital letter eth - 00D0)
+       * uppercase is 00D0
        x (greek small letter delta - 03B4)
        x (partial differential - 2202)
 00F1   LATIN SMALL LETTER N WITH TILDE
        x (runic letter thurisaz thurs thorn - 16A6)
 00FF   LATIN SMALL LETTER Y WITH DIAERESIS
        * French, medieval Hungarian orthography
-       x (latin capital letter y with diaeresis - 0178)
+       * uppercase is 0178
        : 0079 0308
 @~     !
 @@     0100    Latin Extended-A        017F
        : 0079 0302
 0178   LATIN CAPITAL LETTER Y WITH DIAERESIS
        * French, Igbo
-       x (latin small letter y with diaeresis - 00FF)
+       * lowercase is 00FF
        : 0059 0308
 0179   LATIN CAPITAL LETTER Z WITH ACUTE
        : 005A 0301
 0234   LATIN SMALL LETTER L WITH CURL
 0235   LATIN SMALL LETTER N WITH CURL
 0236   LATIN SMALL LETTER T WITH CURL
-@              Miscellaneous additions
+@              Miscellaneous addition
 0237   LATIN SMALL LETTER DOTLESS J
        x (mathematical italic small dotless j - 1D6A5)
+@              Additions for Africanist linguistics
 0238   LATIN SMALL LETTER DB DIGRAPH
-       * used in Africanist linguistics
 0239   LATIN SMALL LETTER QP DIGRAPH
-       * used in Africanist linguistics
+@              Additions for Sencoten
 023A   LATIN CAPITAL LETTER A WITH STROKE
-       * Sencoten
        * lowercase is 2C65
 023B   LATIN CAPITAL LETTER C WITH STROKE
-       * Sencoten
 023C   LATIN SMALL LETTER C WITH STROKE
-       * used in Americanist linguistics
+       * also used in Americanist linguistics
 023D   LATIN CAPITAL LETTER L WITH BAR
-       * Sencoten
        * lowercase is 019A
 023E   LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
-       * Sencoten
        * lowercase is 2C66
+@              Additions for Africanist linguistics
+@+             These letters were used in a Shona orthography from 1931 to 1955.
 023F   LATIN SMALL LETTER S WITH SWASH TAIL
+       * voiceless labio-alveolar fricative
        * uppercase is 2C7E
+       x (latin small letter s with hook - 0282)
 0240   LATIN SMALL LETTER Z WITH SWASH TAIL
+       * voiced labio-alveolar fricative
        * uppercase is 2C7F
+       x (latin small letter z with retroflex hook - 0290)
+@              Miscellaneous additions
 0241   LATIN CAPITAL LETTER GLOTTAL STOP
 0242   LATIN SMALL LETTER GLOTTAL STOP
        * casing use in Chipewyan, Dogrib, Slavey (Canadian aboriginal orthographies)
 026A   LATIN LETTER SMALL CAPITAL I
        * semi-high front unrounded vowel
        * preferred IPA alternate for 0269
-       * uppercase is 0197
+       * uppercase is A7AE
 026B   LATIN SMALL LETTER L WITH MIDDLE TILDE
        * velarized voiced alveolar lateral approximant
        * uppercase is 2C62
 0310   COMBINING CANDRABINDU
        x (devanagari sign candrabindu - 0901)
 0311   COMBINING INVERTED BREVE
+       x (combining cyrillic palatalization - 0484)
        x (combining cyrillic pokrytie - 0487)
 0312   COMBINING TURNED COMMA ABOVE
        = cedilla above
 036E   COMBINING LATIN SMALL LETTER V
 036F   COMBINING LATIN SMALL LETTER X
 @@     0370    Greek and Coptic        03FF
+@+             Casing relationships between Greek letters are complex and not self-evident from inspection of the charts. See the core specification for details.
 @              Archaic letters
 0370   GREEK CAPITAL LETTER HETA
        x (latin capital letter half h - 2C75)
        x (combining vertical line above - 030D)
        # 0020 0301
 0385   GREEK DIALYTIKA TONOS
+       * compatibility decomposition (NFKD) is 0020 0308 0301
        : 00A8 0301
 @              Letter
 0386   GREEK CAPITAL LETTER ALPHA WITH TONOS
        : 0474 030F
 0477   CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
        : 0475 030F
+@              Historic digraphs
+@+             These characters may be rendered as either digraph or monograph forms, with preferred alternative representations.
 0478   CYRILLIC CAPITAL LETTER UK
-       * may be rendered as either monograph or digraph form
-       * for "digraph uk" the preferred spelling is 041E 0443
+       * for "digraph onik" the preferred spelling is 041E 0443
        * for "monograph uk" the preferred character is A64A
        x (cyrillic capital letter u - 0423)
 0479   CYRILLIC SMALL LETTER UK
-       * for "digraph uk" the preferred spelling is 043E 0443
+       * for "digraph onik" the preferred spelling is 043E 0443
        * for "monograph uk" the preferred character is A64B
+@              Historic letters
 047A   CYRILLIC CAPITAL LETTER ROUND OMEGA
 047B   CYRILLIC SMALL LETTER ROUND OMEGA
 047C   CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
        * despite its name, this character does not have a titlo, nor is it composed of an omega plus a diacritic
        x (cyrillic capital letter broad omega - A64C)
 047D   CYRILLIC SMALL LETTER OMEGA WITH TITLO
+       x (greek small letter omega with psili and perispomeni - 1F66)
 047E   CYRILLIC CAPITAL LETTER OT
 047F   CYRILLIC SMALL LETTER OT
 0480   CYRILLIC CAPITAL LETTER KOPPA
 @              Historic miscellaneous
 0482   CYRILLIC THOUSANDS SIGN
 0483   COMBINING CYRILLIC TITLO
-       * not used with letter titlos
+       * not used with titlo letters
        x (combining cyrillic vzmet - A66F)
 0484   COMBINING CYRILLIC PALATALIZATION
-       x (combining vertical tilde - 033E)
+       * not used for kamora
+       x (modifier letter apostrophe - 02BC)
+       x (combining inverted breve - 0311)
 0485   COMBINING CYRILLIC DASIA PNEUMATA
        x (combining reversed comma above - 0314)
 0486   COMBINING CYRILLIC PSILI PNEUMATA
        x (combining comma above - 0313)
 0487   COMBINING CYRILLIC POKRYTIE
-       * used only with letter titlos
+       * used only with titlo letters
        * also attested in Glagolitic
        x (combining inverted breve - 0311)
        x (combining cyrillic vzmet - A66F)
 04A4   CYRILLIC CAPITAL LIGATURE EN GHE
 04A5   CYRILLIC SMALL LIGATURE EN GHE
        * Altay, Mari, Yakut
+       * also used for soft en in Old Church Slavonic
        * this is not a decomposable ligature
 04A6   CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
 04A7   CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
 @              Archaic letters
 066E   ARABIC LETTER DOTLESS BEH
 066F   ARABIC LETTER DOTLESS QAF
-@              Point
+@              Tashkil
 0670   ARABIC LETTER SUPERSCRIPT ALEF
        * actually a vowel sign, despite the name
 @              Extended Arabic letters
 0709   SYRIAC SUBLINEAR COLON SKEWED RIGHT
        % SYRIAC SUBLINEAR COLON SKEWED LEFT
        * marks the end of a real or rhetorical question
+       * character name is a misnomer
 070A   SYRIAC CONTRACTION
        * a contraction mark, mostly used in East Syriac
        * placed at the end of an incomplete word
 @              Punctuation
 085E   MANDAIC PUNCTUATION
 @@     08A0    Arabic Extended-A       08FF
-@              Extended Arabic letters for African languages
+@              Arabic letters for African languages
 08A0   ARABIC LETTER BEH WITH SMALL V BELOW
 08A1   ARABIC LETTER BEH WITH HAMZA ABOVE
        * Adamawa Fulfulde (Cameroon)
 08AF   ARABIC LETTER SAD WITH THREE DOTS BELOW
        * Belarusian
 08B0   ARABIC LETTER GAF WITH INVERTED STROKE
-       * Crimean Tatar, Chechen, Lak 
+       * Crimean Tatar, Chechen, Lak
 08B1   ARABIC LETTER STRAIGHT WAW
        * Tatar
 @              Arabic letter for Berber
 @              Arabic letters for Arwi
 08B3   ARABIC LETTER AIN WITH THREE DOTS BELOW
 08B4   ARABIC LETTER KAF WITH DOT BELOW
+@              Arabic letters for Bravanese
+08B6   ARABIC LETTER BEH WITH SMALL MEEM ABOVE
+08B7   ARABIC LETTER PEH WITH SMALL MEEM ABOVE
+08B8   ARABIC LETTER TEH WITH SMALL TEH ABOVE
+08B9   ARABIC LETTER REH WITH SMALL NOON ABOVE
+08BA   ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE
+@              Arabic letters for Warsh orthography
+@+             The Warsh orthography is the most widespread tradition for the Arabic script in North and West Africa.
+08BB   ARABIC LETTER AFRICAN FEH
+       * initial and medial forms have one dot below
+       x (arabic letter dotless feh - 06A1)
+       x (arabic letter feh with dot moved below - 06A2)
+08BC   ARABIC LETTER AFRICAN QAF
+       * initial and medial forms have one dot above
+       x (arabic letter dotless qaf - 066F)
+       x (arabic letter qaf with dot above - 06A7)
+08BD   ARABIC LETTER AFRICAN NOON
+       * initial and medial forms have one dot above
+       x (arabic letter noon ghunna - 06BA)
+       x (arabic letter noon - 0646)
+@              Pakistani Quranic marks
+08D4   ARABIC SMALL HIGH WORD AR-RUB
+08D5   ARABIC SMALL HIGH SAD
+08D6   ARABIC SMALL HIGH AIN
+08D7   ARABIC SMALL HIGH QAF
+08D8   ARABIC SMALL HIGH NOON WITH KASRA
+08D9   ARABIC SMALL LOW NOON WITH KASRA
+08DA   ARABIC SMALL HIGH WORD ATH-THALATHA
+08DB   ARABIC SMALL HIGH WORD AS-SAJDA
+08DC   ARABIC SMALL HIGH WORD AN-NISF
+08DD   ARABIC SMALL HIGH WORD SAKTA
+08DE   ARABIC SMALL HIGH WORD QIF
+08DF   ARABIC SMALL HIGH WORD WAQFA
+08E0   ARABIC SMALL HIGH FOOTNOTE MARKER
+08E1   ARABIC SMALL HIGH SIGN SAFHA
+08E2   ARABIC DISPUTED END OF AYAH
 @              Extended vowel sign for Arwi
 08E3   ARABIC TURNED DAMMA BELOW
 @              Extended vowel signs for Rohingya
 08ED   ARABIC TONE ONE DOT BELOW
 08EE   ARABIC TONE TWO DOTS BELOW
 08EF   ARABIC TONE LOOP BELOW
-@              Koranic annotation signs
+@              Quranic annotation signs
 08F0   ARABIC OPEN FATHATAN
        = successive fathatan
 08F1   ARABIC OPEN DAMMATAN
        = deergh viram
 @              Digits
 0966   DEVANAGARI DIGIT ZERO
+       * also used to represent an anusvara following digits indicating secondary svara-s in Samavedic texts
 0967   DEVANAGARI DIGIT ONE
 0968   DEVANAGARI DIGIT TWO
 0969   DEVANAGARI DIGIT THREE
 0C7F   TELUGU SIGN TUUMU
 @@     0C80    Kannada 0CFF
 @              Various signs
+0C80   KANNADA SIGN SPACING CANDRABINDU
 0C81   KANNADA SIGN CANDRABINDU
 0C82   KANNADA SIGN ANUSVARA
 0C83   KANNADA SIGN VISARGA
 @              Various signs
 0D01   MALAYALAM SIGN CANDRABINDU
 0D02   MALAYALAM SIGN ANUSVARA
+       * used in Prakrit language texts to indicate gemination of the following consonant
 0D03   MALAYALAM SIGN VISARGA
 @              Independent vowels
 0D05   MALAYALAM LETTER A
 @              Dot reph
 0D4E   MALAYALAM LETTER DOT REPH
        * not used in reformed modern Malayalam orthography
+@              Measurement symbol
+0D4F   MALAYALAM SIGN PARA
+       * used historically to measure rice
+@              Chillu letters
+0D54   MALAYALAM LETTER CHILLU M
+0D55   MALAYALAM LETTER CHILLU Y
+0D56   MALAYALAM LETTER CHILLU LLL
 @              Various signs
 0D57   MALAYALAM AU LENGTH MARK
        * used alone to write the /au/ dependent vowel in modern texts
        x (malayalam vowel sign au - 0D4C)
+@              Minor fractions
+@+             Some minor fractions are represented by letters.
+@+             The fraction one three-hundred and twentieth "muntiri" is denoted by the syllable "pta" (0D2A 0D4D 0D24).
+0D58   MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH
+       = arakaani
+0D59   MALAYALAM FRACTION ONE FORTIETH
+       = aramaa
+0D5A   MALAYALAM FRACTION THREE EIGHTIETHS
+       = muunnukaani
+0D5B   MALAYALAM FRACTION ONE TWENTIETH
+       = orumaa
+0D5C   MALAYALAM FRACTION ONE TENTH
+       = rantumaa
+0D5D   MALAYALAM FRACTION THREE TWENTIETHS
+       = muunnumaa
+0D5E   MALAYALAM FRACTION ONE FIFTH
+       = naalumaa
 @              Additional historic vowel
 0D5F   MALAYALAM LETTER ARCHAIC II
 @              Additional vowels for Sanskrit
        = ara
 0D75   MALAYALAM FRACTION THREE QUARTERS
        = mukkaal
+0D76   MALAYALAM FRACTION ONE SIXTEENTH
+       = maakaani
+0D77   MALAYALAM FRACTION ONE EIGHTH
+       = arakkaal
+0D78   MALAYALAM FRACTION THREE SIXTEENTHS
+       = muntaani
 @              Date mark
 0D79   MALAYALAM DATE MARK
 @              Chillu letters
 @@     1000    Myanmar 109F
 @              Consonants
 1000   MYANMAR LETTER KA
+       ~ 1000 FE00 dotted form
 1001   MYANMAR LETTER KHA
 1002   MYANMAR LETTER GA
+       ~ 1002 FE00 dotted form
 1003   MYANMAR LETTER GHA
 1004   MYANMAR LETTER NGA
+       ~ 1004 FE00 dotted form
 1005   MYANMAR LETTER CA
 1006   MYANMAR LETTER CHA
 1007   MYANMAR LETTER JA
 100E   MYANMAR LETTER DDHA
 100F   MYANMAR LETTER NNA
 1010   MYANMAR LETTER TA
+       ~ 1010 FE00 dotted form
 1011   MYANMAR LETTER THA
+       ~ 1011 FE00 dotted form
 1012   MYANMAR LETTER DA
 1013   MYANMAR LETTER DHA
 1014   MYANMAR LETTER NA
 1015   MYANMAR LETTER PA
+       ~ 1015 FE00 dotted form
 1016   MYANMAR LETTER PHA
 1017   MYANMAR LETTER BA
 1018   MYANMAR LETTER BHA
 1019   MYANMAR LETTER MA
+       ~ 1019 FE00 dotted form
 101A   MYANMAR LETTER YA
+       ~ 101A FE00 dotted form
 101B   MYANMAR LETTER RA
 101C   MYANMAR LETTER LA
+       ~ 101C FE00 dotted form
 101D   MYANMAR LETTER WA
+       ~ 101D FE00 dotted form
 101E   MYANMAR LETTER SA
 101F   MYANMAR LETTER HA
 1020   MYANMAR LETTER LLA
 1021   MYANMAR LETTER A
        * also represents the glottal stop as a consonant
 1022   MYANMAR LETTER SHAN A
+       ~ 1022 FE00 dotted form
 1023   MYANMAR LETTER I
 1024   MYANMAR LETTER II
 1025   MYANMAR LETTER U
 1030   MYANMAR VOWEL SIGN UU
 1031   MYANMAR VOWEL SIGN E
        * stands to the left of the consonant
+       ~ 1031 FE00 dotted form
 1032   MYANMAR VOWEL SIGN AI
 1033   MYANMAR VOWEL SIGN MON II
 1034   MYANMAR VOWEL SIGN MON O
 1074   MYANMAR VOWEL SIGN KAYAH EE
 @              Extensions for Shan
 1075   MYANMAR LETTER SHAN KA
+       ~ 1075 FE00 dotted form
 1076   MYANMAR LETTER SHAN KHA
 1077   MYANMAR LETTER SHAN GA
 1078   MYANMAR LETTER SHAN CA
+       ~ 1078 FE00 dotted form
 1079   MYANMAR LETTER SHAN ZA
 107A   MYANMAR LETTER SHAN NYA
+       ~ 107A FE00 dotted form
 107B   MYANMAR LETTER SHAN DA
 107C   MYANMAR LETTER SHAN NA
 107D   MYANMAR LETTER SHAN PHA
 107E   MYANMAR LETTER SHAN FA
 107F   MYANMAR LETTER SHAN BA
 1080   MYANMAR LETTER SHAN THA
+       ~ 1080 FE00 dotted form
 1081   MYANMAR LETTER SHAN HA
 1082   MYANMAR CONSONANT SIGN SHAN MEDIAL WA
 1083   MYANMAR VOWEL SIGN SHAN AA
 @              Shan symbols
 109E   MYANMAR SYMBOL SHAN ONE
 109F   MYANMAR SYMBOL SHAN EXCLAMATION
+@~     !
 @@     10A0    Georgian        10FF
 @              Capital letters (Khutsuri)
 @+             This is the uppercase of the old ecclesiastical alphabet. The style shown in the code charts is known as Asomtavruli. See the Georgian Supplement block for lowercase Nuskhuri.
 10FA   GEORGIAN LETTER AIN
 @              Punctuation
 10FB   GEORGIAN PARAGRAPH SEPARATOR
+       x (three dot punctuation - 2056)
 @              Modifier letter
 10FC   MODIFIER LETTER GEORGIAN NAR
        # <super> 10DC
 @@     1800    Mongolian       18AF
 @@+
 @              Punctuation
+@+             Additional birgas are encoded in the Mongolian Supplement block at 11660-1167F.
 1800   MONGOLIAN BIRGA
        x (tibetan mark initial yig mgo mdun ma - 0F04)
 1801   MONGOLIAN ELLIPSIS
 1818   MONGOLIAN DIGIT EIGHT
 1819   MONGOLIAN DIGIT NINE
 @              Basic letters
+@+             Cross-references show commonly used Cyrillic transliterations.
 1820   MONGOLIAN LETTER A
        x (cyrillic small letter a - 0430)
+       ~ 1820 ALT1 first form (initial)
+       ~ 1820 ALT1 first form (medial)
+       ~ 1820 ALT1 first form (final)
        ~ 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 ALT1 first form (initial)
+       ~ 1821 ALT1 first form (medial)
+       ~ 1821 ALT1 first form (final)
        ~ 1821 180B second form (initial)
        ~ 1821 180B second form (final)
 1822   MONGOLIAN LETTER I
        x (cyrillic small letter i - 0438)
+       ~ 1822 ALT1 first form (initial)
+       ~ 1822 ALT1 first form (medial)
+       ~ 1822 ALT1 first form (final)
        ~ 1822 180B second form (medial)
 1823   MONGOLIAN LETTER O
        x (cyrillic small letter o - 043E)
+       ~ 1823 ALT1 first form (initial)
+       ~ 1823 ALT1 first form (medial)
+       ~ 1823 ALT1 first form (final)
        ~ 1823 180B second form (medial)
        ~ 1823 180B second form (final)
 1824   MONGOLIAN LETTER U
        x (cyrillic small letter u - 0443)
+       ~ 1824 ALT1 first form (isolate)
+       ~ 1824 ALT1 first form (initial)
+       ~ 1824 ALT1 first form (medial)
+       ~ 1824 ALT1 first form (final)
        ~ 1824 180B second form (medial)
 1825   MONGOLIAN LETTER OE
        x (cyrillic small letter barred o - 04E9)
+       ~ 1825 ALT1 first form (initial)
+       ~ 1825 ALT1 first form (medial)
+       ~ 1825 ALT1 first form (final)
        ~ 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 ALT1 first form (isolate)
+       ~ 1826 ALT1 first form (initial)
+       ~ 1826 ALT1 first form (medial)
+       ~ 1826 ALT1 first form (final)
        ~ 1826 180B second form (isolate)
        ~ 1826 180B second form (medial)
        ~ 1826 180B second form (final)
 1827   MONGOLIAN LETTER EE
 1828   MONGOLIAN LETTER NA
        x (cyrillic small letter en - 043D)
+       ~ 1828 ALT1 first form (initial)
+       ~ 1828 ALT1 first form (medial)
+       ~ 1828 ALT1 first form (final)
        ~ 1828 180B second form (initial)
        ~ 1828 180B second form (medial)
        ~ 1828 180C third form (medial)
 1829   MONGOLIAN LETTER ANG
 182A   MONGOLIAN LETTER BA
        x (cyrillic small letter be - 0431)
+       ~ 182A ALT1 first form (initial)
+       ~ 182A ALT1 first form (medial)
+       ~ 182A ALT1 first form (final)
        ~ 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 ALT1 first form (initial)
+       ~ 182C ALT1 first form (medial)
+       ~ 182C ALT1 first form (final)
        ~ 182C 180B second form (initial)
        ~ 182C 180B second form (medial)
        ~ 182C 180B feminine second form (isolate)
        ~ 182C 180D fourth form (medial)
 182D   MONGOLIAN LETTER GA
        x (cyrillic small letter ghe - 0433)
+       ~ 182D ALT1 first form (initial)
+       ~ 182D ALT1 first form (medial)
+       ~ 182D ALT1 first form (final)
        ~ 182D 180B second form (initial)
        ~ 182D 180B second form (medial)
        ~ 182D 180B feminine form (final)
        x (cyrillic small letter el - 043B)
 1830   MONGOLIAN LETTER SA
        x (cyrillic small letter es - 0441)
+       ~ 1830 ALT1 first form (initial)
+       ~ 1830 ALT1 first form (medial)
+       ~ 1830 ALT1 first form (final)
        ~ 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 ALT1 first form (initial)
+       ~ 1832 ALT1 first form (medial)
+       ~ 1832 ALT1 first form (final)
        ~ 1832 180B second form (medial)
 1833   MONGOLIAN LETTER DA
        x (cyrillic small letter de - 0434)
+       ~ 1833 ALT1 first form (initial)
+       ~ 1833 ALT1 first form (medial)
+       ~ 1833 ALT1 first form (final)
        ~ 1833 180B second form (initial)
        ~ 1833 180B second form (medial)
        ~ 1833 180B second form (final)
        x (cyrillic small letter che - 0447)
 1835   MONGOLIAN LETTER JA
        x (cyrillic small letter zhe - 0436)
+       ~ 1835 ALT1 first form (initial)
+       ~ 1835 ALT1 first form (medial)
+       ~ 1835 ALT1 first form (final)
        ~ 1835 180B second form (medial)
 1836   MONGOLIAN LETTER YA
        x (cyrillic small letter short i - 0439)
+       ~ 1836 ALT1 first form (initial)
+       ~ 1836 ALT1 first form (medial)
+       ~ 1836 ALT1 first form (final)
        ~ 1836 180B second form (initial)
        ~ 1836 180B second form (medial)
        ~ 1836 180C third form (medial)
        x (cyrillic small letter er - 0440)
 1838   MONGOLIAN LETTER WA
        x (cyrillic small letter ve - 0432)
+       ~ 1838 ALT1 first form (initial)
+       ~ 1838 ALT1 first form (medial)
+       ~ 1838 ALT1 first form (final)
        ~ 1838 180B second form (final)
 1839   MONGOLIAN LETTER FA
        x (cyrillic small letter ef - 0444)
 @              Todo letters
 1843   MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844   MONGOLIAN LETTER TODO E
+       ~ 1844 ALT1 first form (initial)
+       ~ 1844 ALT1 first form (medial)
+       ~ 1844 ALT1 first form (final)
        ~ 1844 180B second form (medial)
 1845   MONGOLIAN LETTER TODO I
+       ~ 1845 ALT1 first form (initial)
+       ~ 1845 ALT1 first form (medial)
+       ~ 1845 ALT1 first form (final)
        ~ 1845 180B second form (medial)
 1846   MONGOLIAN LETTER TODO O
+       ~ 1846 ALT1 first form (initial)
+       ~ 1846 ALT1 first form (medial)
+       ~ 1846 ALT1 first form (final)
        ~ 1846 180B second form (medial)
 1847   MONGOLIAN LETTER TODO U
+       ~ 1847 ALT1 first form (initial)
+       ~ 1847 ALT1 first form (medial)
+       ~ 1847 ALT1 first form (final)
        ~ 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 ALT1 first form (initial)
+       ~ 1848 ALT1 first form (medial)
+       ~ 1848 ALT1 first form (final)
        ~ 1848 180B second form (medial)
 1849   MONGOLIAN LETTER TODO UE
+       ~ 1849 ALT1 first form (initial)
+       ~ 1849 ALT1 first form (medial)
+       ~ 1849 ALT1 first form (final)
        ~ 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 ALT1 first form (initial)
+       ~ 184D ALT1 first form (medial)
+       ~ 184D ALT1 first form (final)
        ~ 184D 180B feminine form (initial)
        ~ 184D 180B feminine form (medial)
 184E   MONGOLIAN LETTER TODO GA
+       ~ 184E ALT1 first form (initial)
+       ~ 184E ALT1 first form (medial)
+       ~ 184E ALT1 first form (final)
        ~ 184E 180B second form (medial)
 184F   MONGOLIAN LETTER TODO MA
 1850   MONGOLIAN LETTER TODO TA
 185C   MONGOLIAN LETTER TODO DZA
 @              Sibe letters
 185D   MONGOLIAN LETTER SIBE E
+       ~ 185D ALT1 first form (initial)
+       ~ 185D ALT1 first form (medial)
+       ~ 185D ALT1 first form (final)
        ~ 185D 180B second form (medial)
        ~ 185D 180B second form (final)
 185E   MONGOLIAN LETTER SIBE I
+       ~ 185E ALT1 first form (initial)
+       ~ 185E ALT1 first form (medial)
+       ~ 185E ALT1 first form (final)
        ~ 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 ALT1 first form (initial)
+       ~ 1860 ALT1 first form (medial)
+       ~ 1860 ALT1 first form (final)
        ~ 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 ALT1 first form (initial)
+       ~ 1863 ALT1 first form (medial)
+       ~ 1863 ALT1 first form (final)
        ~ 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 ALT1 first form (initial)
+       ~ 1868 ALT1 first form (medial)
+       ~ 1868 ALT1 first form (final)
        ~ 1868 180B second form (initial)
        ~ 1868 180B second form (medial)
        ~ 1868 180C third form (medial)
 1869   MONGOLIAN LETTER SIBE DA
+       ~ 1869 ALT1 first form (initial)
+       ~ 1869 ALT1 first form (medial)
+       ~ 1869 ALT1 first form (final)
        ~ 1869 180B second form (initial)
        ~ 1869 180B second form (medial)
 186A   MONGOLIAN LETTER SIBE JA
 186D   MONGOLIAN LETTER SIBE HAA
 186E   MONGOLIAN LETTER SIBE TSA
 186F   MONGOLIAN LETTER SIBE ZA
+       ~ 186F ALT1 first form (initial)
+       ~ 186F ALT1 first form (medial)
+       ~ 186F ALT1 first form (final)
        ~ 186F 180B second form (initial)
        ~ 186F 180B second form (medial)
 1870   MONGOLIAN LETTER SIBE RAA
 1872   MONGOLIAN LETTER SIBE ZHA
 @              Manchu letters
 1873   MONGOLIAN LETTER MANCHU I
+       ~ 1873 ALT1 first form (initial)
+       ~ 1873 ALT1 first form (medial)
+       ~ 1873 ALT1 first form (final)
        ~ 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 ALT1 first form (initial)
+       ~ 1874 ALT1 first form (medial)
+       ~ 1874 ALT1 first form (final)
        ~ 1874 180B second form (medial)
        ~ 1874 180B feminine first final form (final)
        ~ 1874 180C feminine first medial form (medial)
        ~ 1874 180D feminine second medial form (medial)
 1875   MONGOLIAN LETTER MANCHU RA
 1876   MONGOLIAN LETTER MANCHU FA
+       ~ 1876 ALT1 first form (initial)
+       ~ 1876 ALT1 first form (medial)
+       ~ 1876 ALT1 first form (final)
        ~ 1876 180B second form (initial)
        ~ 1876 180B second form (medial)
 1877   MONGOLIAN LETTER MANCHU ZHA
        x (tibetan mark paluta - 0F85)
 1886   MONGOLIAN LETTER ALI GALI THREE BALUDA
 1887   MONGOLIAN LETTER ALI GALI A
+       ~ 1887 ALT1 first form (initial)
+       ~ 1887 ALT1 first form (medial)
+       ~ 1887 ALT1 first form (final)
        ~ 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 ALT1 first form (initial)
+       ~ 1888 ALT1 first form (medial)
+       ~ 1888 ALT1 first form (final)
        ~ 1888 180B second form (final)
 1889   MONGOLIAN LETTER ALI GALI KA
 188A   MONGOLIAN LETTER ALI GALI NGA
+       ~ 188A ALT1 first form (initial)
+       ~ 188A ALT1 first form (medial)
+       ~ 188A ALT1 first form (final)
        ~ 188A 180B second form (initial)
        ~ 188A 180B second form (medial)
 188B   MONGOLIAN LETTER ALI GALI CA
 18A8   MONGOLIAN LETTER MANCHU ALI GALI BHA
 18A9   MONGOLIAN LETTER ALI GALI DAGALGA
 18AA   MONGOLIAN LETTER MANCHU ALI GALI LHA
-@~     Standardized Variation Sequences
+@@@~   Contextual Variants and Standardized 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
 1BEE   BATAK VOWEL SIGN U
        = boruta
 1BEF   BATAK VOWEL SIGN U FOR SIMALUNGUN SA
-       = haboritan for simalungun sa 
+       = haboritan for simalungun sa
 @              Dependent consonant signs
 1BF0   BATAK CONSONANT SIGN NG
        = amisara
 @              Punctuation
 1C7E   OL CHIKI PUNCTUATION MUCAAD
 1C7F   OL CHIKI PUNCTUATION DOUBLE MUCAAD
+@@     1C80    Cyrillic Extended-C     1C8F
+@              Historic letter variants
+1C80   CYRILLIC SMALL LETTER ROUNDED VE
+1C81   CYRILLIC SMALL LETTER LONG-LEGGED DE
+1C82   CYRILLIC SMALL LETTER NARROW O
+1C83   CYRILLIC SMALL LETTER WIDE ES
+1C84   CYRILLIC SMALL LETTER TALL TE
+1C85   CYRILLIC SMALL LETTER THREE-LEGGED TE
+1C86   CYRILLIC SMALL LETTER TALL HARD SIGN
+1C87   CYRILLIC SMALL LETTER TALL YAT
+1C88   CYRILLIC SMALL LETTER UNBLENDED UK
 @@     1CC0    Sundanese Supplement    1CCF
 @              Punctuation
 1CC0   SUNDANESE PUNCTUATION BINDU SURYA
 1DF4   COMBINING LATIN SMALL LETTER U WITH DIAERESIS
 @              Diacritic for American lexicography
 1DF5   COMBINING UP TACK ABOVE
+@              Miscellaneous mark
+1DFB   COMBINING DELETION MARK
+       * used for "mhusaa" in Newa scribal tradition
 @              Double diacritic mark for UPA
 1DFC   COMBINING DOUBLE INVERTED BREVE BELOW
 @              Miscellaneous mark
        x (heavy eight teardrop-spoked propeller asterisk - 274B)
 @              Archaic punctuation
 2056   THREE DOT PUNCTUATION
+       x (georgian paragraph separator - 10FB)
 @              General punctuation
 2057   QUADRUPLE PRIME
        # 2032 2032 2032 2032
        x (cent sign - 00A2)
        x (latin capital letter c with stroke - 023B)
 20B6   LIVRE TOURNOIS SIGN
-       * used in France from 13th-18th centuries 
+       * used in France from 13th-18th centuries
 20B7   SPESMILO SIGN
        * historical international currency associated with Esperanto
 20B8   TENGE SIGN
 2120   SERVICE MARK
        # <super> 0053 004D
 2121   TELEPHONE SIGN
-       * typical forms for this symbol may use lower case, small caps or superscripted letter shapes
+       * typical forms for this symbol may use lowercase, small caps or superscripted letter shapes
        x (black telephone - 260E)
        x (telephone location sign - 2706)
        x (telephone receiver - 1F4DE)
 213A   ROTATED CAPITAL Q
        * a binding signature mark
 213B   FACSIMILE SIGN
-       * typical forms for this symbol may use lower case, small caps or superscripted letter shapes
+       * typical forms for this symbol may use lowercase, small caps or superscripted letter shapes
        x (telephone sign - 2121)
        x (fax machine - 1F4E0)
        # 0046 0041 0058
        * used in linguistics to indicate a null morpheme or phonological "zero"
        x (latin capital letter o with stroke - 00D8)
        x (diameter sign - 2300)
+       ~ 2205 FE00 zero with long diagonal stroke overlay form
 2206   INCREMENT
        = Laplace operator
        = forward difference
 @              Miscellaneous mathematical symbol
 221E   INFINITY
 @              Angles
-@+     Other angle symbols are found at 299B-29AF.
+@+             Other angle symbols are found at 299B-29AF.
 221F   RIGHT ANGLE
 2220   ANGLE
        x (acute angle - 299F)
 @              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)
 2328   KEYBOARD
        x (keyboard and mouse - 1F5A6)
        x (wired keyboard - 1F5AE)
+       ~ 2328 FE0E text style
+       ~ 2328 FE0F emoji style
 @              Deprecated angle brackets
 @+             These characters are deprecated and are strongly discouraged for mathematical use because of their canonical equivalence to CJK punctuation.
 2329   LEFT-POINTING ANGLE BRACKET
        x (return left - 2B90)
 23CF   EJECT SYMBOL
        * UI symbol to eject media
+       ~ 23CF FE0E text style
+       ~ 23CF FE0F emoji style
 @              Special character extension
 23D0   VERTICAL LINE EXTENSION
        * used for extension of arrows
 23EB   BLACK UP-POINTING DOUBLE TRIANGLE
 23EC   BLACK DOWN-POINTING DOUBLE TRIANGLE
 23ED   BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
+       ~ 23ED FE0E text style
+       ~ 23ED FE0F emoji style
 23EE   BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
+       ~ 23EE FE0E text style
+       ~ 23EE FE0F emoji style
 23EF   BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR
+       ~ 23EF FE0E text style
+       ~ 23EF FE0F emoji style
 23F0   ALARM CLOCK
        x (watch - 231A)
        x (clock face one oclock - 1F550)
        x (mantelpiece clock - 1F570)
 23F1   STOPWATCH
+       ~ 23F1 FE0E text style
+       ~ 23F1 FE0F emoji style
 23F2   TIMER CLOCK
+       ~ 23F2 FE0E text style
+       ~ 23F2 FE0F emoji style
 23F3   HOURGLASS WITH FLOWING SAND
        x (hourglass - 231B)
 23F4   BLACK MEDIUM LEFT-POINTING TRIANGLE
 23F8   DOUBLE VERTICAL BAR
        = pause
        x (double vertical line - 2016)
+       ~ 23F8 FE0E text style
+       ~ 23F8 FE0F emoji style
 23F9   BLACK SQUARE FOR STOP
        = stop
        x (black medium square - 25FC)
+       ~ 23F9 FE0E text style
+       ~ 23F9 FE0F emoji style
 23FA   BLACK CIRCLE FOR RECORD
        = record
        x (medium black circle - 26AB)
+       ~ 23FA FE0E text style
+       ~ 23FA FE0F emoji style
+@              Power symbols from ISO 7000:2012
+23FB   POWER SYMBOL
+@+     * IEC 5009 standby symbol
+@+     * IEEE 1621 power symbol
+23FC   POWER ON-OFF SYMBOL
+@+     * IEC 5010 power on-off symbol
+23FD   POWER ON SYMBOL
+       * use 2B58 for power off symbol
+       x (heavy circle - 2B58)
+@              Power symbol from IEEE 1621-2004
+23FE   POWER SLEEP SYMBOL
+       x (last quarter moon - 263E)
 @~     !
 @@     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.
        = unique asterisk
        x (bowtie - 22C8)
 @              MICR
-@+             These magnetic ink character recognition symbols are used on checks. The are derived from the E-13B font and are standardized in ISO 1004:1995. The Unicode character names include several misnomers.
+@+             These magnetic ink character recognition symbols are used on checks. They are derived from the E-13B font and are standardized in ISO 1004:1995. The Unicode character names include several misnomers.
 2446   OCR BRANCH BANK IDENTIFICATION
        = transit
 2447   OCR AMOUNT OF CHECK
 249B   NUMBER TWENTY FULL STOP
        # 0032 0030 002E
 @              Parenthesized Latin letters
-@+             See also the uppercase set starting at 1F100.
+@+             See also the uppercase set starting at 1F100. Parenthesized Latin letters do not have case mappings.
 249C   PARENTHESIZED LATIN SMALL LETTER A
        # 0028 0061 0029
 249D   PARENTHESIZED LATIN SMALL LETTER B
 2602   UMBRELLA
        = rainy weather
        x (closed umbrella - 1F302)
+       ~ 2602 FE0E text style
+       ~ 2602 FE0F emoji style
 2603   SNOWMAN
        = snowy weather
+       ~ 2603 FE0E text style
+       ~ 2603 FE0F emoji style
 2604   COMET
+       ~ 2604 FE0E text style
+       ~ 2604 FE0F emoji style
 2605   BLACK STAR
        x (star operator - 22C6)
 2606   WHITE STAR
 @              Miscellaneous symbols
 2618   SHAMROCK
        x (four leaf clover - 1F340)
+       ~ 2618 FE0E text style
+       ~ 2618 FE0F emoji style
 2619   REVERSED ROTATED FLORAL HEART BULLET
        * a binding signature mark
        x (rotated floral heart bullet - 2767)
 2620   SKULL AND CROSSBONES
        = poison
        x (black skull and crossbones - 1F571)
+       ~ 2620 FE0E text style
+       ~ 2620 FE0F emoji style
 2621   CAUTION SIGN
 2622   RADIOACTIVE SIGN
+       ~ 2622 FE0E text style
+       ~ 2622 FE0F emoji style
 2623   BIOHAZARD SIGN
+       ~ 2623 FE0E text style
+       ~ 2623 FE0F emoji style
 @              Medical and healing symbols
 2624   CADUCEUS
        x (staff of aesculapius - 2695)
 2625   ANKH
 @              Religious and political symbols
 2626   ORTHODOX CROSS
+       ~ 2626 FE0E text style
+       ~ 2626 FE0F emoji style
 2627   CHI RHO
        = Constantine's cross, Christogram
        x (coptic symbol khi ro - 2CE9)
 2629   CROSS OF JERUSALEM
        x (alchemical symbol for vinegar - 1F70A)
 262A   STAR AND CRESCENT
+       ~ 262A FE0E text style
+       ~ 262A FE0F emoji style
 262B   FARSI SYMBOL
        = symbol of iran (1.0)
 262C   ADI SHAKTI
        = Gurmukhi khanda
 262D   HAMMER AND SICKLE
 262E   PEACE SYMBOL
+       ~ 262E FE0E text style
+       ~ 262E FE0F emoji style
 262F   YIN YANG
        x (tibetan symbol nor bu nyis -khyil - 0FCA)
+       ~ 262F FE0E text style
+       ~ 262F FE0F emoji style
 @              Yijing trigram symbols
 2630   TRIGRAM FOR HEAVEN
        = qian2
 @              Miscellaneous symbol
 2638   WHEEL OF DHARMA
        x (helm symbol - 2388)
+       ~ 2638 FE0E text style
+       ~ 2638 FE0F emoji style
 @              Emoticons
 @+             Many other emoticons are encoded in the Emoticons block starting at 1F600.
 2639   WHITE FROWNING FACE
        x (slightly frowning face - 1F641)
+       ~ 2639 FE0E text style
+       ~ 2639 FE0F emoji style
 263A   WHITE SMILING FACE
        x (slightly smiling face - 1F642)
        = have a nice day!
        = alchemical symbol for silver
 263E   LAST QUARTER MOON
        = alchemical symbol for silver
+       x (power sleep symbol - 23FE)
        x (crescent moon - 1F319)
 263F   MERCURY
        = alchemical symbol for quicksilver
        = alchemical symbol for bismuth/tinglass
 2647   PLUTO
 @              Zodiacal symbols
+@+             See also Asian zodiacal symbols among the animal symbols in the range 1F400-1F418.
 2648   ARIES
        x (ram - 1F40F)
        ~ 2648 FE0E text style
        x (heavy black heart - 2764)
        x (heart with tip on the left - 1F394)
        x (blue heart - 1F499)
+       x (black heart - 1F5A4)
        ~ 2665 FE0E text style
        ~ 2665 FE0F emoji style
 2666   BLACK DIAMOND SUIT
        = mining, working day (in timetables)
        x (pick - 26CF)
        x (hammer and wrench - 1F6E0)
+       ~ 2692 FE0E text style
+       ~ 2692 FE0F emoji style
 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
+       x (fencer - 1F93A)
+       ~ 2694 FE0E text style
+       ~ 2694 FE0F emoji style
 2695   STAFF OF AESCULAPIUS
        = medical term
        * both inclined or upright renderings of this symbol are common
 2696   SCALES
        = legal term, jurisprudence
        x (libra - 264E)
+       ~ 2696 FE0E text style
+       ~ 2696 FE0F emoji style
 2697   ALEMBIC
        = chemical term, chemistry
        x (alchemical symbol for retort - 1F76D)
+       ~ 2697 FE0E text style
+       ~ 2697 FE0F emoji style
 2698   FLOWER
        = botanical term
        x (flower punctuation mark - 2055)
        x (tulip - 1F337)
 2699   GEAR
        = technology, tools
+       ~ 2699 FE0E text style
+       ~ 2699 FE0F emoji style
 269A   STAFF OF HERMES
        * signifies a commercial term or commerce
        * glyph shows a heraldic staff with a winged wheel
 269B   ATOM SYMBOL
        = nuclear installation (on maps)
+       ~ 269B FE0E text style
+       ~ 269B FE0F emoji style
 @              Miscellaneous symbols
 269C   FLEUR-DE-LIS
+       ~ 269C FE0E text style
+       ~ 269C FE0F emoji style
 269D   OUTLINED WHITE STAR
        * alternative form of the interlaced pentagram (a symbol of Morocco)
        x (right-handed interlaced pentagram - 26E5)
        x (three rays right - 1F5E7)
 @              Miscellaneous symbols
 26A0   WARNING SIGN
+       x (octagonal sign - 1F6D1)
        ~ 26A0 FE0E text style
        ~ 26A0 FE0F emoji style
 26A1   HIGH VOLTAGE SIGN
 26B0   COFFIN
        = buried (genealogy)
        x (white rectangle - 25AD)
+       ~ 26B0 FE0E text style
+       ~ 26B0 FE0F emoji style
 26B1   FUNERAL URN
        = cremated (genealogy)
+       ~ 26B1 FE0E text style
+       ~ 26B1 FE0F emoji style
 @              Gender symbol
 26B2   NEUTER
 @              Astrological signs
 26B8   BLACK MOON LILITH
 26B9   SEXTILE
        x (asterisk - 002A)
+       x (six pointed black star - 2736)
        x (alchemical symbol for sal-ammoniac - 1F739)
 26BA   SEMISEXTILE
        x (xor - 22BB)
 26C8   THUNDER CLOUD AND RAIN
        = thunderstorm
        x (cloud with lightning - 1F329)
+       ~ 26C8 FE0E text style
+       ~ 26C8 FE0F emoji style
 @              Game symbols from ARIB STD B24
 26C9   TURNED WHITE SHOGI PIECE
 26CA   TURNED BLACK SHOGI PIECE
        = under construction
        x (hammer and pick - 2692)
        x (construction sign - 1F6A7)
+       ~ 26CF FE0E text style
+       ~ 26CF FE0F emoji style
 26D0   CAR SLIDING
        = icy road
 26D1   HELMET WITH WHITE CROSS
        = maintenance
        x (construction worker - 1F477)
+       ~ 26D1 FE0E text style
+       ~ 26D1 FE0F emoji style
 26D2   CIRCLED CROSSING LANES
        = road closed
        x (circled times - 2297)
 26D3   CHAINS
        = tyre chains required
+       ~ 26D3 FE0E text style
+       ~ 26D3 FE0F emoji style
 26D4   NO ENTRY
        x (no entry sign - 1F6AB)
        ~ 26D4 FE0E text style
        x (hospital - 1F3E5)
 26E9   SHINTO SHRINE
        = torii
+       ~ 26E9 FE0E text style
+       ~ 26E9 FE0F emoji style
 26EA   CHURCH
        ~ 26EA FE0E text style
        ~ 26EA FE0F emoji style
 26F0   MOUNTAIN
        x (black up-pointing triangle - 25B2)
        x (snow capped mountain - 1F3D4)
+       ~ 26F0 FE0E text style
+       ~ 26F0 FE0F emoji style
 26F1   UMBRELLA ON GROUND
        = bathing beach
        x (umbrella - 2602)
        x (beach with umbrella - 1F3D6)
+       ~ 26F1 FE0E text style
+       ~ 26F1 FE0F emoji style
 26F2   FOUNTAIN
        = park
        ~ 26F2 FE0E text style
 26F4   FERRY
        = ferry boat terminal
        x (ship - 1F6A2)
+       ~ 26F4 FE0E text style
+       ~ 26F4 FE0F emoji style
 26F5   SAILBOAT
        = marina or yacht harbour
        x (rowboat - 1F6A3)
 26F7   SKIER
        = ski resort
        x (ski and ski boot - 1F3BF)
+       ~ 26F7 FE0E text style
+       ~ 26F7 FE0F emoji style
 26F8   ICE SKATE
        = ice skating rink
+       ~ 26F8 FE0E text style
+       ~ 26F8 FE0F emoji style
 26F9   PERSON WITH BALL
        = track and field, gymnasium
+       ~ 26F9 FE0E text style
+       ~ 26F9 FE0F emoji style
 26FA   TENT
        = camping site
        x (camping - 1F3D5)
        ~ 270C FE0F emoji style
 270D   WRITING HAND
        x (left writing hand - 1F58E)
+       ~ 270D FE0E text style
+       ~ 270D FE0F emoji style
 270E   LOWER RIGHT PENCIL
        x (lower left pencil - 1F589)
 270F   PENCIL
 271B   OPEN CENTRE CROSS
 271C   HEAVY OPEN CENTRE CROSS
 271D   LATIN CROSS
+       ~ 271D FE0E text style
+       ~ 271D FE0F emoji style
 271E   SHADOWED WHITE LATIN CROSS
        x (white latin cross - 1F546)
 271F   OUTLINED LATIN CROSS
 @              Stars and asterisks
 2721   STAR OF DAVID
        x (six pointed star with middle dot - 1F52F)
+       ~ 2721 FE0E text style
+       ~ 2721 FE0F emoji style
 2722   FOUR TEARDROP-SPOKED ASTERISK
 2723   FOUR BALLOON-SPOKED ASTERISK
 2724   HEAVY FOUR BALLOON-SPOKED ASTERISK
 2735   EIGHT POINTED PINWHEEL STAR
        x (heavy eight pointed pinwheel star - 1F7D1)
 2736   SIX POINTED BLACK STAR
-       = sextile
+       x (sextile - 26B9)
 2737   EIGHT POINTED RECTILINEAR BLACK STAR
        x (medium eight pointed black star - 1F7CE)
 2738   HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
 2762   HEAVY EXCLAMATION MARK ORNAMENT
        x (exclamation mark - 0021)
 2763   HEAVY HEART EXCLAMATION MARK ORNAMENT
+       ~ 2763 FE0E text style
+       ~ 2763 FE0F emoji style
 2764   HEAVY BLACK HEART
        x (black heart suit - 2665)
        ~ 2764 FE0E text style
 298A   Z NOTATION RIGHT BINDING BRACKET
 298B   LEFT SQUARE BRACKET WITH UNDERBAR
 298C   RIGHT SQUARE BRACKET WITH UNDERBAR
+@              Brackets with ticks
+@+             For bidirectional processing, the brackets with ticks are paired on the basis of their left/right symmetric glyphs, rather than on the basis of an open/close pairing inferred from code point order.
 298D   LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
 298E   RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
 298F   LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
 2990   RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+@              Brackets
 2991   LEFT ANGLE BRACKET WITH DOT
 2992   RIGHT ANGLE BRACKET WITH DOT
 2993   LEFT ARC LESS-THAN BRACKET
        x (bullseye - 25CE)
 2B58   HEAVY CIRCLE
        = town or village office
+       = power off symbol
+       x (power on symbol - 23FD)
        x (white circle - 25CB)
 2B59   HEAVY CIRCLED SALTIRE
        = police station
        x (n-ary circled times operator - 2A02)
 @              Intonation marks for Lithuanian dialectology
 2B5A   SLANTED NORTH ARROW WITH HOOKED HEAD
-       * increasing tone with falling trend at the end 
+       * increasing tone with falling trend at the end
 2B5B   BACKSLANTED SOUTH ARROW WITH HOOKED TAIL
        * sharp rise and fall in tone
 2B5C   SLANTED NORTH ARROW WITH HORIZONTAL TAIL
-       * continued rise in tone 
+       * continued rise in tone
 2B5D   BACKSLANTED SOUTH ARROW WITH HORIZONTAL TAIL
        * continued fall in tone
 2B5E   BENT ARROW POINTING DOWNWARDS THEN NORTH EAST
        * sharp fall in tone with rising trend at the end
 2B5F   SHORT BENT ARROW POINTING DOWNWARDS THEN NORTH EAST
-       * slight fall in tone with rising trend at the end 
+       * slight fall in tone with rising trend at the end
 @              Triangle-headed arrows
 2B60   LEFTWARDS TRIANGLE-HEADED ARROW
        x (leftwards arrow - 2190)
        # <super> 0056
 @              Additions for Shona
 2C7E   LATIN CAPITAL LETTER S WITH SWASH TAIL
-       * lower case is 023F
+       * lowercase is 023F
 2C7F   LATIN CAPITAL LETTER Z WITH SWASH TAIL
-       * lower case is 0240
+       * lowercase is 0240
 @@     2C80    Coptic  2CFF
 @+             Other Coptic letters derived from Demotic are encoded in the Greek and Coptic block.
 @              Bohairic Coptic letters
 2DF3   COMBINING CYRILLIC LETTER SHCHA
 2DF4   COMBINING CYRILLIC LETTER FITA
 2DF5   COMBINING CYRILLIC LETTER ES-TE
-       * preferred representation is the sequence: 2DED 2DEE 
+       * preferred representation is the sequence: 2DED 2DEE
 2DF6   COMBINING CYRILLIC LETTER A
        x (combining latin small letter a - 0363)
 2DF7   COMBINING CYRILLIC LETTER IE
        x (arabic comma - 060C)
 2E42   DOUBLE LOW-REVERSED-9 QUOTATION MARK
        x (double low-9 quotation mark - 201E)
+@              Dash
+2E43   DASH WITH LEFT UPTURN
+@              Miscellaneous punctuation
+2E44   DOUBLE SUSPENSION MARK
 @@     2E80    CJK Radicals Supplement 2EFF
 @              CJK radicals supplement
 2E80   CJK RADICAL REPEAT
        x (double prime - 2033)
 3004   JAPANESE INDUSTRIAL STANDARD SYMBOL
 3005   IDEOGRAPHIC ITERATION MARK
+       x (tangut iteration mark - 16FE0)
 3006   IDEOGRAPHIC CLOSING MARK
 3007   IDEOGRAPHIC NUMBER ZERO
        x (combining enclosing circle - 20DD)
@@ -23447,7 +23801,7 @@ A78E    LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
        * used to transcribe Toda
 @              Transliteration letter
 A78F   LATIN LETTER SINOLOGICAL DOT
-       * used for transliteration for Phags-Pa and phonetic transcription for Tangut
+       * used in transliteration of Phags-Pa and in phonetic transcription of Tangut
        x (middle dot - 00B7)
 @              Additional letters
 A790   LATIN CAPITAL LETTER N WITH DESCENDER
@@ -23500,6 +23854,10 @@ A7AC   LATIN CAPITAL LETTER SCRIPT G
        * lowercase is 0261
 A7AD   LATIN CAPITAL LETTER L WITH BELT
        * lowercase is 026C
+@              Letter for West African languages
+A7AE   LATIN CAPITAL LETTER SMALL CAPITAL I
+       * lowercase is 026A
+       * also used in Unifon
 @              Letters for Americanist orthographies
 A7B0   LATIN CAPITAL LETTER TURNED K
        * lowercase is 029E
@@ -23511,7 +23869,7 @@ A7B2    LATIN CAPITAL LETTER J WITH CROSSED-TAIL
        * lowercase is 029D
 @              Letter for German dialectology
 A7B3   LATIN CAPITAL LETTER CHI
-       * lower case is AB53
+       * lowercase is AB53
        x (greek capital letter chi - 03A7)
 @              Letters for African languages
 A7B4   LATIN CAPITAL LETTER BETA
@@ -23854,6 +24212,8 @@ A8C2    SAURASHTRA VOWEL SIGN OO
 A8C3   SAURASHTRA VOWEL SIGN AU
 @              Virama
 A8C4   SAURASHTRA SIGN VIRAMA
+@              Sign
+A8C5   SAURASHTRA SIGN CANDRABINDU
 @              Punctuation
 A8CE   SAURASHTRA DANDA
 A8CF   SAURASHTRA DOUBLE DANDA
@@ -24357,21 +24717,31 @@ AA5F  CHAM PUNCTUATION TRIPLE DANDA
 @@     AA60    Myanmar Extended-A      AA7F
 @              Khamti Shan consonants
 AA60   MYANMAR LETTER KHAMTI GA
+       ~ AA60 FE00 dotted form
 AA61   MYANMAR LETTER KHAMTI CA
+       ~ AA61 FE00 dotted form
 AA62   MYANMAR LETTER KHAMTI CHA
+       ~ AA62 FE00 dotted form
 AA63   MYANMAR LETTER KHAMTI JA
+       ~ AA63 FE00 dotted form
 AA64   MYANMAR LETTER KHAMTI JHA
+       ~ AA64 FE00 dotted form
 AA65   MYANMAR LETTER KHAMTI NYA
+       ~ AA65 FE00 dotted form
 AA66   MYANMAR LETTER KHAMTI TTA
+       ~ AA66 FE00 dotted form
 AA67   MYANMAR LETTER KHAMTI TTHA
 AA68   MYANMAR LETTER KHAMTI DDA
 AA69   MYANMAR LETTER KHAMTI DDHA
 AA6A   MYANMAR LETTER KHAMTI DHA
 AA6B   MYANMAR LETTER KHAMTI NA
+       ~ AA6B FE00 dotted form
 AA6C   MYANMAR LETTER KHAMTI SA
+       ~ AA6C FE00 dotted form
 AA6D   MYANMAR LETTER KHAMTI HA
 AA6E   MYANMAR LETTER KHAMTI HHA
 AA6F   MYANMAR LETTER KHAMTI FA
+       ~ AA6F FE00 dotted form
 AA70   MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
        x (myanmar modifier letter shan reduplication - A9E6)
 AA71   MYANMAR LETTER KHAMTI XA
@@ -24386,6 +24756,7 @@ AA77    MYANMAR SYMBOL AITON EXCLAMATION
 AA78   MYANMAR SYMBOL AITON ONE
 AA79   MYANMAR SYMBOL AITON TWO
 AA7A   MYANMAR LETTER AITON RA
+       ~ AA7A FE00 dotted form
 @              Pa'o Karen tone mark
 AA7B   MYANMAR SIGN PAO KAREN TONE
 @              Tai Laing tone marks
@@ -24394,6 +24765,7 @@ AA7D    MYANMAR SIGN TAI LAING TONE-5
 @              Shwe Palaung letters
 AA7E   MYANMAR LETTER SHWE PALAUNG CHA
 AA7F   MYANMAR LETTER SHWE PALAUNG SHA
+@~     !
 @@     AA80    Tai Viet        AADF
 @              Consonants
 AA80   TAI VIET LETTER LOW KO
@@ -26956,6 +27328,7 @@ FD3D    ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
        # <isolated> 0627 064B
 @              Punctuation
 @+             For legacy reasons, these parentheses do not mirror in bidirectional display and do not have the Bidi_Paired_Bracket property.
+@+             These parentheses also do not have compatibility decompositions and should not be considered presentation forms.
 FD3E   ORNATE LEFT PARENTHESIS
 FD3F   ORNATE RIGHT PARENTHESIS
 @              Ligatures (three elements)
@@ -27241,6 +27614,8 @@ FDF3    ARABIC LIGATURE AKBAR ISOLATED FORM
 FDF4   ARABIC LIGATURE MOHAMMAD ISOLATED FORM
        # <isolated> 0645 062D 0645 062F
 FDF5   ARABIC LIGATURE SALAM ISOLATED FORM
+       * common abbreviation for sallallahou alayhe wasallam
+       x (arabic ligature sallallahou alayhe wasallam - FDFA)
        # <isolated> 0635 0644 0639 0645
 FDF6   ARABIC LIGATURE RASOUL ISOLATED FORM
        # <isolated> 0631 0633 0648 0644
@@ -27258,6 +27633,7 @@ FDFB    ARABIC LIGATURE JALLAJALALOUHOU
 FDFC   RIAL SIGN
        # <isolated> 0631 06CC 0627 0644
 @              Symbol
+@+             The bismillah is treated as an atomic symbol, rather than as a word ligature. It has no decomposition.
 FDFD   ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
 @@     FE00    Variation Selectors     FE0F
 @              Variation selectors
@@ -27343,6 +27719,7 @@ FE2D    COMBINING CONJOINING MACRON BELOW
 @+             These are used for supralineation in Church Slavonic texts.
 FE2E   COMBINING CYRILLIC TITLO LEFT HALF
 FE2F   COMBINING CYRILLIC TITLO RIGHT HALF
+       x (combining cyrillic titlo - 0483)
 @@     FE30    CJK Compatibility Forms FE4F
 @              Glyphs for vertical variants
 FE30   PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
@@ -28498,6 +28875,7 @@ FFFF    <not a character>
 100E6  LINEAR B IDEOGRAM VESSEL B207
 100E7  LINEAR B IDEOGRAM VESSEL B208
 100E8  LINEAR B IDEOGRAM VESSEL B209
+       x (amphora - 1F3FA)
 100E9  LINEAR B IDEOGRAM VESSEL B210
 100EA  LINEAR B IDEOGRAM VESSEL B211
 100EB  LINEAR B IDEOGRAM VESSEL B212
@@ -28661,9 +29039,13 @@ FFFF   <not a character>
 10189  GREEK TRYBLION BASE SIGN
 1018A  GREEK ZERO SIGN
 1018B  GREEK ONE QUARTER SIGN
-@              Ancient Greek symbol
+@              Ancient Greek symbols
 1018C  GREEK SINUSOID SIGN
        * designates year
+1018D  GREEK INDICTION SIGN
+       * timekeeping
+1018E  NOMISMA SIGN
+       * currency sign and marker of weight
 @@     10190   Ancient Symbols 101CF
 @              Roman weights and measures
 10190  ROMAN SEXTANS SIGN
@@ -29240,6 +29622,81 @@ FFFF   <not a character>
 104A7  OSMANYA DIGIT SEVEN
 104A8  OSMANYA DIGIT EIGHT
 104A9  OSMANYA DIGIT NINE
+@@     104B0   Osage   104FF
+@              Uppercase letters
+104B0  OSAGE CAPITAL LETTER A
+104B1  OSAGE CAPITAL LETTER AI
+104B2  OSAGE CAPITAL LETTER AIN
+104B3  OSAGE CAPITAL LETTER AH
+104B4  OSAGE CAPITAL LETTER BRA
+104B5  OSAGE CAPITAL LETTER CHA
+104B6  OSAGE CAPITAL LETTER EHCHA
+104B7  OSAGE CAPITAL LETTER E
+104B8  OSAGE CAPITAL LETTER EIN
+104B9  OSAGE CAPITAL LETTER HA
+104BA  OSAGE CAPITAL LETTER HYA
+104BB  OSAGE CAPITAL LETTER I
+104BC  OSAGE CAPITAL LETTER KA
+104BD  OSAGE CAPITAL LETTER EHKA
+104BE  OSAGE CAPITAL LETTER KYA
+104BF  OSAGE CAPITAL LETTER LA
+104C0  OSAGE CAPITAL LETTER MA
+104C1  OSAGE CAPITAL LETTER NA
+104C2  OSAGE CAPITAL LETTER O
+104C3  OSAGE CAPITAL LETTER OIN
+104C4  OSAGE CAPITAL LETTER PA
+104C5  OSAGE CAPITAL LETTER EHPA
+104C6  OSAGE CAPITAL LETTER SA
+104C7  OSAGE CAPITAL LETTER SHA
+104C8  OSAGE CAPITAL LETTER TA
+104C9  OSAGE CAPITAL LETTER EHTA
+104CA  OSAGE CAPITAL LETTER TSA
+104CB  OSAGE CAPITAL LETTER EHTSA
+104CC  OSAGE CAPITAL LETTER TSHA
+104CD  OSAGE CAPITAL LETTER DHA
+104CE  OSAGE CAPITAL LETTER U
+104CF  OSAGE CAPITAL LETTER WA
+104D0  OSAGE CAPITAL LETTER KHA
+104D1  OSAGE CAPITAL LETTER GHA
+104D2  OSAGE CAPITAL LETTER ZA
+104D3  OSAGE CAPITAL LETTER ZHA
+@              Lowercase letters
+104D8  OSAGE SMALL LETTER A
+104D9  OSAGE SMALL LETTER AI
+104DA  OSAGE SMALL LETTER AIN
+104DB  OSAGE SMALL LETTER AH
+104DC  OSAGE SMALL LETTER BRA
+104DD  OSAGE SMALL LETTER CHA
+104DE  OSAGE SMALL LETTER EHCHA
+104DF  OSAGE SMALL LETTER E
+104E0  OSAGE SMALL LETTER EIN
+104E1  OSAGE SMALL LETTER HA
+104E2  OSAGE SMALL LETTER HYA
+104E3  OSAGE SMALL LETTER I
+104E4  OSAGE SMALL LETTER KA
+104E5  OSAGE SMALL LETTER EHKA
+104E6  OSAGE SMALL LETTER KYA
+104E7  OSAGE SMALL LETTER LA
+104E8  OSAGE SMALL LETTER MA
+104E9  OSAGE SMALL LETTER NA
+104EA  OSAGE SMALL LETTER O
+104EB  OSAGE SMALL LETTER OIN
+104EC  OSAGE SMALL LETTER PA
+104ED  OSAGE SMALL LETTER EHPA
+104EE  OSAGE SMALL LETTER SA
+104EF  OSAGE SMALL LETTER SHA
+104F0  OSAGE SMALL LETTER TA
+104F1  OSAGE SMALL LETTER EHTA
+104F2  OSAGE SMALL LETTER TSA
+104F3  OSAGE SMALL LETTER EHTSA
+104F4  OSAGE SMALL LETTER TSHA
+104F5  OSAGE SMALL LETTER DHA
+104F6  OSAGE SMALL LETTER U
+104F7  OSAGE SMALL LETTER WA
+104F8  OSAGE SMALL LETTER KHA
+104F9  OSAGE SMALL LETTER GHA
+104FA  OSAGE SMALL LETTER ZA
+104FB  OSAGE SMALL LETTER ZHA
 @@     10500   Elbasan 1052F
 @              Letters
 10500  ELBASAN LETTER A
@@ -29865,7 +30322,7 @@ FFFF    <not a character>
 1074F  LINEAR A SIGN A712 Y
        x (runic letter wunjo wynn w - 16B9)
 10750  LINEAR A SIGN A713 OMEGA
-       * used with 106A5 linear a sign a405-vas 
+       * used with 106A5 linear a sign a405-vas
 10751  LINEAR A SIGN A714 ABB
 10752  LINEAR A SIGN A715 BB
 10753  LINEAR A SIGN A717 DD
@@ -31309,7 +31766,7 @@ FFFF    <not a character>
 1106F  BRAHMI DIGIT NINE
 @              Number joiner
 1107F  BRAHMI NUMBER JOINER
-       * used to form ligatures between Brahmi numbers signifying multiplication
+       * a virama used to form ligatures between Brahmi numbers signifying multiplication
 @@     11080   Kaithi  110CF
 @              Various signs
 11080  KAITHI SIGN CANDRABINDU
@@ -31825,6 +32282,9 @@ FFFF    <not a character>
        * delimits larger chunks of text, such as paragraphs
        x (kaithi double section mark - 110BF)
 1123D  KHOJKI ABBREVIATION SIGN
+@              Sign
+1123E  KHOJKI SIGN SUKUN
+       * used for Arabic transliteration
 @@     11280   Multani 112AF
 @              Vowels
 11280  MULTANI LETTER A
@@ -31945,6 +32405,7 @@ FFFF    <not a character>
 112F8  KHUDAWADI DIGIT EIGHT
 112F9  KHUDAWADI DIGIT NINE
 @@     11300   Grantha 1137F
+@+             The Grantha script uses digits from the Tamil block.
 @              Various signs
 11300  GRANTHA SIGN COMBINING ANUSVARA ABOVE
        * used in Prakrit language Jain texts for the linguistic anusvara
@@ -32050,8 +32511,140 @@ FFFF  <not a character>
 11372  COMBINING GRANTHA LETTER NA
 11373  COMBINING GRANTHA LETTER VI
 11374  COMBINING GRANTHA LETTER PA
+@@     11400   Newa    1147F
+@+             This script is also known as Nepaalalipi, Nepalakshar, Newah Akhah, Pachumol, Prachalit, and other names.
+@              Independent vowels
+@+             Some of the vowels are only used for Sanskrit, and are not needed for Nepal Bhasa.
+11400  NEWA LETTER A
+11401  NEWA LETTER AA
+11402  NEWA LETTER I
+11403  NEWA LETTER II
+11404  NEWA LETTER U
+11405  NEWA LETTER UU
+11406  NEWA LETTER VOCALIC R
+11407  NEWA LETTER VOCALIC RR
+11408  NEWA LETTER VOCALIC L
+11409  NEWA LETTER VOCALIC LL
+1140A  NEWA LETTER E
+1140B  NEWA LETTER AI
+1140C  NEWA LETTER O
+1140D  NEWA LETTER AU
+@              Consonants
+@+             Six consonant letters involving ha are encoded for the representation of murmured resonants in Nepal Bhasa, a Tibeto-Burman language. Those letters are not used for the representation of Sanskrit in the Newa script.
+1140E  NEWA LETTER KA
+1140F  NEWA LETTER KHA
+11410  NEWA LETTER GA
+11411  NEWA LETTER GHA
+11412  NEWA LETTER NGA
+11413  NEWA LETTER NGHA
+       * murmured nasal for Nepal Bhasa language
+11414  NEWA LETTER CA
+11415  NEWA LETTER CHA
+11416  NEWA LETTER JA
+11417  NEWA LETTER JHA
+11418  NEWA LETTER NYA
+11419  NEWA LETTER NYHA
+       * murmured nasal for Nepal Bhasa language
+1141A  NEWA LETTER TTA
+1141B  NEWA LETTER TTHA
+1141C  NEWA LETTER DDA
+1141D  NEWA LETTER DDHA
+1141E  NEWA LETTER NNA
+1141F  NEWA LETTER TA
+11420  NEWA LETTER THA
+11421  NEWA LETTER DA
+11422  NEWA LETTER DHA
+11423  NEWA LETTER NA
+11424  NEWA LETTER NHA
+       * murmured nasal for Nepal Bhasa language
+11425  NEWA LETTER PA
+11426  NEWA LETTER PHA
+11427  NEWA LETTER BA
+11428  NEWA LETTER BHA
+11429  NEWA LETTER MA
+1142A  NEWA LETTER MHA
+       * murmured nasal for Nepal Bhasa language
+1142B  NEWA LETTER YA
+1142C  NEWA LETTER RA
+1142D  NEWA LETTER RHA
+       * murmured tap for Nepal Bhasa language
+1142E  NEWA LETTER LA
+1142F  NEWA LETTER LHA
+       * murmured lateral for Nepal Bhasa language
+11430  NEWA LETTER WA
+11431  NEWA LETTER SHA
+11432  NEWA LETTER SSA
+11433  NEWA LETTER SA
+11434  NEWA LETTER HA
+@              Dependent vowel signs
+@+             Some of the vowel signs are only used for Sanskrit, and are not needed for Nepal Bhasa.
+11435  NEWA VOWEL SIGN AA
+11436  NEWA VOWEL SIGN I
+11437  NEWA VOWEL SIGN II
+11438  NEWA VOWEL SIGN U
+11439  NEWA VOWEL SIGN UU
+1143A  NEWA VOWEL SIGN VOCALIC R
+1143B  NEWA VOWEL SIGN VOCALIC RR
+1143C  NEWA VOWEL SIGN VOCALIC L
+1143D  NEWA VOWEL SIGN VOCALIC LL
+1143E  NEWA VOWEL SIGN E
+1143F  NEWA VOWEL SIGN AI
+11440  NEWA VOWEL SIGN O
+11441  NEWA VOWEL SIGN AU
+@              Various signs
+11442  NEWA SIGN VIRAMA
+       = tutisaalaa
+11443  NEWA SIGN CANDRABINDU
+       = milaaphuti
+11444  NEWA SIGN ANUSVARA
+       = sinhaphuti
+11445  NEWA SIGN VISARGA
+       = liphuti
+11446  NEWA SIGN NUKTA
+11447  NEWA SIGN AVAGRAHA
+       = sulaa
+11448  NEWA SIGN FINAL ANUSVARA
+       = baadipu
+@              Invocation signs
+11449  NEWA OM
+1144A  NEWA SIDDHI
+@              Punctuation
+1144B  NEWA DANDA
+       = dipu
+1144C  NEWA DOUBLE DANDA
+1144D  NEWA COMMA
+       = jhaasu
+1144E  NEWA GAP FILLER
+       = thaayjaayekaa
+1144F  NEWA ABBREVIATION SIGN
+@              Digits
+11450  NEWA DIGIT ZERO
+       = guli
+11451  NEWA DIGIT ONE
+       = chi
+11452  NEWA DIGIT TWO
+       = nasi
+11453  NEWA DIGIT THREE
+       = swa
+11454  NEWA DIGIT FOUR
+       = pi
+11455  NEWA DIGIT FIVE
+       = njaa
+11456  NEWA DIGIT SIX
+       = khu
+11457  NEWA DIGIT SEVEN
+       = nhasa
+11458  NEWA DIGIT EIGHT
+       = cyaa
+11459  NEWA DIGIT NINE
+       = gu
+@              Various signs
+1145B  NEWA PLACEHOLDER MARK
+       = jaayekaa
+1145D  NEWA INSERTION SIGN
+       = tansaa
 @@     11480   Tirhuta 114DF
-@+             The Tirhuta script is also known by the names 'Mithilakshara' and 'Maithili'.
+@+             The Tirhuta script is also known by the names Mithilakshara and Maithili.
 @              Sign
 11480  TIRHUTA ANJI
 @              Independent vowels
@@ -32353,6 +32946,22 @@ FFFF   <not a character>
 11657  MODI DIGIT SEVEN
 11658  MODI DIGIT EIGHT
 11659  MODI DIGIT NINE
+@@     11660   Mongolian Supplement    1167F
+@              Punctuation
+11660  MONGOLIAN BIRGA WITH ORNAMENT
+       x (mongolian birga - 1800)
+11661  MONGOLIAN ROTATED BIRGA
+11662  MONGOLIAN DOUBLE BIRGA WITH ORNAMENT
+11663  MONGOLIAN TRIPLE BIRGA WITH ORNAMENT
+11664  MONGOLIAN BIRGA WITH DOUBLE ORNAMENT
+11665  MONGOLIAN ROTATED BIRGA WITH ORNAMENT
+11666  MONGOLIAN ROTATED BIRGA WITH DOUBLE ORNAMENT
+11667  MONGOLIAN INVERTED BIRGA
+11668  MONGOLIAN INVERTED BIRGA WITH DOUBLE ORNAMENT
+11669  MONGOLIAN SWIRL BIRGA
+1166A  MONGOLIAN SWIRL BIRGA WITH ORNAMENT
+1166B  MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT
+1166C  MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
 @@     11680   Takri   116CF
 @              Independent vowels
 11680  TAKRI LETTER A
@@ -32646,6 +33255,187 @@ FFFF  <not a character>
 11AF6  PAU CIN HAU LOW-FALLING TONE LONG FINAL
 11AF7  PAU CIN HAU LOW-FALLING TONE FINAL
 11AF8  PAU CIN HAU GLOTTAL STOP FINAL
+@@     11C00   Bhaiksuki       11C6F
+@              Independent vowels
+11C00  BHAIKSUKI LETTER A
+11C01  BHAIKSUKI LETTER AA
+11C02  BHAIKSUKI LETTER I
+11C03  BHAIKSUKI LETTER II
+11C04  BHAIKSUKI LETTER U
+11C05  BHAIKSUKI LETTER UU
+11C06  BHAIKSUKI LETTER VOCALIC R
+11C07  BHAIKSUKI LETTER VOCALIC RR
+11C08  BHAIKSUKI LETTER VOCALIC L
+11C0A  BHAIKSUKI LETTER E
+11C0B  BHAIKSUKI LETTER AI
+11C0C  BHAIKSUKI LETTER O
+11C0D  BHAIKSUKI LETTER AU
+@              Consonants
+11C0E  BHAIKSUKI LETTER KA
+11C0F  BHAIKSUKI LETTER KHA
+11C10  BHAIKSUKI LETTER GA
+11C11  BHAIKSUKI LETTER GHA
+11C12  BHAIKSUKI LETTER NGA
+11C13  BHAIKSUKI LETTER CA
+11C14  BHAIKSUKI LETTER CHA
+11C15  BHAIKSUKI LETTER JA
+11C16  BHAIKSUKI LETTER JHA
+11C17  BHAIKSUKI LETTER NYA
+11C18  BHAIKSUKI LETTER TTA
+11C19  BHAIKSUKI LETTER TTHA
+11C1A  BHAIKSUKI LETTER DDA
+11C1B  BHAIKSUKI LETTER DDHA
+11C1C  BHAIKSUKI LETTER NNA
+11C1D  BHAIKSUKI LETTER TA
+11C1E  BHAIKSUKI LETTER THA
+11C1F  BHAIKSUKI LETTER DA
+11C20  BHAIKSUKI LETTER DHA
+11C21  BHAIKSUKI LETTER NA
+11C22  BHAIKSUKI LETTER PA
+11C23  BHAIKSUKI LETTER PHA
+11C24  BHAIKSUKI LETTER BA
+11C25  BHAIKSUKI LETTER BHA
+11C26  BHAIKSUKI LETTER MA
+11C27  BHAIKSUKI LETTER YA
+11C28  BHAIKSUKI LETTER RA
+11C29  BHAIKSUKI LETTER LA
+11C2A  BHAIKSUKI LETTER VA
+11C2B  BHAIKSUKI LETTER SHA
+11C2C  BHAIKSUKI LETTER SSA
+11C2D  BHAIKSUKI LETTER SA
+11C2E  BHAIKSUKI LETTER HA
+@              Dependent vowel signs
+11C2F  BHAIKSUKI VOWEL SIGN AA
+11C30  BHAIKSUKI VOWEL SIGN I
+11C31  BHAIKSUKI VOWEL SIGN II
+11C32  BHAIKSUKI VOWEL SIGN U
+11C33  BHAIKSUKI VOWEL SIGN UU
+11C34  BHAIKSUKI VOWEL SIGN VOCALIC R
+11C35  BHAIKSUKI VOWEL SIGN VOCALIC RR
+11C36  BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38  BHAIKSUKI VOWEL SIGN E
+11C39  BHAIKSUKI VOWEL SIGN AI
+11C3A  BHAIKSUKI VOWEL SIGN O
+11C3B  BHAIKSUKI VOWEL SIGN AU
+@              Various signs
+11C3C  BHAIKSUKI SIGN CANDRABINDU
+11C3D  BHAIKSUKI SIGN ANUSVARA
+11C3E  BHAIKSUKI SIGN VISARGA
+11C3F  BHAIKSUKI SIGN VIRAMA
+11C40  BHAIKSUKI SIGN AVAGRAHA
+@              Punctuation
+11C41  BHAIKSUKI DANDA
+11C42  BHAIKSUKI DOUBLE DANDA
+11C43  BHAIKSUKI WORD SEPARATOR
+@              Gap fillers
+11C44  BHAIKSUKI GAP FILLER-1
+11C45  BHAIKSUKI GAP FILLER-2
+@              Digits
+11C50  BHAIKSUKI DIGIT ZERO
+11C51  BHAIKSUKI DIGIT ONE
+11C52  BHAIKSUKI DIGIT TWO
+11C53  BHAIKSUKI DIGIT THREE
+11C54  BHAIKSUKI DIGIT FOUR
+11C55  BHAIKSUKI DIGIT FIVE
+11C56  BHAIKSUKI DIGIT SIX
+11C57  BHAIKSUKI DIGIT SEVEN
+11C58  BHAIKSUKI DIGIT EIGHT
+11C59  BHAIKSUKI DIGIT NINE
+@              Numbers
+11C5A  BHAIKSUKI NUMBER ONE
+11C5B  BHAIKSUKI NUMBER TWO
+11C5C  BHAIKSUKI NUMBER THREE
+11C5D  BHAIKSUKI NUMBER FOUR
+11C5E  BHAIKSUKI NUMBER FIVE
+11C5F  BHAIKSUKI NUMBER SIX
+11C60  BHAIKSUKI NUMBER SEVEN
+11C61  BHAIKSUKI NUMBER EIGHT
+11C62  BHAIKSUKI NUMBER NINE
+11C63  BHAIKSUKI NUMBER TEN
+11C64  BHAIKSUKI NUMBER TWENTY
+11C65  BHAIKSUKI NUMBER THIRTY
+11C66  BHAIKSUKI NUMBER FORTY
+11C67  BHAIKSUKI NUMBER FIFTY
+11C68  BHAIKSUKI NUMBER SIXTY
+11C69  BHAIKSUKI NUMBER SEVENTY
+11C6A  BHAIKSUKI NUMBER EIGHTY
+11C6B  BHAIKSUKI NUMBER NINETY
+11C6C  BHAIKSUKI HUNDREDS UNIT MARK
+@@     11C70   Marchen 11CBF
+@              Punctuation
+11C70  MARCHEN HEAD MARK
+       x (left-facing svasti sign - 0FD6)
+11C71  MARCHEN MARK SHAD
+@              Letters
+11C72  MARCHEN LETTER KA
+11C73  MARCHEN LETTER KHA
+11C74  MARCHEN LETTER GA
+11C75  MARCHEN LETTER NGA
+11C76  MARCHEN LETTER CA
+11C77  MARCHEN LETTER CHA
+11C78  MARCHEN LETTER JA
+11C79  MARCHEN LETTER NYA
+11C7A  MARCHEN LETTER TA
+11C7B  MARCHEN LETTER THA
+11C7C  MARCHEN LETTER DA
+11C7D  MARCHEN LETTER NA
+11C7E  MARCHEN LETTER PA
+11C7F  MARCHEN LETTER PHA
+11C80  MARCHEN LETTER BA
+11C81  MARCHEN LETTER MA
+11C82  MARCHEN LETTER TSA
+11C83  MARCHEN LETTER TSHA
+11C84  MARCHEN LETTER DZA
+11C85  MARCHEN LETTER WA
+11C86  MARCHEN LETTER ZHA
+11C87  MARCHEN LETTER ZA
+11C88  MARCHEN LETTER -A
+11C89  MARCHEN LETTER YA
+11C8A  MARCHEN LETTER RA
+11C8B  MARCHEN LETTER LA
+11C8C  MARCHEN LETTER SHA
+11C8D  MARCHEN LETTER SA
+11C8E  MARCHEN LETTER HA
+11C8F  MARCHEN LETTER A
+@              Subjoined letters
+11C92  MARCHEN SUBJOINED LETTER KA
+11C93  MARCHEN SUBJOINED LETTER KHA
+11C94  MARCHEN SUBJOINED LETTER GA
+11C95  MARCHEN SUBJOINED LETTER NGA
+11C96  MARCHEN SUBJOINED LETTER CA
+11C97  MARCHEN SUBJOINED LETTER CHA
+11C98  MARCHEN SUBJOINED LETTER JA
+11C99  MARCHEN SUBJOINED LETTER NYA
+11C9A  MARCHEN SUBJOINED LETTER TA
+11C9B  MARCHEN SUBJOINED LETTER THA
+11C9C  MARCHEN SUBJOINED LETTER DA
+11C9D  MARCHEN SUBJOINED LETTER NA
+11C9E  MARCHEN SUBJOINED LETTER PA
+11C9F  MARCHEN SUBJOINED LETTER PHA
+11CA0  MARCHEN SUBJOINED LETTER BA
+11CA1  MARCHEN SUBJOINED LETTER MA
+11CA2  MARCHEN SUBJOINED LETTER TSA
+11CA3  MARCHEN SUBJOINED LETTER TSHA
+11CA4  MARCHEN SUBJOINED LETTER DZA
+11CA5  MARCHEN SUBJOINED LETTER WA
+11CA6  MARCHEN SUBJOINED LETTER ZHA
+11CA7  MARCHEN SUBJOINED LETTER ZA
+11CA9  MARCHEN SUBJOINED LETTER YA
+11CAA  MARCHEN SUBJOINED LETTER RA
+11CAB  MARCHEN SUBJOINED LETTER LA
+11CAC  MARCHEN SUBJOINED LETTER SHA
+11CAD  MARCHEN SUBJOINED LETTER SA
+11CAE  MARCHEN SUBJOINED LETTER HA
+11CAF  MARCHEN SUBJOINED LETTER A
+@              Dependent vowel signs
+11CB0  MARCHEN VOWEL SIGN AA
+11CB1  MARCHEN VOWEL SIGN I
+11CB2  MARCHEN VOWEL SIGN U
+11CB3  MARCHEN VOWEL SIGN E
+11CB4  MARCHEN VOWEL SIGN O
+@              Various signs
+11CB5  MARCHEN SIGN ANUSVARA
+11CB6  MARCHEN SIGN CANDRABINDU
 @@     12000   Cuneiform       123FF
 @              Signs
 12000  CUNEIFORM SIGN A
@@ -35714,7 +36504,7 @@ FFFF    <not a character>
 14537  ANATOLIAN HIEROGLYPH A276
        = frater2
 14538  ANATOLIAN HIEROGLYPH A277
-       =  iudex.la, iudex+la
+       = iudex.la, iudex+la
 14539  ANATOLIAN HIEROGLYPH A278
        = syllabic li
 1453A  ANATOLIAN HIEROGLYPH A279
@@ -37109,11 +37899,11 @@ FFFF  <not a character>
 16F04  MIAO LETTER MA
 16F05  MIAO LETTER MHA
 16F06  MIAO LETTER ARCHAIC MA
-       * used in Pollard's early orthography 
+       * used in Pollard's early orthography
 16F07  MIAO LETTER FA
 16F08  MIAO LETTER VA
 16F09  MIAO LETTER VFA
-       * used in Black Yi 
+       * used in Black Yi
 16F0A  MIAO LETTER TA
        * used for da in Dry Yi
 16F0B  MIAO LETTER DA
@@ -37128,15 +37918,15 @@ FFFF  <not a character>
 16F12  MIAO LETTER YI NNA
        * used in Hei Yi
 16F13  MIAO LETTER ARCHAIC NA
-       * used in Pollard's early orthography 
+       * used in Pollard's early orthography
 16F14  MIAO LETTER NNA
 16F15  MIAO LETTER NNHA
 16F16  MIAO LETTER LA
 16F17  MIAO LETTER LYA
-       * used in Black Yi 
+       * used in Black Yi
 16F18  MIAO LETTER LHA
 16F19  MIAO LETTER LHYA
-       * used in Black Yi 
+       * used in Black Yi
 16F1A  MIAO LETTER TLHA
 16F1B  MIAO LETTER DLHA
 16F1C  MIAO LETTER TLHYA
@@ -37151,7 +37941,7 @@ FFFF    <not a character>
 16F23  MIAO LETTER NGA
 16F24  MIAO LETTER NGHA
 16F25  MIAO LETTER ARCHAIC NGA
-       * used in Pollard's early orthography 
+       * used in Pollard's early orthography
 16F26  MIAO LETTER HA
 16F27  MIAO LETTER XA
 @+     * archaic character used in a post-1949 reformed orthography
@@ -37173,9 +37963,9 @@ FFFF    <not a character>
 16F33  MIAO LETTER SHA
 16F34  MIAO LETTER SSA
 16F35  MIAO LETTER ZHA
-       * used in Black Yi 
+       * used in Black Yi
 16F36  MIAO LETTER ZSHA
-       * used in Black Yi 
+       * used in Black Yi
 16F37  MIAO LETTER TSA
        * used for dza in Dry Yi
 16F38  MIAO LETTER DZA
@@ -37184,21 +37974,21 @@ FFFF  <not a character>
 16F3A  MIAO LETTER SA
 16F3B  MIAO LETTER ZA
 16F3C  MIAO LETTER ZSA
-       * used in Black Yi 
+       * used in Black Yi
 16F3D  MIAO LETTER ZZA
 16F3E  MIAO LETTER ZZSA
-       * used in Black Yi 
+       * used in Black Yi
 16F3F  MIAO LETTER ARCHAIC ZZA
-       * used in Pollard's early orthography 
+       * used in Pollard's early orthography
 16F40  MIAO LETTER ZZYA
-       * used in Black Yi 
+       * used in Black Yi
 16F41  MIAO LETTER ZZSYA
-       * used in Black Yi 
+       * used in Black Yi
 16F42  MIAO LETTER WA
 16F43  MIAO LETTER AH
        * glottal stop
 16F44  MIAO LETTER HHA
-       * used in Black Yi 
+       * used in Black Yi
 @              Modifiers
 16F50  MIAO LETTER NASALIZATION
 16F51  MIAO SIGN ASPIRATION
@@ -37209,7 +37999,7 @@ FFFF    <not a character>
 @              Vowels and finals
 16F54  MIAO VOWEL SIGN A
 16F55  MIAO VOWEL SIGN AA
-       * used in Eastern Lisu 
+       * used in Eastern Lisu
 16F56  MIAO VOWEL SIGN AHH
        * used in Gan Yi
 16F57  MIAO VOWEL SIGN AN
@@ -37232,7 +38022,7 @@ FFFF    <not a character>
 16F65  MIAO VOWEL SIGN IO
 16F66  MIAO VOWEL SIGN IE
 16F67  MIAO VOWEL SIGN II
-       * used in Eastern Lisu 
+       * used in Eastern Lisu
 16F68  MIAO VOWEL SIGN IU
 16F69  MIAO VOWEL SIGN ING
        * also used for in
@@ -37242,20 +38032,20 @@ FFFF  <not a character>
 16F6D  MIAO VOWEL SIGN UANG
        * also used for uaw
 16F6E  MIAO VOWEL SIGN UU
-       * used in Eastern Lisu 
+       * used in Eastern Lisu
 16F6F  MIAO VOWEL SIGN UEI
 16F70  MIAO VOWEL SIGN UNG
 16F71  MIAO VOWEL SIGN Y
 16F72  MIAO VOWEL SIGN YI
 16F73  MIAO VOWEL SIGN AE
 16F74  MIAO VOWEL SIGN AEE
-       * used in Eastern Lisu 
+       * used in Eastern Lisu
 16F75  MIAO VOWEL SIGN ERR
 16F76  MIAO VOWEL SIGN ROUNDED ERR
-       * used in Eastern Lisu 
+       * used in Eastern Lisu
 16F77  MIAO VOWEL SIGN ER
 16F78  MIAO VOWEL SIGN ROUNDED ER
-       * used in Eastern Lisu 
+       * used in Eastern Lisu
 16F79  MIAO VOWEL SIGN AI
 16F7A  MIAO VOWEL SIGN EI
 16F7B  MIAO VOWEL SIGN AU
@@ -37278,13 +38068,789 @@ FFFF <not a character>
 16F98  MIAO LETTER TONE-7
 16F99  MIAO LETTER TONE-8
 @              Archaic baseline tone marks
-@+             These are archaic characters used in a post-1949 reformed orthography. 
+@+             These are archaic characters used in a post-1949 reformed orthography.
 16F9A  MIAO LETTER REFORMED TONE-1
 16F9B  MIAO LETTER REFORMED TONE-2
 16F9C  MIAO LETTER REFORMED TONE-4
 16F9D  MIAO LETTER REFORMED TONE-5
 16F9E  MIAO LETTER REFORMED TONE-6
 16F9F  MIAO LETTER REFORMED TONE-8
+@@     16FE0   Ideographic Symbols and Punctuation     16FFF
+@              Tangut mark
+16FE0  TANGUT ITERATION MARK
+       x (ideographic iteration mark - 3005)
+@@     17000   Tangut  187EC
+@@     18800   Tangut Components       18AFF
+@+             This is a superset of components used in various Tangut sources. Indexes of components (001..755) used for Tangut ideographs are shown in the Tangut block.
+@              One-stroke components
+18800  TANGUT COMPONENT-001
+18801  TANGUT COMPONENT-002
+18802  TANGUT COMPONENT-003
+18803  TANGUT COMPONENT-004
+18804  TANGUT COMPONENT-005
+18805  TANGUT COMPONENT-006
+18806  TANGUT COMPONENT-007
+18807  TANGUT COMPONENT-008
+18808  TANGUT COMPONENT-009
+18809  TANGUT COMPONENT-010
+@              Two-stroke components
+1880A  TANGUT COMPONENT-011
+1880B  TANGUT COMPONENT-012
+1880C  TANGUT COMPONENT-013
+1880D  TANGUT COMPONENT-014
+1880E  TANGUT COMPONENT-015
+1880F  TANGUT COMPONENT-016
+18810  TANGUT COMPONENT-017
+18811  TANGUT COMPONENT-018
+18812  TANGUT COMPONENT-019
+18813  TANGUT COMPONENT-020
+18814  TANGUT COMPONENT-021
+18815  TANGUT COMPONENT-022
+18816  TANGUT COMPONENT-023
+18817  TANGUT COMPONENT-024
+18818  TANGUT COMPONENT-025
+18819  TANGUT COMPONENT-026
+1881A  TANGUT COMPONENT-027
+1881B  TANGUT COMPONENT-028
+1881C  TANGUT COMPONENT-029
+1881D  TANGUT COMPONENT-030
+1881E  TANGUT COMPONENT-031
+1881F  TANGUT COMPONENT-032
+18820  TANGUT COMPONENT-033
+18821  TANGUT COMPONENT-034
+18822  TANGUT COMPONENT-035
+18823  TANGUT COMPONENT-036
+18824  TANGUT COMPONENT-037
+18825  TANGUT COMPONENT-038
+@              Three-stroke components
+18826  TANGUT COMPONENT-039
+18827  TANGUT COMPONENT-040
+18828  TANGUT COMPONENT-041
+18829  TANGUT COMPONENT-042
+1882A  TANGUT COMPONENT-043
+1882B  TANGUT COMPONENT-044
+1882C  TANGUT COMPONENT-045
+1882D  TANGUT COMPONENT-046
+1882E  TANGUT COMPONENT-047
+1882F  TANGUT COMPONENT-048
+18830  TANGUT COMPONENT-049
+18831  TANGUT COMPONENT-050
+18832  TANGUT COMPONENT-051
+18833  TANGUT COMPONENT-052
+18834  TANGUT COMPONENT-053
+18835  TANGUT COMPONENT-054
+18836  TANGUT COMPONENT-055
+18837  TANGUT COMPONENT-056
+18838  TANGUT COMPONENT-057
+18839  TANGUT COMPONENT-058
+1883A  TANGUT COMPONENT-059
+1883B  TANGUT COMPONENT-060
+1883C  TANGUT COMPONENT-061
+1883D  TANGUT COMPONENT-062
+1883E  TANGUT COMPONENT-063
+1883F  TANGUT COMPONENT-064
+18840  TANGUT COMPONENT-065
+18841  TANGUT COMPONENT-066
+18842  TANGUT COMPONENT-067
+18843  TANGUT COMPONENT-068
+18844  TANGUT COMPONENT-069
+18845  TANGUT COMPONENT-070
+18846  TANGUT COMPONENT-071
+18847  TANGUT COMPONENT-072
+18848  TANGUT COMPONENT-073
+18849  TANGUT COMPONENT-074
+1884A  TANGUT COMPONENT-075
+1884B  TANGUT COMPONENT-076
+1884C  TANGUT COMPONENT-077
+1884D  TANGUT COMPONENT-078
+1884E  TANGUT COMPONENT-079
+1884F  TANGUT COMPONENT-080
+18850  TANGUT COMPONENT-081
+18851  TANGUT COMPONENT-082
+18852  TANGUT COMPONENT-083
+18853  TANGUT COMPONENT-084
+18854  TANGUT COMPONENT-085
+18855  TANGUT COMPONENT-086
+18856  TANGUT COMPONENT-087
+18857  TANGUT COMPONENT-088
+18858  TANGUT COMPONENT-089
+18859  TANGUT COMPONENT-090
+1885A  TANGUT COMPONENT-091
+1885B  TANGUT COMPONENT-092
+1885C  TANGUT COMPONENT-093
+1885D  TANGUT COMPONENT-094
+1885E  TANGUT COMPONENT-095
+1885F  TANGUT COMPONENT-096
+@              Four-stroke components
+18860  TANGUT COMPONENT-097
+18861  TANGUT COMPONENT-098
+18862  TANGUT COMPONENT-099
+18863  TANGUT COMPONENT-100
+18864  TANGUT COMPONENT-101
+18865  TANGUT COMPONENT-102
+18866  TANGUT COMPONENT-103
+18867  TANGUT COMPONENT-104
+18868  TANGUT COMPONENT-105
+18869  TANGUT COMPONENT-106
+1886A  TANGUT COMPONENT-107
+1886B  TANGUT COMPONENT-108
+1886C  TANGUT COMPONENT-109
+1886D  TANGUT COMPONENT-110
+1886E  TANGUT COMPONENT-111
+1886F  TANGUT COMPONENT-112
+18870  TANGUT COMPONENT-113
+18871  TANGUT COMPONENT-114
+18872  TANGUT COMPONENT-115
+18873  TANGUT COMPONENT-116
+18874  TANGUT COMPONENT-117
+18875  TANGUT COMPONENT-118
+18876  TANGUT COMPONENT-119
+18877  TANGUT COMPONENT-120
+18878  TANGUT COMPONENT-121
+18879  TANGUT COMPONENT-122
+1887A  TANGUT COMPONENT-123
+1887B  TANGUT COMPONENT-124
+1887C  TANGUT COMPONENT-125
+1887D  TANGUT COMPONENT-126
+1887E  TANGUT COMPONENT-127
+1887F  TANGUT COMPONENT-128
+18880  TANGUT COMPONENT-129
+18881  TANGUT COMPONENT-130
+18882  TANGUT COMPONENT-131
+18883  TANGUT COMPONENT-132
+18884  TANGUT COMPONENT-133
+18885  TANGUT COMPONENT-134
+18886  TANGUT COMPONENT-135
+18887  TANGUT COMPONENT-136
+18888  TANGUT COMPONENT-137
+18889  TANGUT COMPONENT-138
+1888A  TANGUT COMPONENT-139
+1888B  TANGUT COMPONENT-140
+1888C  TANGUT COMPONENT-141
+1888D  TANGUT COMPONENT-142
+1888E  TANGUT COMPONENT-143
+1888F  TANGUT COMPONENT-144
+18890  TANGUT COMPONENT-145
+18891  TANGUT COMPONENT-146
+18892  TANGUT COMPONENT-147
+18893  TANGUT COMPONENT-148
+18894  TANGUT COMPONENT-149
+18895  TANGUT COMPONENT-150
+18896  TANGUT COMPONENT-151
+18897  TANGUT COMPONENT-152
+18898  TANGUT COMPONENT-153
+18899  TANGUT COMPONENT-154
+1889A  TANGUT COMPONENT-155
+1889B  TANGUT COMPONENT-156
+1889C  TANGUT COMPONENT-157
+1889D  TANGUT COMPONENT-158
+1889E  TANGUT COMPONENT-159
+1889F  TANGUT COMPONENT-160
+188A0  TANGUT COMPONENT-161
+188A1  TANGUT COMPONENT-162
+188A2  TANGUT COMPONENT-163
+188A3  TANGUT COMPONENT-164
+188A4  TANGUT COMPONENT-165
+188A5  TANGUT COMPONENT-166
+188A6  TANGUT COMPONENT-167
+188A7  TANGUT COMPONENT-168
+188A8  TANGUT COMPONENT-169
+188A9  TANGUT COMPONENT-170
+188AA  TANGUT COMPONENT-171
+188AB  TANGUT COMPONENT-172
+188AC  TANGUT COMPONENT-173
+188AD  TANGUT COMPONENT-174
+188AE  TANGUT COMPONENT-175
+188AF  TANGUT COMPONENT-176
+188B0  TANGUT COMPONENT-177
+188B1  TANGUT COMPONENT-178
+188B2  TANGUT COMPONENT-179
+188B3  TANGUT COMPONENT-180
+188B4  TANGUT COMPONENT-181
+188B5  TANGUT COMPONENT-182
+188B6  TANGUT COMPONENT-183
+188B7  TANGUT COMPONENT-184
+188B8  TANGUT COMPONENT-185
+188B9  TANGUT COMPONENT-186
+188BA  TANGUT COMPONENT-187
+188BB  TANGUT COMPONENT-188
+188BC  TANGUT COMPONENT-189
+188BD  TANGUT COMPONENT-190
+188BE  TANGUT COMPONENT-191
+188BF  TANGUT COMPONENT-192
+188C0  TANGUT COMPONENT-193
+188C1  TANGUT COMPONENT-194
+188C2  TANGUT COMPONENT-195
+188C3  TANGUT COMPONENT-196
+188C4  TANGUT COMPONENT-197
+188C5  TANGUT COMPONENT-198
+188C6  TANGUT COMPONENT-199
+188C7  TANGUT COMPONENT-200
+188C8  TANGUT COMPONENT-201
+188C9  TANGUT COMPONENT-202
+188CA  TANGUT COMPONENT-203
+188CB  TANGUT COMPONENT-204
+@              Five-stroke components
+188CC  TANGUT COMPONENT-205
+188CD  TANGUT COMPONENT-206
+188CE  TANGUT COMPONENT-207
+188CF  TANGUT COMPONENT-208
+188D0  TANGUT COMPONENT-209
+188D1  TANGUT COMPONENT-210
+188D2  TANGUT COMPONENT-211
+188D3  TANGUT COMPONENT-212
+188D4  TANGUT COMPONENT-213
+188D5  TANGUT COMPONENT-214
+188D6  TANGUT COMPONENT-215
+188D7  TANGUT COMPONENT-216
+188D8  TANGUT COMPONENT-217
+188D9  TANGUT COMPONENT-218
+188DA  TANGUT COMPONENT-219
+188DB  TANGUT COMPONENT-220
+188DC  TANGUT COMPONENT-221
+188DD  TANGUT COMPONENT-222
+188DE  TANGUT COMPONENT-223
+188DF  TANGUT COMPONENT-224
+188E0  TANGUT COMPONENT-225
+188E1  TANGUT COMPONENT-226
+188E2  TANGUT COMPONENT-227
+188E3  TANGUT COMPONENT-228
+188E4  TANGUT COMPONENT-229
+188E5  TANGUT COMPONENT-230
+188E6  TANGUT COMPONENT-231
+188E7  TANGUT COMPONENT-232
+188E8  TANGUT COMPONENT-233
+188E9  TANGUT COMPONENT-234
+188EA  TANGUT COMPONENT-235
+188EB  TANGUT COMPONENT-236
+188EC  TANGUT COMPONENT-237
+188ED  TANGUT COMPONENT-238
+188EE  TANGUT COMPONENT-239
+188EF  TANGUT COMPONENT-240
+188F0  TANGUT COMPONENT-241
+188F1  TANGUT COMPONENT-242
+188F2  TANGUT COMPONENT-243
+188F3  TANGUT COMPONENT-244
+188F4  TANGUT COMPONENT-245
+188F5  TANGUT COMPONENT-246
+188F6  TANGUT COMPONENT-247
+188F7  TANGUT COMPONENT-248
+188F8  TANGUT COMPONENT-249
+188F9  TANGUT COMPONENT-250
+188FA  TANGUT COMPONENT-251
+188FB  TANGUT COMPONENT-252
+188FC  TANGUT COMPONENT-253
+188FD  TANGUT COMPONENT-254
+188FE  TANGUT COMPONENT-255
+188FF  TANGUT COMPONENT-256
+18900  TANGUT COMPONENT-257
+18901  TANGUT COMPONENT-258
+18902  TANGUT COMPONENT-259
+18903  TANGUT COMPONENT-260
+18904  TANGUT COMPONENT-261
+18905  TANGUT COMPONENT-262
+18906  TANGUT COMPONENT-263
+18907  TANGUT COMPONENT-264
+18908  TANGUT COMPONENT-265
+18909  TANGUT COMPONENT-266
+1890A  TANGUT COMPONENT-267
+1890B  TANGUT COMPONENT-268
+1890C  TANGUT COMPONENT-269
+1890D  TANGUT COMPONENT-270
+1890E  TANGUT COMPONENT-271
+1890F  TANGUT COMPONENT-272
+18910  TANGUT COMPONENT-273
+18911  TANGUT COMPONENT-274
+18912  TANGUT COMPONENT-275
+18913  TANGUT COMPONENT-276
+18914  TANGUT COMPONENT-277
+18915  TANGUT COMPONENT-278
+18916  TANGUT COMPONENT-279
+18917  TANGUT COMPONENT-280
+18918  TANGUT COMPONENT-281
+18919  TANGUT COMPONENT-282
+1891A  TANGUT COMPONENT-283
+1891B  TANGUT COMPONENT-284
+1891C  TANGUT COMPONENT-285
+1891D  TANGUT COMPONENT-286
+1891E  TANGUT COMPONENT-287
+1891F  TANGUT COMPONENT-288
+18920  TANGUT COMPONENT-289
+18921  TANGUT COMPONENT-290
+18922  TANGUT COMPONENT-291
+18923  TANGUT COMPONENT-292
+18924  TANGUT COMPONENT-293
+18925  TANGUT COMPONENT-294
+18926  TANGUT COMPONENT-295
+18927  TANGUT COMPONENT-296
+18928  TANGUT COMPONENT-297
+18929  TANGUT COMPONENT-298
+1892A  TANGUT COMPONENT-299
+1892B  TANGUT COMPONENT-300
+1892C  TANGUT COMPONENT-301
+1892D  TANGUT COMPONENT-302
+1892E  TANGUT COMPONENT-303
+1892F  TANGUT COMPONENT-304
+18930  TANGUT COMPONENT-305
+18931  TANGUT COMPONENT-306
+18932  TANGUT COMPONENT-307
+18933  TANGUT COMPONENT-308
+18934  TANGUT COMPONENT-309
+18935  TANGUT COMPONENT-310
+18936  TANGUT COMPONENT-311
+18937  TANGUT COMPONENT-312
+18938  TANGUT COMPONENT-313
+18939  TANGUT COMPONENT-314
+1893A  TANGUT COMPONENT-315
+1893B  TANGUT COMPONENT-316
+1893C  TANGUT COMPONENT-317
+1893D  TANGUT COMPONENT-318
+1893E  TANGUT COMPONENT-319
+1893F  TANGUT COMPONENT-320
+18940  TANGUT COMPONENT-321
+18941  TANGUT COMPONENT-322
+18942  TANGUT COMPONENT-323
+18943  TANGUT COMPONENT-324
+18944  TANGUT COMPONENT-325
+18945  TANGUT COMPONENT-326
+18946  TANGUT COMPONENT-327
+18947  TANGUT COMPONENT-328
+18948  TANGUT COMPONENT-329
+18949  TANGUT COMPONENT-330
+1894A  TANGUT COMPONENT-331
+1894B  TANGUT COMPONENT-332
+1894C  TANGUT COMPONENT-333
+1894D  TANGUT COMPONENT-334
+1894E  TANGUT COMPONENT-335
+1894F  TANGUT COMPONENT-336
+18950  TANGUT COMPONENT-337
+18951  TANGUT COMPONENT-338
+18952  TANGUT COMPONENT-339
+18953  TANGUT COMPONENT-340
+18954  TANGUT COMPONENT-341
+18955  TANGUT COMPONENT-342
+18956  TANGUT COMPONENT-343
+18957  TANGUT COMPONENT-344
+18958  TANGUT COMPONENT-345
+@              Six-stroke components
+18959  TANGUT COMPONENT-346
+1895A  TANGUT COMPONENT-347
+1895B  TANGUT COMPONENT-348
+1895C  TANGUT COMPONENT-349
+1895D  TANGUT COMPONENT-350
+1895E  TANGUT COMPONENT-351
+1895F  TANGUT COMPONENT-352
+18960  TANGUT COMPONENT-353
+18961  TANGUT COMPONENT-354
+18962  TANGUT COMPONENT-355
+18963  TANGUT COMPONENT-356
+18964  TANGUT COMPONENT-357
+18965  TANGUT COMPONENT-358
+18966  TANGUT COMPONENT-359
+18967  TANGUT COMPONENT-360
+18968  TANGUT COMPONENT-361
+18969  TANGUT COMPONENT-362
+1896A  TANGUT COMPONENT-363
+1896B  TANGUT COMPONENT-364
+1896C  TANGUT COMPONENT-365
+1896D  TANGUT COMPONENT-366
+1896E  TANGUT COMPONENT-367
+1896F  TANGUT COMPONENT-368
+18970  TANGUT COMPONENT-369
+18971  TANGUT COMPONENT-370
+18972  TANGUT COMPONENT-371
+18973  TANGUT COMPONENT-372
+18974  TANGUT COMPONENT-373
+18975  TANGUT COMPONENT-374
+18976  TANGUT COMPONENT-375
+18977  TANGUT COMPONENT-376
+18978  TANGUT COMPONENT-377
+18979  TANGUT COMPONENT-378
+1897A  TANGUT COMPONENT-379
+1897B  TANGUT COMPONENT-380
+1897C  TANGUT COMPONENT-381
+1897D  TANGUT COMPONENT-382
+1897E  TANGUT COMPONENT-383
+1897F  TANGUT COMPONENT-384
+18980  TANGUT COMPONENT-385
+18981  TANGUT COMPONENT-386
+18982  TANGUT COMPONENT-387
+18983  TANGUT COMPONENT-388
+18984  TANGUT COMPONENT-389
+18985  TANGUT COMPONENT-390
+18986  TANGUT COMPONENT-391
+18987  TANGUT COMPONENT-392
+18988  TANGUT COMPONENT-393
+18989  TANGUT COMPONENT-394
+1898A  TANGUT COMPONENT-395
+1898B  TANGUT COMPONENT-396
+1898C  TANGUT COMPONENT-397
+1898D  TANGUT COMPONENT-398
+1898E  TANGUT COMPONENT-399
+1898F  TANGUT COMPONENT-400
+18990  TANGUT COMPONENT-401
+18991  TANGUT COMPONENT-402
+18992  TANGUT COMPONENT-403
+18993  TANGUT COMPONENT-404
+18994  TANGUT COMPONENT-405
+18995  TANGUT COMPONENT-406
+18996  TANGUT COMPONENT-407
+18997  TANGUT COMPONENT-408
+18998  TANGUT COMPONENT-409
+18999  TANGUT COMPONENT-410
+1899A  TANGUT COMPONENT-411
+1899B  TANGUT COMPONENT-412
+1899C  TANGUT COMPONENT-413
+1899D  TANGUT COMPONENT-414
+1899E  TANGUT COMPONENT-415
+1899F  TANGUT COMPONENT-416
+189A0  TANGUT COMPONENT-417
+189A1  TANGUT COMPONENT-418
+189A2  TANGUT COMPONENT-419
+189A3  TANGUT COMPONENT-420
+189A4  TANGUT COMPONENT-421
+189A5  TANGUT COMPONENT-422
+189A6  TANGUT COMPONENT-423
+189A7  TANGUT COMPONENT-424
+189A8  TANGUT COMPONENT-425
+189A9  TANGUT COMPONENT-426
+189AA  TANGUT COMPONENT-427
+189AB  TANGUT COMPONENT-428
+189AC  TANGUT COMPONENT-429
+189AD  TANGUT COMPONENT-430
+189AE  TANGUT COMPONENT-431
+189AF  TANGUT COMPONENT-432
+189B0  TANGUT COMPONENT-433
+189B1  TANGUT COMPONENT-434
+189B2  TANGUT COMPONENT-435
+189B3  TANGUT COMPONENT-436
+189B4  TANGUT COMPONENT-437
+189B5  TANGUT COMPONENT-438
+189B6  TANGUT COMPONENT-439
+189B7  TANGUT COMPONENT-440
+189B8  TANGUT COMPONENT-441
+189B9  TANGUT COMPONENT-442
+189BA  TANGUT COMPONENT-443
+189BB  TANGUT COMPONENT-444
+189BC  TANGUT COMPONENT-445
+189BD  TANGUT COMPONENT-446
+189BE  TANGUT COMPONENT-447
+189BF  TANGUT COMPONENT-448
+189C0  TANGUT COMPONENT-449
+189C1  TANGUT COMPONENT-450
+189C2  TANGUT COMPONENT-451
+189C3  TANGUT COMPONENT-452
+189C4  TANGUT COMPONENT-453
+189C5  TANGUT COMPONENT-454
+189C6  TANGUT COMPONENT-455
+189C7  TANGUT COMPONENT-456
+189C8  TANGUT COMPONENT-457
+189C9  TANGUT COMPONENT-458
+189CA  TANGUT COMPONENT-459
+189CB  TANGUT COMPONENT-460
+189CC  TANGUT COMPONENT-461
+189CD  TANGUT COMPONENT-462
+189CE  TANGUT COMPONENT-463
+189CF  TANGUT COMPONENT-464
+189D0  TANGUT COMPONENT-465
+189D1  TANGUT COMPONENT-466
+189D2  TANGUT COMPONENT-467
+189D3  TANGUT COMPONENT-468
+189D4  TANGUT COMPONENT-469
+189D5  TANGUT COMPONENT-470
+189D6  TANGUT COMPONENT-471
+189D7  TANGUT COMPONENT-472
+189D8  TANGUT COMPONENT-473
+189D9  TANGUT COMPONENT-474
+189DA  TANGUT COMPONENT-475
+@              Seven-stroke components
+189DB  TANGUT COMPONENT-476
+189DC  TANGUT COMPONENT-477
+189DD  TANGUT COMPONENT-478
+189DE  TANGUT COMPONENT-479
+189DF  TANGUT COMPONENT-480
+189E0  TANGUT COMPONENT-481
+189E1  TANGUT COMPONENT-482
+189E2  TANGUT COMPONENT-483
+189E3  TANGUT COMPONENT-484
+189E4  TANGUT COMPONENT-485
+189E5  TANGUT COMPONENT-486
+189E6  TANGUT COMPONENT-487
+189E7  TANGUT COMPONENT-488
+189E8  TANGUT COMPONENT-489
+189E9  TANGUT COMPONENT-490
+189EA  TANGUT COMPONENT-491
+189EB  TANGUT COMPONENT-492
+189EC  TANGUT COMPONENT-493
+189ED  TANGUT COMPONENT-494
+189EE  TANGUT COMPONENT-495
+189EF  TANGUT COMPONENT-496
+189F0  TANGUT COMPONENT-497
+189F1  TANGUT COMPONENT-498
+189F2  TANGUT COMPONENT-499
+189F3  TANGUT COMPONENT-500
+189F4  TANGUT COMPONENT-501
+189F5  TANGUT COMPONENT-502
+189F6  TANGUT COMPONENT-503
+189F7  TANGUT COMPONENT-504
+189F8  TANGUT COMPONENT-505
+189F9  TANGUT COMPONENT-506
+189FA  TANGUT COMPONENT-507
+189FB  TANGUT COMPONENT-508
+189FC  TANGUT COMPONENT-509
+189FD  TANGUT COMPONENT-510
+189FE  TANGUT COMPONENT-511
+189FF  TANGUT COMPONENT-512
+18A00  TANGUT COMPONENT-513
+18A01  TANGUT COMPONENT-514
+18A02  TANGUT COMPONENT-515
+18A03  TANGUT COMPONENT-516
+18A04  TANGUT COMPONENT-517
+18A05  TANGUT COMPONENT-518
+18A06  TANGUT COMPONENT-519
+18A07  TANGUT COMPONENT-520
+18A08  TANGUT COMPONENT-521
+18A09  TANGUT COMPONENT-522
+18A0A  TANGUT COMPONENT-523
+18A0B  TANGUT COMPONENT-524
+18A0C  TANGUT COMPONENT-525
+18A0D  TANGUT COMPONENT-526
+18A0E  TANGUT COMPONENT-527
+18A0F  TANGUT COMPONENT-528
+18A10  TANGUT COMPONENT-529
+18A11  TANGUT COMPONENT-530
+18A12  TANGUT COMPONENT-531
+18A13  TANGUT COMPONENT-532
+18A14  TANGUT COMPONENT-533
+18A15  TANGUT COMPONENT-534
+18A16  TANGUT COMPONENT-535
+18A17  TANGUT COMPONENT-536
+18A18  TANGUT COMPONENT-537
+18A19  TANGUT COMPONENT-538
+18A1A  TANGUT COMPONENT-539
+18A1B  TANGUT COMPONENT-540
+18A1C  TANGUT COMPONENT-541
+18A1D  TANGUT COMPONENT-542
+18A1E  TANGUT COMPONENT-543
+18A1F  TANGUT COMPONENT-544
+18A20  TANGUT COMPONENT-545
+18A21  TANGUT COMPONENT-546
+18A22  TANGUT COMPONENT-547
+18A23  TANGUT COMPONENT-548
+18A24  TANGUT COMPONENT-549
+18A25  TANGUT COMPONENT-550
+18A26  TANGUT COMPONENT-551
+18A27  TANGUT COMPONENT-552
+18A28  TANGUT COMPONENT-553
+18A29  TANGUT COMPONENT-554
+18A2A  TANGUT COMPONENT-555
+18A2B  TANGUT COMPONENT-556
+18A2C  TANGUT COMPONENT-557
+18A2D  TANGUT COMPONENT-558
+18A2E  TANGUT COMPONENT-559
+18A2F  TANGUT COMPONENT-560
+18A30  TANGUT COMPONENT-561
+18A31  TANGUT COMPONENT-562
+18A32  TANGUT COMPONENT-563
+18A33  TANGUT COMPONENT-564
+18A34  TANGUT COMPONENT-565
+18A35  TANGUT COMPONENT-566
+18A36  TANGUT COMPONENT-567
+18A37  TANGUT COMPONENT-568
+18A38  TANGUT COMPONENT-569
+18A39  TANGUT COMPONENT-570
+18A3A  TANGUT COMPONENT-571
+18A3B  TANGUT COMPONENT-572
+18A3C  TANGUT COMPONENT-573
+18A3D  TANGUT COMPONENT-574
+18A3E  TANGUT COMPONENT-575
+18A3F  TANGUT COMPONENT-576
+18A40  TANGUT COMPONENT-577
+@              Eight-stroke components
+18A41  TANGUT COMPONENT-578
+18A42  TANGUT COMPONENT-579
+18A43  TANGUT COMPONENT-580
+18A44  TANGUT COMPONENT-581
+18A45  TANGUT COMPONENT-582
+18A46  TANGUT COMPONENT-583
+18A47  TANGUT COMPONENT-584
+18A48  TANGUT COMPONENT-585
+18A49  TANGUT COMPONENT-586
+18A4A  TANGUT COMPONENT-587
+18A4B  TANGUT COMPONENT-588
+18A4C  TANGUT COMPONENT-589
+18A4D  TANGUT COMPONENT-590
+18A4E  TANGUT COMPONENT-591
+18A4F  TANGUT COMPONENT-592
+18A50  TANGUT COMPONENT-593
+18A51  TANGUT COMPONENT-594
+18A52  TANGUT COMPONENT-595
+18A53  TANGUT COMPONENT-596
+18A54  TANGUT COMPONENT-597
+18A55  TANGUT COMPONENT-598
+18A56  TANGUT COMPONENT-599
+18A57  TANGUT COMPONENT-600
+18A58  TANGUT COMPONENT-601
+18A59  TANGUT COMPONENT-602
+18A5A  TANGUT COMPONENT-603
+18A5B  TANGUT COMPONENT-604
+18A5C  TANGUT COMPONENT-605
+18A5D  TANGUT COMPONENT-606
+18A5E  TANGUT COMPONENT-607
+18A5F  TANGUT COMPONENT-608
+18A60  TANGUT COMPONENT-609
+18A61  TANGUT COMPONENT-610
+18A62  TANGUT COMPONENT-611
+18A63  TANGUT COMPONENT-612
+18A64  TANGUT COMPONENT-613
+18A65  TANGUT COMPONENT-614
+18A66  TANGUT COMPONENT-615
+18A67  TANGUT COMPONENT-616
+18A68  TANGUT COMPONENT-617
+18A69  TANGUT COMPONENT-618
+18A6A  TANGUT COMPONENT-619
+18A6B  TANGUT COMPONENT-620
+18A6C  TANGUT COMPONENT-621
+18A6D  TANGUT COMPONENT-622
+18A6E  TANGUT COMPONENT-623
+18A6F  TANGUT COMPONENT-624
+18A70  TANGUT COMPONENT-625
+18A71  TANGUT COMPONENT-626
+18A72  TANGUT COMPONENT-627
+18A73  TANGUT COMPONENT-628
+18A74  TANGUT COMPONENT-629
+18A75  TANGUT COMPONENT-630
+18A76  TANGUT COMPONENT-631
+18A77  TANGUT COMPONENT-632
+18A78  TANGUT COMPONENT-633
+18A79  TANGUT COMPONENT-634
+18A7A  TANGUT COMPONENT-635
+18A7B  TANGUT COMPONENT-636
+18A7C  TANGUT COMPONENT-637
+18A7D  TANGUT COMPONENT-638
+18A7E  TANGUT COMPONENT-639
+18A7F  TANGUT COMPONENT-640
+18A80  TANGUT COMPONENT-641
+18A81  TANGUT COMPONENT-642
+18A82  TANGUT COMPONENT-643
+18A83  TANGUT COMPONENT-644
+18A84  TANGUT COMPONENT-645
+18A85  TANGUT COMPONENT-646
+18A86  TANGUT COMPONENT-647
+18A87  TANGUT COMPONENT-648
+18A88  TANGUT COMPONENT-649
+18A89  TANGUT COMPONENT-650
+18A8A  TANGUT COMPONENT-651
+18A8B  TANGUT COMPONENT-652
+18A8C  TANGUT COMPONENT-653
+18A8D  TANGUT COMPONENT-654
+18A8E  TANGUT COMPONENT-655
+18A8F  TANGUT COMPONENT-656
+18A90  TANGUT COMPONENT-657
+18A91  TANGUT COMPONENT-658
+18A92  TANGUT COMPONENT-659
+18A93  TANGUT COMPONENT-660
+18A94  TANGUT COMPONENT-661
+18A95  TANGUT COMPONENT-662
+18A96  TANGUT COMPONENT-663
+18A97  TANGUT COMPONENT-664
+18A98  TANGUT COMPONENT-665
+@              Nine-stroke components
+18A99  TANGUT COMPONENT-666
+18A9A  TANGUT COMPONENT-667
+18A9B  TANGUT COMPONENT-668
+18A9C  TANGUT COMPONENT-669
+18A9D  TANGUT COMPONENT-670
+18A9E  TANGUT COMPONENT-671
+18A9F  TANGUT COMPONENT-672
+18AA0  TANGUT COMPONENT-673
+18AA1  TANGUT COMPONENT-674
+18AA2  TANGUT COMPONENT-675
+18AA3  TANGUT COMPONENT-676
+18AA4  TANGUT COMPONENT-677
+18AA5  TANGUT COMPONENT-678
+18AA6  TANGUT COMPONENT-679
+18AA7  TANGUT COMPONENT-680
+18AA8  TANGUT COMPONENT-681
+18AA9  TANGUT COMPONENT-682
+18AAA  TANGUT COMPONENT-683
+18AAB  TANGUT COMPONENT-684
+18AAC  TANGUT COMPONENT-685
+18AAD  TANGUT COMPONENT-686
+18AAE  TANGUT COMPONENT-687
+18AAF  TANGUT COMPONENT-688
+18AB0  TANGUT COMPONENT-689
+18AB1  TANGUT COMPONENT-690
+18AB2  TANGUT COMPONENT-691
+18AB3  TANGUT COMPONENT-692
+18AB4  TANGUT COMPONENT-693
+18AB5  TANGUT COMPONENT-694
+18AB6  TANGUT COMPONENT-695
+18AB7  TANGUT COMPONENT-696
+18AB8  TANGUT COMPONENT-697
+18AB9  TANGUT COMPONENT-698
+18ABA  TANGUT COMPONENT-699
+18ABB  TANGUT COMPONENT-700
+18ABC  TANGUT COMPONENT-701
+18ABD  TANGUT COMPONENT-702
+18ABE  TANGUT COMPONENT-703
+18ABF  TANGUT COMPONENT-704
+18AC0  TANGUT COMPONENT-705
+@              Ten-stroke components
+18AC1  TANGUT COMPONENT-706
+18AC2  TANGUT COMPONENT-707
+18AC3  TANGUT COMPONENT-708
+18AC4  TANGUT COMPONENT-709
+18AC5  TANGUT COMPONENT-710
+18AC6  TANGUT COMPONENT-711
+18AC7  TANGUT COMPONENT-712
+18AC8  TANGUT COMPONENT-713
+18AC9  TANGUT COMPONENT-714
+18ACA  TANGUT COMPONENT-715
+18ACB  TANGUT COMPONENT-716
+18ACC  TANGUT COMPONENT-717
+18ACD  TANGUT COMPONENT-718
+18ACE  TANGUT COMPONENT-719
+18ACF  TANGUT COMPONENT-720
+18AD0  TANGUT COMPONENT-721
+18AD1  TANGUT COMPONENT-722
+18AD2  TANGUT COMPONENT-723
+18AD3  TANGUT COMPONENT-724
+18AD4  TANGUT COMPONENT-725
+@              Eleven-stroke components
+18AD5  TANGUT COMPONENT-726
+18AD6  TANGUT COMPONENT-727
+18AD7  TANGUT COMPONENT-728
+18AD8  TANGUT COMPONENT-729
+18AD9  TANGUT COMPONENT-730
+18ADA  TANGUT COMPONENT-731
+18ADB  TANGUT COMPONENT-732
+18ADC  TANGUT COMPONENT-733
+18ADD  TANGUT COMPONENT-734
+18ADE  TANGUT COMPONENT-735
+18ADF  TANGUT COMPONENT-736
+18AE0  TANGUT COMPONENT-737
+18AE1  TANGUT COMPONENT-738
+18AE2  TANGUT COMPONENT-739
+@              Twelve-stroke components
+18AE3  TANGUT COMPONENT-740
+18AE4  TANGUT COMPONENT-741
+18AE5  TANGUT COMPONENT-742
+18AE6  TANGUT COMPONENT-743
+18AE7  TANGUT COMPONENT-744
+18AE8  TANGUT COMPONENT-745
+18AE9  TANGUT COMPONENT-746
+18AEA  TANGUT COMPONENT-747
+18AEB  TANGUT COMPONENT-748
+@              Thirteen-stroke components
+18AEC  TANGUT COMPONENT-749
+18AED  TANGUT COMPONENT-750
+18AEE  TANGUT COMPONENT-751
+18AEF  TANGUT COMPONENT-752
+18AF0  TANGUT COMPONENT-753
+18AF1  TANGUT COMPONENT-754
+@              Sixteen-stroke components
+18AF2  TANGUT COMPONENT-755
 @@     1B000   Kana Supplement 1B0FF
 @              Historic Katakana
 1B000  KATAKANA LETTER ARCHAIC E
@@ -41425,6 +42991,46 @@ FFFF   <not a character>
 1DAAD  SIGNWRITING ROTATION MODIFIER-14
 1DAAE  SIGNWRITING ROTATION MODIFIER-15
 1DAAF  SIGNWRITING ROTATION MODIFIER-16
+@@     1E000   Glagolitic Supplement   1E02F
+@              Combining letters
+1E000  COMBINING GLAGOLITIC LETTER AZU
+1E001  COMBINING GLAGOLITIC LETTER BUKY
+1E002  COMBINING GLAGOLITIC LETTER VEDE
+1E003  COMBINING GLAGOLITIC LETTER GLAGOLI
+1E004  COMBINING GLAGOLITIC LETTER DOBRO
+1E005  COMBINING GLAGOLITIC LETTER YESTU
+1E006  COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008  COMBINING GLAGOLITIC LETTER ZEMLJA
+1E009  COMBINING GLAGOLITIC LETTER IZHE
+1E00A  COMBINING GLAGOLITIC LETTER INITIAL IZHE
+1E00B  COMBINING GLAGOLITIC LETTER I
+1E00C  COMBINING GLAGOLITIC LETTER DJERVI
+1E00D  COMBINING GLAGOLITIC LETTER KAKO
+1E00E  COMBINING GLAGOLITIC LETTER LJUDIJE
+1E00F  COMBINING GLAGOLITIC LETTER MYSLITE
+1E010  COMBINING GLAGOLITIC LETTER NASHI
+1E011  COMBINING GLAGOLITIC LETTER ONU
+1E012  COMBINING GLAGOLITIC LETTER POKOJI
+1E013  COMBINING GLAGOLITIC LETTER RITSI
+1E014  COMBINING GLAGOLITIC LETTER SLOVO
+1E015  COMBINING GLAGOLITIC LETTER TVRIDO
+1E016  COMBINING GLAGOLITIC LETTER UKU
+1E017  COMBINING GLAGOLITIC LETTER FRITU
+1E018  COMBINING GLAGOLITIC LETTER HERU
+1E01B  COMBINING GLAGOLITIC LETTER SHTA
+1E01C  COMBINING GLAGOLITIC LETTER TSI
+1E01D  COMBINING GLAGOLITIC LETTER CHRIVI
+1E01E  COMBINING GLAGOLITIC LETTER SHA
+1E01F  COMBINING GLAGOLITIC LETTER YERU
+1E020  COMBINING GLAGOLITIC LETTER YERI
+1E021  COMBINING GLAGOLITIC LETTER YATI
+1E023  COMBINING GLAGOLITIC LETTER YU
+1E024  COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026  COMBINING GLAGOLITIC LETTER YO
+1E027  COMBINING GLAGOLITIC LETTER IOTATED SMALL YUS
+1E028  COMBINING GLAGOLITIC LETTER BIG YUS
+1E029  COMBINING GLAGOLITIC LETTER IOTATED BIG YUS
+1E02A  COMBINING GLAGOLITIC LETTER FITA
 @@     1E800   Mende Kikakui   1E8DF
 @              Syllables in k-
 1E800  MENDE KIKAKUI SYLLABLE M001 KI
@@ -41691,6 +43297,102 @@ FFFF  <not a character>
 1E8D4  MENDE KIKAKUI COMBINING NUMBER TEN THOUSANDS
 1E8D5  MENDE KIKAKUI COMBINING NUMBER HUNDRED THOUSANDS
 1E8D6  MENDE KIKAKUI COMBINING NUMBER MILLIONS
+@@     1E900   Adlam   1E95F
+@              Capital letters
+1E900  ADLAM CAPITAL LETTER ALIF
+1E901  ADLAM CAPITAL LETTER DAALI
+1E902  ADLAM CAPITAL LETTER LAAM
+1E903  ADLAM CAPITAL LETTER MIIM
+1E904  ADLAM CAPITAL LETTER BA
+1E905  ADLAM CAPITAL LETTER SINNYIIYHE
+1E906  ADLAM CAPITAL LETTER PE
+1E907  ADLAM CAPITAL LETTER BHE
+1E908  ADLAM CAPITAL LETTER RA
+1E909  ADLAM CAPITAL LETTER E
+1E90A  ADLAM CAPITAL LETTER FA
+1E90B  ADLAM CAPITAL LETTER I
+1E90C  ADLAM CAPITAL LETTER O
+1E90D  ADLAM CAPITAL LETTER DHA
+1E90E  ADLAM CAPITAL LETTER YHE
+1E90F  ADLAM CAPITAL LETTER WAW
+1E910  ADLAM CAPITAL LETTER NUN
+1E911  ADLAM CAPITAL LETTER KAF
+1E912  ADLAM CAPITAL LETTER YA
+1E913  ADLAM CAPITAL LETTER U
+1E914  ADLAM CAPITAL LETTER JIIM
+1E915  ADLAM CAPITAL LETTER CHI
+1E916  ADLAM CAPITAL LETTER HA
+1E917  ADLAM CAPITAL LETTER QAAF
+1E918  ADLAM CAPITAL LETTER GA
+1E919  ADLAM CAPITAL LETTER NYA
+1E91A  ADLAM CAPITAL LETTER TU
+1E91B  ADLAM CAPITAL LETTER NHA
+@              Supplementary capital letters
+1E91C  ADLAM CAPITAL LETTER VA
+1E91D  ADLAM CAPITAL LETTER KHA
+1E91E  ADLAM CAPITAL LETTER GBE
+1E91F  ADLAM CAPITAL LETTER ZAL
+1E920  ADLAM CAPITAL LETTER KPO
+1E921  ADLAM CAPITAL LETTER SHA
+@              Small letters
+1E922  ADLAM SMALL LETTER ALIF
+1E923  ADLAM SMALL LETTER DAALI
+1E924  ADLAM SMALL LETTER LAAM
+1E925  ADLAM SMALL LETTER MIIM
+1E926  ADLAM SMALL LETTER BA
+1E927  ADLAM SMALL LETTER SINNYIIYHE
+1E928  ADLAM SMALL LETTER PE
+1E929  ADLAM SMALL LETTER BHE
+1E92A  ADLAM SMALL LETTER RA
+1E92B  ADLAM SMALL LETTER E
+1E92C  ADLAM SMALL LETTER FA
+1E92D  ADLAM SMALL LETTER I
+1E92E  ADLAM SMALL LETTER O
+1E92F  ADLAM SMALL LETTER DHA
+1E930  ADLAM SMALL LETTER YHE
+1E931  ADLAM SMALL LETTER WAW
+1E932  ADLAM SMALL LETTER NUN
+1E933  ADLAM SMALL LETTER KAF
+1E934  ADLAM SMALL LETTER YA
+1E935  ADLAM SMALL LETTER U
+1E936  ADLAM SMALL LETTER JIIM
+1E937  ADLAM SMALL LETTER CHI
+1E938  ADLAM SMALL LETTER HA
+1E939  ADLAM SMALL LETTER QAAF
+1E93A  ADLAM SMALL LETTER GA
+1E93B  ADLAM SMALL LETTER NYA
+1E93C  ADLAM SMALL LETTER TU
+1E93D  ADLAM SMALL LETTER NHA
+@              Supplementary small letters
+1E93E  ADLAM SMALL LETTER VA
+1E93F  ADLAM SMALL LETTER KHA
+1E940  ADLAM SMALL LETTER GBE
+1E941  ADLAM SMALL LETTER ZAL
+1E942  ADLAM SMALL LETTER KPO
+1E943  ADLAM SMALL LETTER SHA
+@              Diacritical marks
+1E944  ADLAM ALIF LENGTHENER
+1E945  ADLAM VOWEL LENGTHENER
+1E946  ADLAM GEMINATION MARK
+1E947  ADLAM HAMZA
+1E948  ADLAM CONSONANT MODIFIER
+1E949  ADLAM GEMINATE CONSONANT MODIFIER
+1E94A  ADLAM NUKTA
+       * called hoortobbhere when drawn above and lestobbhere when drawn below the base character
+@              Digits
+1E950  ADLAM DIGIT ZERO
+1E951  ADLAM DIGIT ONE
+1E952  ADLAM DIGIT TWO
+1E953  ADLAM DIGIT THREE
+1E954  ADLAM DIGIT FOUR
+1E955  ADLAM DIGIT FIVE
+1E956  ADLAM DIGIT SIX
+1E957  ADLAM DIGIT SEVEN
+1E958  ADLAM DIGIT EIGHT
+1E959  ADLAM DIGIT NINE
+@              Punctuation
+1E95E  ADLAM INITIAL EXCLAMATION MARK
+1E95F  ADLAM INITIAL QUESTION MARK
 @@     1EE00   Arabic Mathematical Alphabetic Symbols  1EEFF
 @              Isolated symbols
 1EE00  ARABIC MATHEMATICAL ALEF
@@ -42379,7 +44081,7 @@ FFFF    <not a character>
 1F10B  DINGBAT CIRCLED SANS-SERIF DIGIT ZERO
 1F10C  DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
 @              Parenthesized Latin letters
-@+             This set provides uppercase versions of the set starting at 249C.
+@+             This set provides uppercase versions of the set starting at 249C. Parenthesized Latin letters do not have case mappings.
 1F110  PARENTHESIZED LATIN CAPITAL LETTER A
        # 0028 0041 0029
 1F111  PARENTHESIZED LATIN CAPITAL LETTER B
@@ -42666,6 +44368,32 @@ FFFF   <not a character>
        = new information, update
 1F19A  SQUARED VS
        = versus
+@              Squared Latin letter sequences from ARIB STD B62
+1F19B  SQUARED THREE D
+1F19C  SQUARED SECOND SCREEN
+1F19D  SQUARED TWO K
+1F19E  SQUARED FOUR K
+1F19F  SQUARED EIGHT K
+1F1A0  SQUARED FIVE POINT ONE
+1F1A1  SQUARED SEVEN POINT ONE
+1F1A2  SQUARED TWENTY-TWO POINT TWO
+1F1A3  SQUARED SIXTY P
+1F1A4  SQUARED ONE HUNDRED TWENTY P
+1F1A5  SQUARED LATIN SMALL LETTER D
+       = data
+1F1A6  SQUARED HC
+       = hybrid cast
+1F1A7  SQUARED HDR
+       = high dynamic range
+1F1A8  SQUARED HI-RES
+       = high resolution
+1F1A9  SQUARED LOSSLESS
+1F1AA  SQUARED SHV
+       = super high vision
+1F1AB  SQUARED UHD
+       = ultra-high definition
+1F1AC  SQUARED VOD
+       = video on demand
 @              Regional indicator symbols
 @+             These characters can be used in pairs to represent regional codes. In some emoji implementations, certain pairs may be recognized and displayed by alternate means; for instance, an implementation might recognize F + R and display this combination with a symbol representing the flag of France.
 1F1E6  REGIONAL INDICATOR SYMBOL LETTER A
@@ -42852,6 +44580,9 @@ FFFF    <not a character>
 1F23A  SQUARED CJK UNIFIED IDEOGRAPH-55B6
        = in business sign
        # <square> 55B6
+1F23B  SQUARED CJK UNIFIED IDEOGRAPH-914D
+       = program delivery over network (ARIB STD B62)
+       # <square> 914D
 @              Ideographs with tortoise shell brackets from ARIB STD B24
 1F240  TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C
        = home run
@@ -42941,6 +44672,8 @@ FFFF    <not a character>
 @              Weather symbols
 1F321  THERMOMETER
        = temperature, warm
+       ~ 1F321 FE0E text style
+       ~ 1F321 FE0F emoji style
 1F322  BLACK DROPLET
        = droplet
        x (droplet - 1F4A7)
@@ -42950,23 +44683,41 @@ FFFF  <not a character>
 1F324  WHITE SUN WITH SMALL CLOUD
        = mostly sunny
        x (sun behind cloud - 26C5)
+       ~ 1F324 FE0E text style
+       ~ 1F324 FE0F emoji style
 1F325  WHITE SUN BEHIND CLOUD
        = mostly cloudy
+       ~ 1F325 FE0E text style
+       ~ 1F325 FE0F emoji style
 1F326  WHITE SUN BEHIND CLOUD WITH RAIN
        = showers
+       ~ 1F326 FE0E text style
+       ~ 1F326 FE0F emoji style
 1F327  CLOUD WITH RAIN
        = rain
+       ~ 1F327 FE0E text style
+       ~ 1F327 FE0F emoji style
 1F328  CLOUD WITH SNOW
        = snow, snow showers
+       ~ 1F328 FE0E text style
+       ~ 1F328 FE0F emoji style
 1F329  CLOUD WITH LIGHTNING
        = lightning, thunderstorm
        x (thunder cloud and rain - 26C8)
+       ~ 1F329 FE0E text style
+       ~ 1F329 FE0F emoji style
 1F32A  CLOUD WITH TORNADO
        = tornado, twister
+       ~ 1F32A FE0E text style
+       ~ 1F32A FE0F emoji style
 1F32B  FOG
        x (foggy - 1F301)
+       ~ 1F32B FE0E text style
+       ~ 1F32B FE0F emoji style
 1F32C  WIND BLOWING FACE
        = wind
+       ~ 1F32C FE0E text style
+       ~ 1F32C FE0F emoji style
 @              Food symbols
 1F32D  HOT DOG
 1F32E  TACO
@@ -42983,10 +44734,13 @@ FFFF  <not a character>
        x (desert - 1F3DC)
 1F336  HOT PEPPER
        = hot, spicy
+       ~ 1F336 FE0E text style
+       ~ 1F336 FE0F emoji style
 1F337  TULIP
        x (flower - 2698)
 1F338  CHERRY BLOSSOM
 1F339  ROSE
+       x (wilted flower - 1F940)
 1F33A  HIBISCUS
 1F33B  SUNFLOWER
 1F33C  BLOSSOM
@@ -43063,6 +44817,7 @@ FFFF    <not a character>
        * glyph may show a fork and spoon
        * glyph may show a crossed fork and knife
        x (fork and knife with plate - 1F37D)
+       x (spoon - 1F944)
 @              Beverage symbols
 1F375  TEACUP WITHOUT HANDLE
        x (hot beverage - 2615)
@@ -43072,15 +44827,19 @@ FFFF  <not a character>
 1F378  COCKTAIL GLASS
        = lounge
        x (couch and lamp - 1F6CB)
+       x (tumbler glass - 1F943)
 1F379  TROPICAL DRINK
 1F37A  BEER MUG
 1F37B  CLINKING BEER MUGS
        = cheers
+       x (clinking glasses - 1F942)
 1F37C  BABY BOTTLE
 @              Accommodation symbol
 1F37D  FORK AND KNIFE WITH PLATE
        = dining
        x (fork and knife - 1F374)
+       ~ 1F37D FE0E text style
+       ~ 1F37D FE0F emoji style
 @              Beverage and food symbols
 1F37E  BOTTLE WITH POPPING CORK
 1F37F  POPCORN
@@ -43094,6 +44853,7 @@ FFFF    <not a character>
 1F384  CHRISTMAS TREE
 1F385  FATHER CHRISTMAS
        = Santa Claus
+       x (mother christmas - 1F936)
 1F386  FIREWORKS
 1F387  FIREWORK SPARKLER
        * long, stick-like firework that looks like a burning incense stick
@@ -43125,7 +44885,11 @@ FFFF   <not a character>
        = occasion
        x (bouquet - 1F490)
 1F396  MILITARY MEDAL
+       ~ 1F396 FE0E text style
+       ~ 1F396 FE0F emoji style
 1F397  REMINDER RIBBON
+       ~ 1F397 FE0E text style
+       ~ 1F397 FE0F emoji style
 @              Musical symbols
 1F398  MUSICAL KEYBOARD WITH JACKS
        = midi, midi keyboard
@@ -43133,10 +44897,16 @@ FFFF  <not a character>
 1F399  STUDIO MICROPHONE
        = microphone
        x (microphone - 1F3A4)
+       ~ 1F399 FE0E text style
+       ~ 1F399 FE0F emoji style
 1F39A  LEVEL SLIDER
        = level control
+       ~ 1F39A FE0E text style
+       ~ 1F39A FE0F emoji style
 1F39B  CONTROL KNOBS
        = audio control
+       ~ 1F39B FE0E text style
+       ~ 1F39B FE0F emoji style
 1F39C  BEAMED ASCENDING MUSICAL NOTES
        = musical performance
        = music, musical background
@@ -43149,9 +44919,13 @@ FFFF   <not a character>
 1F39E  FILM FRAMES
        = film clip
        x (movie camera - 1F3A5)
+       ~ 1F39E FE0E text style
+       ~ 1F39E FE0F emoji style
 1F39F  ADMISSION TICKETS
        = ticket
        x (ticket - 1F3AB)
+       ~ 1F39F FE0E text style
+       ~ 1F39F FE0F emoji style
 1F3A0  CAROUSEL HORSE
        = amusement park
 1F3A1  FERRIS WHEEL
@@ -43214,6 +44988,10 @@ FFFF   <not a character>
 @              Sport symbols
 @+             See other sport symbols in the Miscelleaneous Symbols block.
 1F3BD  RUNNING SHIRT WITH SASH
+       = ekiden (Japanese)
+       * running shirt with separate sash signifies long-distance relay running
+       * symbol is generalized to represent athletics
+       * glyph may be shown with a sash, a stripe, or neither
 1F3BE  TENNIS RACQUET AND BALL
        = tennis
 1F3BF  SKI AND SKI BOOT
@@ -43229,6 +45007,7 @@ FFFF    <not a character>
 1F3C4  SURFER
        = surfing
 1F3C5  SPORTS MEDAL
+       x (first place medal - 1F947)
 1F3C6  TROPHY
 1F3C7  HORSE RACING
 1F3C8  AMERICAN FOOTBALL
@@ -43236,48 +45015,80 @@ FFFF  <not a character>
 1F3CA  SWIMMER
 1F3CB  WEIGHT LIFTER
        = health
+       ~ 1F3CB FE0E text style
+       ~ 1F3CB FE0F emoji style
 1F3CC  GOLFER
+       ~ 1F3CC FE0E text style
+       ~ 1F3CC FE0F emoji style
 1F3CD  RACING MOTORCYCLE
        = motorcycle
        * may be depicted as an ordinary motorcycle, especially in emoji presentation
+       ~ 1F3CD FE0E text style
+       ~ 1F3CD FE0F emoji style
 1F3CE  RACING CAR
        = race car
+       ~ 1F3CE FE0E text style
+       ~ 1F3CE FE0F emoji style
 1F3CF  CRICKET BAT AND BALL
 1F3D0  VOLLEYBALL
 1F3D1  FIELD HOCKEY STICK AND BALL
 1F3D2  ICE HOCKEY STICK AND PUCK
 1F3D3  TABLE TENNIS PADDLE AND BALL
-@              Buiding and map symbols
+@              Building and map symbols
 1F3D4  SNOW CAPPED MOUNTAIN
        x (mountain - 26F0)
+       ~ 1F3D4 FE0E text style
+       ~ 1F3D4 FE0F emoji style
 1F3D5  CAMPING
        = camping site
        x (tent - 26FA)
+       ~ 1F3D5 FE0E text style
+       ~ 1F3D5 FE0F emoji style
 1F3D6  BEACH WITH UMBRELLA
        x (umbrella on ground - 26F1)
+       ~ 1F3D6 FE0E text style
+       ~ 1F3D6 FE0F emoji style
 1F3D7  BUILDING CONSTRUCTION
        = under construction
        x (construction sign - 1F6A7)
+       ~ 1F3D7 FE0E text style
+       ~ 1F3D7 FE0F emoji style
 1F3D8  HOUSE BUILDINGS
        = town
        x (house with garden - 1F3E1)
+       ~ 1F3D8 FE0E text style
+       ~ 1F3D8 FE0F emoji style
 1F3D9  CITYSCAPE
        = skyline, city
        x (cityscape at dusk - 1F306)
+       ~ 1F3D9 FE0E text style
+       ~ 1F3D9 FE0F emoji style
 1F3DA  DERELICT HOUSE BUILDING
        = derelict site
+       ~ 1F3DA FE0E text style
+       ~ 1F3DA FE0F emoji style
 1F3DB  CLASSICAL BUILDING
        = public building
+       ~ 1F3DB FE0E text style
+       ~ 1F3DB FE0F emoji style
 1F3DC  DESERT
        = desert
        x (cactus - 1F335)
+       ~ 1F3DC FE0E text style
+       ~ 1F3DC FE0F emoji style
 1F3DD  DESERT ISLAND
        = island
        x (palm tree - 1F334)
+       ~ 1F3DD FE0E text style
+       ~ 1F3DD FE0F emoji style
 1F3DE  NATIONAL PARK
        * by semantic extension has come to connote saving trees, and hence is also used as a symbol meaning "do not print this (email, document)"
        x (evergreen tree - 1F332)
+       ~ 1F3DE FE0E text style
+       ~ 1F3DE FE0F emoji style
 1F3DF  STADIUM
+       ~ 1F3DF FE0E text style
+       ~ 1F3DF FE0F emoji style
 1F3E0  HOUSE BUILDING
 1F3E1  HOUSE WITH GARDEN
        = home, house with yard
@@ -43315,25 +45126,33 @@ FFFF  <not a character>
 1F3F3  WAVING WHITE FLAG
        = flag
        x (white flag - 2690)
+       ~ 1F3F3 FE0E text style
+       ~ 1F3F3 FE0F emoji style
 1F3F4  WAVING BLACK FLAG
 @              Rosettes
 1F3F5  ROSETTE
        x (white florette - 2740)
+       ~ 1F3F5 FE0E text style
+       ~ 1F3F5 FE0F emoji style
 1F3F6  BLACK ROSETTE
        x (eight petalled outlined black florette - 2741)
 @              Miscellaneous symbol
 1F3F7  LABEL
        = price, price tag
        x (bookmark - 1F516)
+       ~ 1F3F7 FE0E text style
+       ~ 1F3F7 FE0F emoji style
 @              Sport symbols
 1F3F8  BADMINTON RACQUET AND SHUTTLECOCK
 1F3F9  BOW AND ARROW
-       * used for Sagittarius
+       = archery
+       * also used for Sagittarius
        x (sagittarius - 2650)
 @              Miscellaneous symbol
 1F3FA  AMPHORA
        * used for Aquarius
        x (aquarius - 2652)
+       x (linear b ideogram vessel b209 - 100E8)
 @              Emoji modifiers
 1F3FB  EMOJI MODIFIER FITZPATRICK TYPE-1-2
 1F3FC  EMOJI MODIFIER FITZPATRICK TYPE-3
@@ -43371,6 +45190,7 @@ FFFF    <not a character>
 1F40D  SNAKE
        * sixth of the signs of the Asian zodiac
 1F40E  HORSE
+       = equestrian sports
        * seventh of the signs of the Asian zodiac
 1F40F  RAM
        * eighth of the signs of the Asian zodiac
@@ -43408,6 +45228,7 @@ FFFF    <not a character>
 1F420  TROPICAL FISH
 1F421  BLOWFISH
 1F422  TURTLE
+       = tortoise, terrapin
 1F423  HATCHING CHICK
 1F424  BABY CHICK
 1F425  FRONT-FACING BABY CHICK
@@ -43444,10 +45265,14 @@ FFFF  <not a character>
        x (footprints - 1F463)
 1F43F  CHIPMUNK
        = animal, critter
+       ~ 1F43F FE0E text style
+       ~ 1F43F FE0F emoji style
 @              Facial parts symbols
 1F440  EYES
 1F441  EYE
        = sight
+       ~ 1F441 FE0E text style
+       ~ 1F441 FE0F emoji style
 1F442  EAR
 1F443  NOSE
 1F444  MOUTH
@@ -43520,6 +45345,7 @@ FFFF    <not a character>
 1F46F  WOMAN WITH BUNNY EARS
        * most popularly depicted as two women dancing
 1F470  BRIDE WITH VEIL
+       x (man in tuxedo - 1F935)
 1F471  PERSON WITH BLOND HAIR
 1F472  MAN WITH GUA PI MAO
 1F473  MAN WITH TURBAN
@@ -43532,6 +45358,7 @@ FFFF    <not a character>
        x (helmet with white cross - 26D1)
 @              Fairy tale symbols
 1F478  PRINCESS
+       x (prince - 1F934)
 1F479  JAPANESE OGRE
 1F47A  JAPANESE GOBLIN
 1F47B  GHOST
@@ -43548,6 +45375,8 @@ FFFF    <not a character>
 1F482  GUARDSMAN
 1F483  DANCER
        * also used for "let's party"
+       * may be depicted as gender neutral
+       x (man dancing - 1F57A)
 @              Personal care symbols
 1F484  LIPSTICK
 1F485  NAIL POLISH
@@ -43757,6 +45586,8 @@ FFFF    <not a character>
 1F4FD  FILM PROJECTOR
        = movies
        x (cinema - 1F3A6)
+       ~ 1F4FD FE0E text style
+       ~ 1F4FD FE0F emoji style
 1F4FE  PORTABLE STEREO
        = stereo
 @              Religious symbol
@@ -43847,9 +45678,11 @@ FFFF   <not a character>
        = Japanese kitchen knife
        x (dagger knife - 1F5E1)
 1F52B  PISTOL
+       = handgun, revolver
 1F52C  MICROSCOPE
 1F52D  TELESCOPE
 1F52E  CRYSTAL BALL
+@              Miscellaneous symbols
 1F52F  SIX POINTED STAR WITH MIDDLE DOT
        x (star of david - 2721)
 1F530  JAPANESE SYMBOL FOR BEGINNER
@@ -43907,8 +45740,12 @@ FFFF   <not a character>
 1F549  OM SYMBOL
        * generic symbol independent of Devanagari font
        x (devanagari om - 0950)
+       ~ 1F549 FE0E text style
+       ~ 1F549 FE0F emoji style
 1F54A  DOVE OF PEACE
        = peace
+       ~ 1F54A FE0E text style
+       ~ 1F54A FE0F emoji style
 1F54B  KAABA
 1F54C  MOSQUE
 1F54D  SYNAGOGUE
@@ -43962,25 +45799,47 @@ FFFF  <not a character>
 1F56E  BOOK
        x (open book - 1F4D6)
 1F56F  CANDLE
+       ~ 1F56F FE0E text style
+       ~ 1F56F FE0F emoji style
 1F570  MANTELPIECE CLOCK
        = clock
        x (alarm clock - 23F0)
+       ~ 1F570 FE0E text style
+       ~ 1F570 FE0F emoji style
 1F571  BLACK SKULL AND CROSSBONES
        x (skull and crossbones - 2620)
 1F572  NO PIRACY
 1F573  HOLE
        = portable hole
+       ~ 1F573 FE0E text style
+       ~ 1F573 FE0F emoji style
 1F574  MAN IN BUSINESS SUIT LEVITATING
        = jump
+       ~ 1F574 FE0E text style
+       ~ 1F574 FE0F emoji style
 1F575  SLEUTH OR SPY
        = investigate
+       ~ 1F575 FE0E text style
+       ~ 1F575 FE0F emoji style
 1F576  DARK SUNGLASSES
        = cool
+       ~ 1F576 FE0E text style
+       ~ 1F576 FE0F emoji style
 @              Animal symbols
 1F577  SPIDER
+       ~ 1F577 FE0E text style
+       ~ 1F577 FE0F emoji style
 1F578  SPIDER WEB
+       ~ 1F578 FE0E text style
+       ~ 1F578 FE0F emoji style
 @              Game symbol
 1F579  JOYSTICK
+       ~ 1F579 FE0E text style
+       ~ 1F579 FE0F emoji style
+@              Role symbol
+1F57A  MAN DANCING
+       * forms a gender pair with 1F483
+       x (dancer - 1F483)
 @              Communication symbols
 1F57B  LEFT HAND TELEPHONE RECEIVER
        x (telephone receiver - 1F4DE)
@@ -44013,6 +45872,8 @@ FFFF    <not a character>
 1F587  LINKED PAPERCLIPS
        = links
        x (paperclip - 1F4CE)
+       ~ 1F587 FE0E text style
+       ~ 1F587 FE0F emoji style
 1F588  BLACK PUSHPIN
        = marker
        x (pushpin - 1F4CC)
@@ -44021,13 +45882,21 @@ FFFF  <not a character>
        x (lower right pencil - 270E)
 1F58A  LOWER LEFT BALLPOINT PEN
        = ballpoint pen
+       ~ 1F58A FE0E text style
+       ~ 1F58A FE0F emoji style
 1F58B  LOWER LEFT FOUNTAIN PEN
        = fountain pen
        x (white nib - 2711)
+       ~ 1F58B FE0E text style
+       ~ 1F58B FE0F emoji style
 1F58C  LOWER LEFT PAINTBRUSH
        = brush
+       ~ 1F58C FE0E text style
+       ~ 1F58C FE0F emoji style
 1F58D  LOWER LEFT CRAYON
        = crayon
+       ~ 1F58D FE0E text style
+       ~ 1F58D FE0F emoji style
 @              Hand symbols
 1F58E  LEFT WRITING HAND
        x (writing hand - 270D)
@@ -44036,6 +45905,8 @@ FFFF    <not a character>
 1F590  RAISED HAND WITH FINGERS SPLAYED
        = halt
        x (raised hand - 270B)
+       ~ 1F590 FE0E text style
+       ~ 1F590 FE0F emoji style
 1F591  REVERSED RAISED HAND WITH FINGERS SPLAYED
 1F592  REVERSED THUMBS UP SIGN
        x (thumbs up sign - 1F44D)
@@ -44045,6 +45916,7 @@ FFFF    <not a character>
        x (victory hand - 270C)
 1F595  REVERSED HAND WITH MIDDLE FINGER EXTENDED
 1F596  RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
+       = Vulcan salute
 1F597  WHITE DOWN POINTING LEFT HAND INDEX
        x (white down pointing index - 261F)
        x (white down pointing backhand index - 1F447)
@@ -44068,15 +45940,23 @@ FFFF  <not a character>
        x (white up pointing backhand index - 1F446)
 1F5A3  BLACK DOWN POINTING BACKHAND INDEX
        x (white down pointing backhand index - 1F447)
+@              Heart symbol
+1F5A4  BLACK HEART
+       * unequivocally represented as black in all variants
+       x (black heart suit - 2665)
 @              Computer symbols
 1F5A5  DESKTOP COMPUTER
        = tower computer
+       ~ 1F5A5 FE0E text style
+       ~ 1F5A5 FE0F emoji style
 1F5A6  KEYBOARD AND MOUSE
        x (keyboard - 2328)
 1F5A7  THREE NETWORKED COMPUTERS
        = computer network
 1F5A8  PRINTER
        x (fax machine - 1F4E0)
+       ~ 1F5A8 FE0E text style
+       ~ 1F5A8 FE0F emoji style
 1F5A9  POCKET CALCULATOR
        = calculator
 1F5AA  BLACK HARD SHELL FLOPPY DISK
@@ -44091,8 +45971,12 @@ FFFF   <not a character>
 1F5AF  ONE BUTTON MOUSE
 1F5B0  TWO BUTTON MOUSE
 1F5B1  THREE BUTTON MOUSE
+       ~ 1F5B1 FE0E text style
+       ~ 1F5B1 FE0F emoji style
 1F5B2  TRACKBALL
        = ballpoint
+       ~ 1F5B2 FE0E text style
+       ~ 1F5B2 FE0F emoji style
 1F5B3  OLD PERSONAL COMPUTER
        = personal computer
        x (personal computer - 1F4BB)
@@ -44114,6 +45998,8 @@ FFFF    <not a character>
        = graphic document
 1F5BC  FRAME WITH PICTURE
        = art
+       ~ 1F5BC FE0E text style
+       ~ 1F5BC FE0F emoji style
 1F5BD  FRAME WITH TILES
        = frames
 1F5BE  FRAME WITH AN X
@@ -44128,9 +46014,15 @@ FFFF   <not a character>
 1F5C2  CARD INDEX DIVIDERS
        = index
        x (card index - 1F4C7)
+       ~ 1F5C2 FE0E text style
+       ~ 1F5C2 FE0F emoji style
 1F5C3  CARD FILE BOX
        = archive
+       ~ 1F5C3 FE0E text style
+       ~ 1F5C3 FE0F emoji style
 1F5C4  FILE CABINET
+       ~ 1F5C4 FE0E text style
+       ~ 1F5C4 FE0F emoji style
 1F5C5  EMPTY NOTE
 1F5C6  EMPTY NOTE PAGE
 1F5C7  EMPTY NOTE PAD
@@ -44147,12 +46039,18 @@ FFFF  <not a character>
 1F5D0  PAGES
 1F5D1  WASTEBASKET
        = trashcan
+       ~ 1F5D1 FE0E text style
+       ~ 1F5D1 FE0F emoji style
 1F5D2  SPIRAL NOTE PAD
        = note, empty calendar
        x (calendar - 1F4C5)
+       ~ 1F5D2 FE0E text style
+       ~ 1F5D2 FE0F emoji style
 1F5D3  SPIRAL CALENDAR PAD
        = calendar, day 1
        x (tear-off calendar - 1F4C6)
+       ~ 1F5D3 FE0E text style
+       ~ 1F5D3 FE0F emoji style
 1F5D4  DESKTOP WINDOW
 1F5D5  MINIMIZE
 1F5D6  MAXIMIZE
@@ -44168,13 +46066,19 @@ FFFF  <not a character>
 1F5DB  DECREASE FONT SIZE SYMBOL
 1F5DC  COMPRESSION
        * symbol depicts a hand press with a box inside
+       ~ 1F5DC FE0E text style
+       ~ 1F5DC FE0F emoji style
 1F5DD  OLD KEY
        = encryption
        x (key - 1F511)
+       ~ 1F5DD FE0E text style
+       ~ 1F5DD FE0F emoji style
 @              Miscellaneous symbols
 1F5DE  ROLLED-UP NEWSPAPER
        = news
        x (newspaper - 1F4F0)
+       ~ 1F5DE FE0E text style
+       ~ 1F5DE FE0F emoji style
 1F5DF  PAGE WITH CIRCLED TEXT
        = classified
 1F5E0  STOCK CHART
@@ -44186,12 +46090,16 @@ FFFF  <not a character>
        = rated for violence
        = hate
        x (hocho - 1F52A)
+       ~ 1F5E1 FE0E text style
+       ~ 1F5E1 FE0F emoji style
 1F5E2  LIPS
        = rated for sex
        = kiss
        x (kiss mark - 1F48B)
 1F5E3  SPEAKING HEAD IN SILHOUETTE
        = rated for strong language
+       ~ 1F5E3 FE0E text style
+       ~ 1F5E3 FE0F emoji style
 @              Sound symbols
 1F5E4  THREE RAYS ABOVE
 1F5E5  THREE RAYS BELOW
@@ -44201,6 +46109,8 @@ FFFF    <not a character>
        x (three lines converging left - 269F)
 @              Bubble symbols
 1F5E8  LEFT SPEECH BUBBLE
+       ~ 1F5E8 FE0E text style
+       ~ 1F5E8 FE0F emoji style
 1F5E9  RIGHT SPEECH BUBBLE
 1F5EA  TWO SPEECH BUBBLES
        = chat
@@ -44213,6 +46123,8 @@ FFFF    <not a character>
        = shout left
 1F5EF  RIGHT ANGER BUBBLE
        = shout right
+       ~ 1F5EF FE0E text style
+       ~ 1F5EF FE0F emoji style
 1F5F0  MOOD BUBBLE
        = new
        x (collision symbol - 1F4A5)
@@ -44225,6 +46137,8 @@ FFFF    <not a character>
 1F5F3  BALLOT BOX WITH BALLOT
        = vote
        x (ballot box with x - 2612)
+       ~ 1F5F3 FE0E text style
+       ~ 1F5F3 FE0F emoji style
 1F5F4  BALLOT SCRIPT X
        = x mark
        x (ballot x - 2717)
@@ -44240,6 +46154,8 @@ FFFF    <not a character>
        x (ballot box with check - 2611)
 @              Map symbol
 1F5FA  WORLD MAP
+       ~ 1F5FA FE0E text style
+       ~ 1F5FA FE0F emoji style
 @              Cultural symbols
 1F5FB  MOUNT FUJI
 1F5FC  TOKYO TOWER
@@ -44247,6 +46163,7 @@ FFFF    <not a character>
 1F5FE  SILHOUETTE OF JAPAN
 1F5FF  MOYAI
        * Japanese stone statue like Moai on Easter Island
+@~     !
 @@     1F600   Emoticons       1F64F
 @+             The emoticons have been organized by mouth shape to make it easier to locate the different characters in the code chart.
 @              Faces
@@ -44318,7 +46235,6 @@ FFFF    <not a character>
 1F634  SLEEPING FACE
 1F635  DIZZY FACE
 1F636  FACE WITHOUT MOUTH
-       * used for the South Wind in some Mahjong annotation
        x (white circle with two dots - 2687)
 1F637  FACE WITH MEDICAL MASK
 @              Cat faces
@@ -44345,6 +46261,7 @@ FFFF    <not a character>
        * conveys "no deal" or "not ok", not anger; the inverse of 1F646 face with ok gesture
 1F646  FACE WITH OK GESTURE
 1F647  PERSON BOWING DEEPLY
+       * most commonly depicted as Japanese-style bowing while seated (dogeza)
 1F648  SEE-NO-EVIL MONKEY
 1F649  HEAR-NO-EVIL MONKEY
 1F64A  SPEAK-NO-EVIL MONKEY
@@ -44390,7 +46307,7 @@ FFFF    <not a character>
 1F668  HOLLOW QUILT SQUARE ORNAMENT
 1F669  HOLLOW QUILT SQUARE ORNAMENT IN BLACK SQUARE
 1F66A  SOLID QUILT SQUARE ORNAMENT
-       =  fourfold knot ornament
+       = fourfold knot ornament
 1F66B  SOLID QUILT SQUARE ORNAMENT IN BLACK SQUARE
        = inverse fourfold knot ornament
 @              Rocket ornaments
@@ -44402,7 +46319,7 @@ FFFF    <not a character>
 1F66F  DOWNWARDS ROCKET
 @              Ampersand and ligature et ornaments
 1F670  SCRIPT LIGATURE ET ORNAMENT
-       = italic ampersand lower case
+       = italic ampersand lowercase
        x (tironian sign et - 204A)
 1F671  HEAVY SCRIPT LIGATURE ET ORNAMENT
 1F672  LIGATURE OPEN ET ORNAMENT
@@ -44549,31 +46466,58 @@ FFFF  <not a character>
 @+             These symbols constitute a set along with 1F378 for lounge.
 1F6CB  COUCH AND LAMP
        = furniture, lifestyles
+       ~ 1F6CB FE0E text style
+       ~ 1F6CB FE0F emoji style
 1F6CC  SLEEPING ACCOMMODATION
        = hotel, guestrooms
        x (hotel - 1F3E8)
 1F6CD  SHOPPING BAGS
        = shopping
+       ~ 1F6CD FE0E text style
+       ~ 1F6CD FE0F emoji style
 1F6CE  BELLHOP BELL
        = reception, services
+       ~ 1F6CE FE0E text style
+       ~ 1F6CE FE0F emoji style
 1F6CF  BED
-@              Signage
+       ~ 1F6CF FE0E text style
+       ~ 1F6CF FE0F emoji style
+@              Signage and other symbols
 1F6D0  PLACE OF WORSHIP
+1F6D1  OCTAGONAL SIGN
+       = stop sign
+       * may contain text indicating stop
+       x (warning sign - 26A0)
+       x (heavy white down-pointing triangle - 26DB)
+1F6D2  SHOPPING TROLLEY
+       = shopping cart
 @              Miscellaneous symbols
 1F6E0  HAMMER AND WRENCH
        = tools, repair facility
        x (hammer and pick - 2692)
+       ~ 1F6E0 FE0E text style
+       ~ 1F6E0 FE0F emoji style
 1F6E1  SHIELD
        = US road interstate highway
+       ~ 1F6E1 FE0E text style
+       ~ 1F6E1 FE0F emoji style
 1F6E2  OIL DRUM
        = commodities
+       ~ 1F6E2 FE0E text style
+       ~ 1F6E2 FE0F emoji style
 1F6E3  MOTORWAY
+       ~ 1F6E3 FE0E text style
+       ~ 1F6E3 FE0F emoji style
 1F6E4  RAILWAY TRACK
        = railroad
+       ~ 1F6E4 FE0E text style
+       ~ 1F6E4 FE0F emoji style
 @              Vehicles
 1F6E5  MOTOR BOAT
        = boat
        x (speedboat - 1F6A4)
+       ~ 1F6E5 FE0E text style
+       ~ 1F6E5 FE0F emoji style
 1F6E6  UP-POINTING MILITARY AIRPLANE
        = military airport
 1F6E7  UP-POINTING AIRPLANE
@@ -44582,12 +46526,16 @@ FFFF  <not a character>
 1F6E8  UP-POINTING SMALL AIRPLANE
        = airfield
 1F6E9  SMALL AIRPLANE
+       ~ 1F6E9 FE0E text style
+       ~ 1F6E9 FE0F emoji style
 1F6EA  NORTHEAST-POINTING AIRPLANE
 1F6EB  AIRPLANE DEPARTURE
        = departures
 1F6EC  AIRPLANE ARRIVING
        = arrivals
 1F6F0  SATELLITE
+       ~ 1F6F0 FE0E text style
+       ~ 1F6F0 FE0F emoji style
 1F6F1  ONCOMING FIRE ENGINE
        = fire
        x (fire engine - 1F692)
@@ -44598,6 +46546,12 @@ FFFF   <not a character>
 1F6F3  PASSENGER SHIP
        = cruise line vacation
        x (ship - 1F6A2)
+       ~ 1F6F3 FE0E text style
+       ~ 1F6F3 FE0F emoji style
+1F6F4  SCOOTER
+1F6F5  MOTOR SCOOTER
+1F6F6  CANOE
+@~     !
 @@     1F700   Alchemical Symbols      1F77F
 @              Symbols for Aristotelian elements
 1F700  ALCHEMICAL SYMBOL FOR QUINTESSENCE
@@ -44838,7 +46792,7 @@ FFFF    <not a character>
 1F784  BLACK SLIGHTLY SMALL CIRCLE
 @              White circles
 @+             Adjective refers to the thickness of the ring.
-@+             Constitute a set as follows: 25CB, 2B58, 1F785-1F789
+@+             Constitute a set as follows: 25CB, 2B58, 1F785-1F789
 1F785  MEDIUM BOLD WHITE CIRCLE
        x (medium white circle - 26AA)
 1F786  BOLD WHITE CIRCLE
@@ -45161,8 +47115,101 @@ FFFF  <not a character>
 1F916  ROBOT FACE
        x (alien monster - 1F47E)
 1F917  HUGGING FACE
-@              Hand symbol
+@              Hand symbols
 1F918  SIGN OF THE HORNS
+1F919  CALL ME HAND
+1F91A  RAISED BACK OF HAND
+1F91B  LEFT-FACING FIST
+1F91C  RIGHT-FACING FIST
+1F91D  HANDSHAKE
+1F91E  HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+@              Emoticon faces
+1F920  FACE WITH COWBOY HAT
+1F921  CLOWN FACE
+1F922  NAUSEATED FACE
+1F923  ROLLING ON THE FLOOR LAUGHING
+       = rofl, rotfl
+1F924  DROOLING FACE
+1F925  LYING FACE
+1F926  FACE PALM
+       = frustration, disbelief
+1F927  SNEEZING FACE
+       = gesundheit
+@              Portrait and role symbols
+1F930  PREGNANT WOMAN
+1F933  SELFIE
+       * typically used with face or human figure on the left
+1F934  PRINCE
+       x (princess - 1F478)
+1F935  MAN IN TUXEDO
+       * appearance for groom, may be paired with 1F470
+       x (bride with veil - 1F470)
+1F936  MOTHER CHRISTMAS
+       = Mrs. Claus
+       x (father christmas - 1F385)
+1F937  SHRUG
+1F938  PERSON DOING CARTWHEEL
+       = gymnastics
+1F939  JUGGLING
+1F93A  FENCER
+       = fencing
+       x (crossed swords - 2694)
+1F93B  MODERN PENTATHLON
+1F93C  WRESTLERS
+       = wrestling
+1F93D  WATER POLO
+1F93E  HANDBALL
+@              Miscellaneous symbols
+1F940  WILTED FLOWER
+       x (rose - 1F339)
+1F941  DRUM WITH DRUMSTICKS
+1F942  CLINKING GLASSES
+       = celebration, formal toasting
+       x (clinking beer mugs - 1F37B)
+1F943  TUMBLER GLASS
+       = whisky
+       * typically shown with ice
+       x (cocktail glass - 1F378)
+1F944  SPOON
+       x (fork and knife - 1F374)
+1F945  GOAL NET
+1F946  RIFLE
+       = marksmanship, shooting, hunting
+1F947  FIRST PLACE MEDAL
+       = gold medal
+       x (sports medal - 1F3C5)
+1F948  SECOND PLACE MEDAL
+       = silver medal
+1F949  THIRD PLACE MEDAL
+       = bronze medal
+1F94A  BOXING GLOVE
+       = boxing
+1F94B  MARTIAL ARTS UNIFORM
+       = judo, karate, taekwondo
+@              Food symbols
+1F950  CROISSANT
+1F951  AVOCADO
+1F952  CUCUMBER
+       = pickle
+1F953  BACON
+1F954  POTATO
+1F955  CARROT
+1F956  BAGUETTE BREAD
+       = French bread
+1F957  GREEN SALAD
+1F958  SHALLOW PAN OF FOOD
+       = paella, casserole
+1F959  STUFFED FLATBREAD
+       = döner kebab, falafel, gyro, shawarma
+1F95A  EGG
+       = chicken egg
+1F95B  GLASS OF MILK
+       = milk
+1F95C  PEANUTS
+1F95D  KIWIFRUIT
+1F95E  PANCAKES
+       = hotcakes, crêpes, blini
+       * sweet or savory
 @              Animal symbols
 1F980  CRAB
        * used for Cancer
@@ -45175,6 +47222,19 @@ FFFF   <not a character>
        x (scorpius - 264F)
 1F983  TURKEY
 1F984  UNICORN FACE
+1F985  EAGLE
+1F986  DUCK
+1F987  BAT
+1F988  SHARK
+1F989  OWL
+1F98A  FOX FACE
+1F98B  BUTTERFLY
+1F98C  DEER
+1F98D  GORILLA
+1F98E  LIZARD
+1F98F  RHINOCEROS
+1F990  SHRIMP
+1F991  SQUID
 @              Food symbol
 1F9C0  CHEESE WEDGE
 @@     1FF80   Unassigned      1FFFF
@@ -46447,7 +48507,6 @@ E007D   TAG RIGHT CURLY BRACKET
 E007E  TAG TILDE
 @              Stateful tag terminator
 E007F  CANCEL TAG
-       * This character is deprecated, and its use is strongly discouraged.
 @@     E0100   Variation Selectors Supplement  E01EF
 @+             These complete the set started at FE00 to FE0F
 @              Variation selectors
index 04fc10d..836d29c 100644 (file)
@@ -1,12 +1,14 @@
-# NormalizationCorrections-8.0.0.txt
-# Date: 2015-03-07, 01:30:00 GMT [KW, LI]
+# NormalizationCorrections-9.0.0.txt
+# Date: 2016-01-21, 22:00:00 GMT [KW, LI]
+# © 2016 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# Unicode Character Database
+# For documentation, see http://www.unicode.org/reports/tr44/
 #
 # This file is a normative contributory data file in the
 # Unicode Character Database.
 #
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
 # The normalization stability policy of the Unicode Consortium
 # ordinarily precludes any change to the decomposition
 # for any character, once established in a relevant version
index 2eb2926..a8c0da7 100644 (file)
@@ -1,10 +1,11 @@
-# PropList-8.0.0.txt
-# Date: 2015-05-16, 17:50:38 GMT [MD]
+# PropList-9.0.0.txt
+# Date: 2016-06-01, 10:34:30 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
@@ -192,10 +193,14 @@ FF64          ; Terminal_Punctuation # Po       HALFWIDTH IDEOGRAPHIC COMMA
 111DE..111DF  ; Terminal_Punctuation # Po   [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2
 11238..1123C  ; Terminal_Punctuation # Po   [5] KHOJKI DANDA..KHOJKI DOUBLE SECTION MARK
 112A9         ; Terminal_Punctuation # Po       MULTANI SECTION MARK
+1144B..1144D  ; Terminal_Punctuation # Po   [3] NEWA DANDA..NEWA COMMA
+1145B         ; Terminal_Punctuation # Po       NEWA PLACEHOLDER MARK
 115C2..115C5  ; Terminal_Punctuation # Po   [4] SIDDHAM DANDA..SIDDHAM SEPARATOR BAR
 115C9..115D7  ; Terminal_Punctuation # Po  [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
 11641..11642  ; Terminal_Punctuation # Po   [2] MODI DANDA..MODI DOUBLE DANDA
 1173C..1173E  ; Terminal_Punctuation # Po   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
+11C41..11C43  ; Terminal_Punctuation # Po   [3] BHAIKSUKI DANDA..BHAIKSUKI WORD SEPARATOR
+11C71         ; Terminal_Punctuation # Po       MARCHEN MARK SHAD
 12470..12474  ; Terminal_Punctuation # Po   [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
 16A6E..16A6F  ; Terminal_Punctuation # Po   [2] MRO DANDA..MRO DOUBLE DANDA
 16AF5         ; Terminal_Punctuation # Po       BASSA VAH FULL STOP
@@ -204,7 +209,7 @@ FF64          ; Terminal_Punctuation # Po       HALFWIDTH IDEOGRAPHIC COMMA
 1BC9F         ; Terminal_Punctuation # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
 1DA87..1DA8A  ; Terminal_Punctuation # Po   [4] SIGNWRITING COMMA..SIGNWRITING COLON
 
-# Total code points: 238
+# Total code points: 246
 
 # ================================================
 
@@ -429,6 +434,7 @@ FF41..FF46    ; Hex_Digit # L&   [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
 081B..0823    ; Other_Alphabetic # Mn   [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
 0825..0827    ; Other_Alphabetic # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
 0829..082C    ; Other_Alphabetic # Mn   [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN
+08D4..08DF    ; Other_Alphabetic # Mn  [12] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH WORD WAQFA
 08E3..08E9    ; Other_Alphabetic # Mn   [7] ARABIC TURNED DAMMA BELOW..ARABIC CURLY KASRATAN
 08F0..0902    ; Other_Alphabetic # Mn  [19] ARABIC OPEN FATHATAN..DEVANAGARI SIGN ANUSVARA
 0903          ; Other_Alphabetic # Mc       DEVANAGARI SIGN VISARGA
@@ -556,6 +562,7 @@ FF41..FF46    ; Hex_Digit # L&   [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
 17BE..17C5    ; Other_Alphabetic # Mc   [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
 17C6          ; Other_Alphabetic # Mn       KHMER SIGN NIKAHIT
 17C7..17C8    ; Other_Alphabetic # Mc   [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+1885..1886    ; Other_Alphabetic # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
 18A9          ; Other_Alphabetic # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 1920..1922    ; Other_Alphabetic # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
 1923..1926    ; Other_Alphabetic # Mc   [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
@@ -613,6 +620,7 @@ A825..A826    ; Other_Alphabetic # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NA
 A827          ; Other_Alphabetic # Mc       SYLOTI NAGRI VOWEL SIGN OO
 A880..A881    ; Other_Alphabetic # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
 A8B4..A8C3    ; Other_Alphabetic # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+A8C5          ; Other_Alphabetic # Mn       SAURASHTRA SIGN CANDRABINDU
 A926..A92A    ; Other_Alphabetic # Mn   [5] KAYAH LI VOWEL UE..KAYAH LI VOWEL O
 A947..A951    ; Other_Alphabetic # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
 A952          ; Other_Alphabetic # Mc       REJANG CONSONANT SIGN H
@@ -671,6 +679,7 @@ FB1E          ; Other_Alphabetic # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
 11232..11233  ; Other_Alphabetic # Mc   [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
 11234         ; Other_Alphabetic # Mn       KHOJKI SIGN ANUSVARA
 11237         ; Other_Alphabetic # Mn       KHOJKI SIGN SHADDA
+1123E         ; Other_Alphabetic # Mn       KHOJKI SIGN SUKUN
 112DF         ; Other_Alphabetic # Mn       KHUDAWADI SIGN ANUSVARA
 112E0..112E2  ; Other_Alphabetic # Mc   [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
 112E3..112E8  ; Other_Alphabetic # Mn   [6] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN AU
@@ -683,6 +692,11 @@ FB1E          ; Other_Alphabetic # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
 1134B..1134C  ; Other_Alphabetic # Mc   [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU
 11357         ; Other_Alphabetic # Mc       GRANTHA AU LENGTH MARK
 11362..11363  ; Other_Alphabetic # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11435..11437  ; Other_Alphabetic # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F  ; Other_Alphabetic # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441  ; Other_Alphabetic # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11443..11444  ; Other_Alphabetic # Mn   [2] NEWA SIGN CANDRABINDU..NEWA SIGN ANUSVARA
+11445         ; Other_Alphabetic # Mc       NEWA SIGN VISARGA
 114B0..114B2  ; Other_Alphabetic # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B3..114B8  ; Other_Alphabetic # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
 114B9         ; Other_Alphabetic # Mc       TIRHUTA VOWEL SIGN E
@@ -712,14 +726,31 @@ FB1E          ; Other_Alphabetic # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
 11722..11725  ; Other_Alphabetic # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
 11726         ; Other_Alphabetic # Mc       AHOM VOWEL SIGN E
 11727..1172A  ; Other_Alphabetic # Mn   [4] AHOM VOWEL SIGN AW..AHOM VOWEL SIGN AM
+11C2F         ; Other_Alphabetic # Mc       BHAIKSUKI VOWEL SIGN AA
+11C30..11C36  ; Other_Alphabetic # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; Other_Alphabetic # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3E         ; Other_Alphabetic # Mc       BHAIKSUKI SIGN VISARGA
+11C92..11CA7  ; Other_Alphabetic # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9         ; Other_Alphabetic # Mc       MARCHEN SUBJOINED LETTER YA
+11CAA..11CB0  ; Other_Alphabetic # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB1         ; Other_Alphabetic # Mc       MARCHEN VOWEL SIGN I
+11CB2..11CB3  ; Other_Alphabetic # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4         ; Other_Alphabetic # Mc       MARCHEN VOWEL SIGN O
+11CB5..11CB6  ; Other_Alphabetic # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 16B30..16B36  ; Other_Alphabetic # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
 16F51..16F7E  ; Other_Alphabetic # Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
 1BC9E         ; Other_Alphabetic # Mn       DUPLOYAN DOUBLE MARK
+1E000..1E006  ; Other_Alphabetic # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; Other_Alphabetic # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; Other_Alphabetic # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; Other_Alphabetic # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; Other_Alphabetic # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
+1E947         ; Other_Alphabetic # Mn       ADLAM HAMZA
 1F130..1F149  ; Other_Alphabetic # So  [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z
 1F150..1F169  ; Other_Alphabetic # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
 1F170..1F189  ; Other_Alphabetic # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
 
-# Total code points: 1116
+# Total code points: 1238
 
 # ================================================
 
@@ -731,13 +762,15 @@ FB1E          ; Other_Alphabetic # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
 4E00..9FD5    ; Ideographic # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5
 F900..FA6D    ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
 FA70..FAD9    ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+17000..187EC  ; Ideographic # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; Ideographic # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 20000..2A6D6  ; Ideographic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
 2A700..2B734  ; Ideographic # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
 2B740..2B81D  ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
 2B820..2CEA1  ; Ideographic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
 2F800..2FA1D  ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 
-# Total code points: 81404
+# Total code points: 88284
 
 # ================================================
 
@@ -906,12 +939,15 @@ FFE3          ; Diacritic # Sk       FULLWIDTH MACRON
 1134D         ; Diacritic # Mc       GRANTHA SIGN VIRAMA
 11366..1136C  ; Diacritic # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; Diacritic # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11442         ; Diacritic # Mn       NEWA SIGN VIRAMA
+11446         ; Diacritic # Mn       NEWA SIGN NUKTA
 114C2..114C3  ; Diacritic # Mn   [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
 115BF..115C0  ; Diacritic # Mn   [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
 1163F         ; Diacritic # Mn       MODI SIGN VIRAMA
 116B6         ; Diacritic # Mc       TAKRI SIGN VIRAMA
 116B7         ; Diacritic # Mn       TAKRI SIGN NUKTA
 1172B         ; Diacritic # Mn       AHOM SIGN KILLER
+11C3F         ; Diacritic # Mn       BHAIKSUKI SIGN VIRAMA
 16AF0..16AF4  ; Diacritic # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
 16F8F..16F92  ; Diacritic # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
 16F93..16F9F  ; Diacritic # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
@@ -921,8 +957,10 @@ FFE3          ; Diacritic # Sk       FULLWIDTH MACRON
 1D185..1D18B  ; Diacritic # Mn   [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
 1D1AA..1D1AD  ; Diacritic # Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
 1E8D0..1E8D6  ; Diacritic # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E944..1E946  ; Diacritic # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
+1E948..1E94A  ; Diacritic # Mn   [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA
 
-# Total code points: 773
+# Total code points: 782
 
 # ================================================
 
@@ -952,8 +990,10 @@ FF70          ; Extender # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND
 1135D         ; Extender # Lo       GRANTHA SIGN PLUTA
 115C6..115C8  ; Extender # Po   [3] SIDDHAM REPETITION MARK-1..SIDDHAM REPETITION MARK-3
 16B42..16B43  ; Extender # Lm   [2] PAHAWH HMONG SIGN VOS NRUA..PAHAWH HMONG SIGN IB YAM
+16FE0         ; Extender # Lm       TANGUT ITERATION MARK
+1E944..1E946  ; Extender # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
 
-# Total code points: 38
+# Total code points: 42
 
 # ================================================
 
@@ -1027,7 +1067,7 @@ FFFFE..FFFFF  ; Noncharacter_Code_Point # Cn   [2] <noncharacter-FFFFE>..<noncha
 0D57          ; Other_Grapheme_Extend # Mc       MALAYALAM AU LENGTH MARK
 0DCF          ; Other_Grapheme_Extend # Mc       SINHALA VOWEL SIGN AELA-PILLA
 0DDF          ; Other_Grapheme_Extend # Mc       SINHALA VOWEL SIGN GAYANUKITTA
-200C..200D    ; Other_Grapheme_Extend # Cf   [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
+200C          ; Other_Grapheme_Extend # Cf       ZERO WIDTH NON-JOINER
 302E..302F    ; Other_Grapheme_Extend # Mc   [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
 FF9E..FF9F    ; Other_Grapheme_Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
 1133E         ; Other_Grapheme_Extend # Mc       GRANTHA VOWEL SIGN AA
@@ -1037,8 +1077,9 @@ FF9E..FF9F    ; Other_Grapheme_Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND
 115AF         ; Other_Grapheme_Extend # Mc       SIDDHAM VOWEL SIGN AA
 1D165         ; Other_Grapheme_Extend # Mc       MUSICAL SYMBOL COMBINING STEM
 1D16E..1D172  ; Other_Grapheme_Extend # Mc   [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
+E0020..E007F  ; Other_Grapheme_Extend # Cf  [96] TAG SPACE..CANCEL TAG
 
-# Total code points: 30
+# Total code points: 125
 
 # ================================================
 
@@ -1106,9 +1147,8 @@ E01F0..E0FFF  ; Other_Default_Ignorable_Code_Point # Cn [3600] <reserved-E01F0>.
 2329          ; Deprecated # Ps       LEFT-POINTING ANGLE BRACKET
 232A          ; Deprecated # Pe       RIGHT-POINTING ANGLE BRACKET
 E0001         ; Deprecated # Cf       LANGUAGE TAG
-E007F         ; Deprecated # Cf       CANCEL TAG
 
-# Total code points: 16
+# Total code points: 15
 
 # ================================================
 
@@ -1160,11 +1200,12 @@ AABB..AABC    ; Logical_Order_Exception # Lo   [2] TAI VIET VOWEL AUE..TAI VIET
 
 # ================================================
 
+1885..1886    ; Other_ID_Start # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
 2118          ; Other_ID_Start # Sm       SCRIPT CAPITAL P
 212E          ; Other_ID_Start # So       ESTIMATED SYMBOL
 309B..309C    ; Other_ID_Start # Sk   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
 
-# Total code points: 4
+# Total code points: 6
 
 # ================================================
 
@@ -1177,72 +1218,74 @@ AABB..AABC    ; Logical_Order_Exception # Lo   [2] TAI VIET VOWEL AUE..TAI VIET
 
 # ================================================
 
-0021          ; STerm # Po       EXCLAMATION MARK
-002E          ; STerm # Po       FULL STOP
-003F          ; STerm # Po       QUESTION MARK
-0589          ; STerm # Po       ARMENIAN FULL STOP
-061F          ; STerm # Po       ARABIC QUESTION MARK
-06D4          ; STerm # Po       ARABIC FULL STOP
-0700..0702    ; STerm # Po   [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP
-07F9          ; STerm # Po       NKO EXCLAMATION MARK
-0964..0965    ; STerm # Po   [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
-104A..104B    ; STerm # Po   [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION
-1362          ; STerm # Po       ETHIOPIC FULL STOP
-1367..1368    ; STerm # Po   [2] ETHIOPIC QUESTION MARK..ETHIOPIC PARAGRAPH SEPARATOR
-166E          ; STerm # Po       CANADIAN SYLLABICS FULL STOP
-1735..1736    ; STerm # Po   [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
-1803          ; STerm # Po       MONGOLIAN FULL STOP
-1809          ; STerm # Po       MONGOLIAN MANCHU FULL STOP
-1944..1945    ; STerm # Po   [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
-1AA8..1AAB    ; STerm # Po   [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU
-1B5A..1B5B    ; STerm # Po   [2] BALINESE PANTI..BALINESE PAMADA
-1B5E..1B5F    ; STerm # Po   [2] BALINESE CARIK SIKI..BALINESE CARIK PAREREN
-1C3B..1C3C    ; STerm # Po   [2] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION NYET THYOOM TA-ROL
-1C7E..1C7F    ; STerm # Po   [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
-203C..203D    ; STerm # Po   [2] DOUBLE EXCLAMATION MARK..INTERROBANG
-2047..2049    ; STerm # Po   [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
-2E2E          ; STerm # Po       REVERSED QUESTION MARK
-2E3C          ; STerm # Po       STENOGRAPHIC FULL STOP
-3002          ; STerm # Po       IDEOGRAPHIC FULL STOP
-A4FF          ; STerm # Po       LISU PUNCTUATION FULL STOP
-A60E..A60F    ; STerm # Po   [2] VAI FULL STOP..VAI QUESTION MARK
-A6F3          ; STerm # Po       BAMUM FULL STOP
-A6F7          ; STerm # Po       BAMUM QUESTION MARK
-A876..A877    ; STerm # Po   [2] PHAGS-PA MARK SHAD..PHAGS-PA MARK DOUBLE SHAD
-A8CE..A8CF    ; STerm # Po   [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
-A92F          ; STerm # Po       KAYAH LI SIGN SHYA
-A9C8..A9C9    ; STerm # Po   [2] JAVANESE PADA LINGSA..JAVANESE PADA LUNGSI
-AA5D..AA5F    ; STerm # Po   [3] CHAM PUNCTUATION DANDA..CHAM PUNCTUATION TRIPLE DANDA
-AAF0..AAF1    ; STerm # Po   [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM
-ABEB          ; STerm # Po       MEETEI MAYEK CHEIKHEI
-FE52          ; STerm # Po       SMALL FULL STOP
-FE56..FE57    ; STerm # Po   [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK
-FF01          ; STerm # Po       FULLWIDTH EXCLAMATION MARK
-FF0E          ; STerm # Po       FULLWIDTH FULL STOP
-FF1F          ; STerm # Po       FULLWIDTH QUESTION MARK
-FF61          ; STerm # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
-10A56..10A57  ; STerm # Po   [2] KHAROSHTHI PUNCTUATION DANDA..KHAROSHTHI PUNCTUATION DOUBLE DANDA
-11047..11048  ; STerm # Po   [2] BRAHMI DANDA..BRAHMI DOUBLE DANDA
-110BE..110C1  ; STerm # Po   [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
-11141..11143  ; STerm # Po   [3] CHAKMA DANDA..CHAKMA QUESTION MARK
-111C5..111C6  ; STerm # Po   [2] SHARADA DANDA..SHARADA DOUBLE DANDA
-111CD         ; STerm # Po       SHARADA SUTRA MARK
-111DE..111DF  ; STerm # Po   [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2
-11238..11239  ; STerm # Po   [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA
-1123B..1123C  ; STerm # Po   [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK
-112A9         ; STerm # Po       MULTANI SECTION MARK
-115C2..115C3  ; STerm # Po   [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA
-115C9..115D7  ; STerm # Po  [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
-11641..11642  ; STerm # Po   [2] MODI DANDA..MODI DOUBLE DANDA
-1173C..1173E  ; STerm # Po   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
-16A6E..16A6F  ; STerm # Po   [2] MRO DANDA..MRO DOUBLE DANDA
-16AF5         ; STerm # Po       BASSA VAH FULL STOP
-16B37..16B38  ; STerm # Po   [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB
-16B44         ; STerm # Po       PAHAWH HMONG SIGN XAUS
-1BC9F         ; STerm # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
-1DA88         ; STerm # Po       SIGNWRITING FULL STOP
-
-# Total code points: 120
+0021          ; Sentence_Terminal # Po       EXCLAMATION MARK
+002E          ; Sentence_Terminal # Po       FULL STOP
+003F          ; Sentence_Terminal # Po       QUESTION MARK
+0589          ; Sentence_Terminal # Po       ARMENIAN FULL STOP
+061F          ; Sentence_Terminal # Po       ARABIC QUESTION MARK
+06D4          ; Sentence_Terminal # Po       ARABIC FULL STOP
+0700..0702    ; Sentence_Terminal # Po   [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP
+07F9          ; Sentence_Terminal # Po       NKO EXCLAMATION MARK
+0964..0965    ; Sentence_Terminal # Po   [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
+104A..104B    ; Sentence_Terminal # Po   [2] MYANMAR SIGN LITTLE SECTION..MYANMAR SIGN SECTION
+1362          ; Sentence_Terminal # Po       ETHIOPIC FULL STOP
+1367..1368    ; Sentence_Terminal # Po   [2] ETHIOPIC QUESTION MARK..ETHIOPIC PARAGRAPH SEPARATOR
+166E          ; Sentence_Terminal # Po       CANADIAN SYLLABICS FULL STOP
+1735..1736    ; Sentence_Terminal # Po   [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
+1803          ; Sentence_Terminal # Po       MONGOLIAN FULL STOP
+1809          ; Sentence_Terminal # Po       MONGOLIAN MANCHU FULL STOP
+1944..1945    ; Sentence_Terminal # Po   [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
+1AA8..1AAB    ; Sentence_Terminal # Po   [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU
+1B5A..1B5B    ; Sentence_Terminal # Po   [2] BALINESE PANTI..BALINESE PAMADA
+1B5E..1B5F    ; Sentence_Terminal # Po   [2] BALINESE CARIK SIKI..BALINESE CARIK PAREREN
+1C3B..1C3C    ; Sentence_Terminal # Po   [2] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION NYET THYOOM TA-ROL
+1C7E..1C7F    ; Sentence_Terminal # Po   [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
+203C..203D    ; Sentence_Terminal # Po   [2] DOUBLE EXCLAMATION MARK..INTERROBANG
+2047..2049    ; Sentence_Terminal # Po   [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2E2E          ; Sentence_Terminal # Po       REVERSED QUESTION MARK
+2E3C          ; Sentence_Terminal # Po       STENOGRAPHIC FULL STOP
+3002          ; Sentence_Terminal # Po       IDEOGRAPHIC FULL STOP
+A4FF          ; Sentence_Terminal # Po       LISU PUNCTUATION FULL STOP
+A60E..A60F    ; Sentence_Terminal # Po   [2] VAI FULL STOP..VAI QUESTION MARK
+A6F3          ; Sentence_Terminal # Po       BAMUM FULL STOP
+A6F7          ; Sentence_Terminal # Po       BAMUM QUESTION MARK
+A876..A877    ; Sentence_Terminal # Po   [2] PHAGS-PA MARK SHAD..PHAGS-PA MARK DOUBLE SHAD
+A8CE..A8CF    ; Sentence_Terminal # Po   [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
+A92F          ; Sentence_Terminal # Po       KAYAH LI SIGN SHYA
+A9C8..A9C9    ; Sentence_Terminal # Po   [2] JAVANESE PADA LINGSA..JAVANESE PADA LUNGSI
+AA5D..AA5F    ; Sentence_Terminal # Po   [3] CHAM PUNCTUATION DANDA..CHAM PUNCTUATION TRIPLE DANDA
+AAF0..AAF1    ; Sentence_Terminal # Po   [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM
+ABEB          ; Sentence_Terminal # Po       MEETEI MAYEK CHEIKHEI
+FE52          ; Sentence_Terminal # Po       SMALL FULL STOP
+FE56..FE57    ; Sentence_Terminal # Po   [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK
+FF01          ; Sentence_Terminal # Po       FULLWIDTH EXCLAMATION MARK
+FF0E          ; Sentence_Terminal # Po       FULLWIDTH FULL STOP
+FF1F          ; Sentence_Terminal # Po       FULLWIDTH QUESTION MARK
+FF61          ; Sentence_Terminal # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
+10A56..10A57  ; Sentence_Terminal # Po   [2] KHAROSHTHI PUNCTUATION DANDA..KHAROSHTHI PUNCTUATION DOUBLE DANDA
+11047..11048  ; Sentence_Terminal # Po   [2] BRAHMI DANDA..BRAHMI DOUBLE DANDA
+110BE..110C1  ; Sentence_Terminal # Po   [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
+11141..11143  ; Sentence_Terminal # Po   [3] CHAKMA DANDA..CHAKMA QUESTION MARK
+111C5..111C6  ; Sentence_Terminal # Po   [2] SHARADA DANDA..SHARADA DOUBLE DANDA
+111CD         ; Sentence_Terminal # Po       SHARADA SUTRA MARK
+111DE..111DF  ; Sentence_Terminal # Po   [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2
+11238..11239  ; Sentence_Terminal # Po   [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA
+1123B..1123C  ; Sentence_Terminal # Po   [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK
+112A9         ; Sentence_Terminal # Po       MULTANI SECTION MARK
+1144B..1144C  ; Sentence_Terminal # Po   [2] NEWA DANDA..NEWA DOUBLE DANDA
+115C2..115C3  ; Sentence_Terminal # Po   [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA
+115C9..115D7  ; Sentence_Terminal # Po  [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
+11641..11642  ; Sentence_Terminal # Po   [2] MODI DANDA..MODI DOUBLE DANDA
+1173C..1173E  ; Sentence_Terminal # Po   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
+11C41..11C42  ; Sentence_Terminal # Po   [2] BHAIKSUKI DANDA..BHAIKSUKI DOUBLE DANDA
+16A6E..16A6F  ; Sentence_Terminal # Po   [2] MRO DANDA..MRO DOUBLE DANDA
+16AF5         ; Sentence_Terminal # Po       BASSA VAH FULL STOP
+16B37..16B38  ; Sentence_Terminal # Po   [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB
+16B44         ; Sentence_Terminal # Po       PAHAWH HMONG SIGN XAUS
+1BC9F         ; Sentence_Terminal # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
+1DA88         ; Sentence_Terminal # Po       SIGNWRITING FULL STOP
+
+# Total code points: 124
 
 # ================================================
 
@@ -1359,8 +1402,8 @@ E0100..E01EF  ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION S
 239B..23B3    ; Pattern_Syntax # Sm  [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
 23B4..23DB    ; Pattern_Syntax # So  [40] TOP SQUARE BRACKET..FUSE
 23DC..23E1    ; Pattern_Syntax # Sm   [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
-23E2..23FA    ; Pattern_Syntax # So  [25] WHITE TRAPEZIUM..BLACK CIRCLE FOR RECORD
-23FB..23FF    ; Pattern_Syntax # Cn   [5] <reserved-23FB>..<reserved-23FF>
+23E2..23FE    ; Pattern_Syntax # So  [29] WHITE TRAPEZIUM..POWER SLEEP SYMBOL
+23FF          ; Pattern_Syntax # Cn       <reserved-23FF>
 2400..2426    ; Pattern_Syntax # So  [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
 2427..243F    ; Pattern_Syntax # Cn  [25] <reserved-2427>..<reserved-243F>
 2440..244A    ; Pattern_Syntax # So  [11] OCR HOOK..OCR DOUBLE BACKSLASH
@@ -1490,7 +1533,8 @@ E0100..E01EF  ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION S
 2E40          ; Pattern_Syntax # Pd       DOUBLE HYPHEN
 2E41          ; Pattern_Syntax # Po       REVERSED COMMA
 2E42          ; Pattern_Syntax # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
-2E43..2E7F    ; Pattern_Syntax # Cn  [61] <reserved-2E43>..<reserved-2E7F>
+2E43..2E44    ; Pattern_Syntax # Po   [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
+2E45..2E7F    ; Pattern_Syntax # Cn  [59] <reserved-2E45>..<reserved-2E7F>
 3001..3003    ; Pattern_Syntax # Po   [3] IDEOGRAPHIC COMMA..DITTO MARK
 3008          ; Pattern_Syntax # Ps       LEFT ANGLE BRACKET
 3009          ; Pattern_Syntax # Pe       RIGHT ANGLE BRACKET
@@ -1522,4 +1566,14 @@ FE45..FE46    ; Pattern_Syntax # Po   [2] SESAME DOT..WHITE SESAME DOT
 
 # Total code points: 2760
 
+# ================================================
+
+0600..0605    ; Prepended_Concatenation_Mark # Cf   [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
+06DD          ; Prepended_Concatenation_Mark # Cf       ARABIC END OF AYAH
+070F          ; Prepended_Concatenation_Mark # Cf       SYRIAC ABBREVIATION MARK
+08E2          ; Prepended_Concatenation_Mark # Cf       ARABIC DISPUTED END OF AYAH
+110BD         ; Prepended_Concatenation_Mark # Cf       KAITHI NUMBER SIGN
+
+# Total code points: 10
+
 # EOF
index 5957446..f56ab59 100644 (file)
@@ -1,10 +1,11 @@
-# PropertyValueAliases-8.0.0.txt
-# Date: 2015-03-11, 22:29:33 GMT [MD]
+# PropertyValueAliases-9.0.0.txt
+# Date: 2016-03-02, 18:55:05 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # This file contains aliases for property values used in the UCD.
 # These names can be used for XML formats of UCD data, for regular-expression
@@ -78,6 +79,7 @@ age; 6.2                              ; V6_2
 age; 6.3                              ; V6_3
 age; 7.0                              ; V7_0
 age; 8.0                              ; V8_0
+age; 9.0                              ; V9_0
 age; NA                               ; Unassigned
 
 # Alphabetic (Alpha)
@@ -138,6 +140,7 @@ bpt; o                                ; Open
 
 # Block (blk)
 
+blk; Adlam                            ; Adlam
 blk; Aegean_Numbers                   ; Aegean_Numbers
 blk; Ahom                             ; Ahom
 blk; Alchemical                       ; Alchemical_Symbols
@@ -162,6 +165,7 @@ blk; Bamum_Sup                        ; Bamum_Supplement
 blk; Bassa_Vah                        ; Bassa_Vah
 blk; Batak                            ; Batak
 blk; Bengali                          ; Bengali
+blk; Bhaiksuki                        ; Bhaiksuki
 blk; Block_Elements                   ; Block_Elements
 blk; Bopomofo                         ; Bopomofo
 blk; Bopomofo_Ext                     ; Bopomofo_Extended
@@ -202,6 +206,7 @@ blk; Cypriot_Syllabary                ; Cypriot_Syllabary
 blk; Cyrillic                         ; Cyrillic
 blk; Cyrillic_Ext_A                   ; Cyrillic_Extended_A
 blk; Cyrillic_Ext_B                   ; Cyrillic_Extended_B
+blk; Cyrillic_Ext_C                   ; Cyrillic_Extended_C
 blk; Cyrillic_Sup                     ; Cyrillic_Supplement              ; Cyrillic_Supplementary
 blk; Deseret                          ; Deseret
 blk; Devanagari                       ; Devanagari
@@ -230,6 +235,7 @@ blk; Geometric_Shapes_Ext             ; Geometric_Shapes_Extended
 blk; Georgian                         ; Georgian
 blk; Georgian_Sup                     ; Georgian_Supplement
 blk; Glagolitic                       ; Glagolitic
+blk; Glagolitic_Sup                   ; Glagolitic_Supplement
 blk; Gothic                           ; Gothic
 blk; Grantha                          ; Grantha
 blk; Greek                            ; Greek_And_Coptic
@@ -246,6 +252,7 @@ blk; High_PU_Surrogates               ; High_Private_Use_Surrogates
 blk; High_Surrogates                  ; High_Surrogates
 blk; Hiragana                         ; Hiragana
 blk; IDC                              ; Ideographic_Description_Characters
+blk; Ideographic_Symbols              ; Ideographic_Symbols_And_Punctuation
 blk; Imperial_Aramaic                 ; Imperial_Aramaic
 blk; Indic_Number_Forms               ; Common_Indic_Number_Forms
 blk; Inscriptional_Pahlavi            ; Inscriptional_Pahlavi
@@ -291,6 +298,7 @@ blk; Mahjong                          ; Mahjong_Tiles
 blk; Malayalam                        ; Malayalam
 blk; Mandaic                          ; Mandaic
 blk; Manichaean                       ; Manichaean
+blk; Marchen                          ; Marchen
 blk; Math_Alphanum                    ; Mathematical_Alphanumeric_Symbols
 blk; Math_Operators                   ; Mathematical_Operators
 blk; Meetei_Mayek                     ; Meetei_Mayek
@@ -309,6 +317,7 @@ blk; Modi                             ; Modi
 blk; Modifier_Letters                 ; Spacing_Modifier_Letters
 blk; Modifier_Tone_Letters            ; Modifier_Tone_Letters
 blk; Mongolian                        ; Mongolian
+blk; Mongolian_Sup                    ; Mongolian_Supplement
 blk; Mro                              ; Mro
 blk; Multani                          ; Multani
 blk; Music                            ; Musical_Symbols
@@ -318,6 +327,7 @@ blk; Myanmar_Ext_B                    ; Myanmar_Extended_B
 blk; Nabataean                        ; Nabataean
 blk; NB                               ; No_Block
 blk; New_Tai_Lue                      ; New_Tai_Lue
+blk; Newa                             ; Newa
 blk; NKo                              ; NKo
 blk; Number_Forms                     ; Number_Forms
 blk; OCR                              ; Optical_Character_Recognition
@@ -332,6 +342,7 @@ blk; Old_South_Arabian                ; Old_South_Arabian
 blk; Old_Turkic                       ; Old_Turkic
 blk; Oriya                            ; Oriya
 blk; Ornamental_Dingbats              ; Ornamental_Dingbats
+blk; Osage                            ; Osage
 blk; Osmanya                          ; Osmanya
 blk; Pahawh_Hmong                     ; Pahawh_Hmong
 blk; Palmyrene                        ; Palmyrene
@@ -382,6 +393,8 @@ blk; Tai_Viet                         ; Tai_Viet
 blk; Tai_Xuan_Jing                    ; Tai_Xuan_Jing_Symbols
 blk; Takri                            ; Takri
 blk; Tamil                            ; Tamil
+blk; Tangut                           ; Tangut
+blk; Tangut_Components                ; Tangut_Components
 blk; Telugu                           ; Telugu
 blk; Thaana                           ; Thaana
 blk; Thai                             ; Thai
@@ -650,7 +663,11 @@ Gr_Base; Y                            ; Yes                              ; T
 
 GCB; CN                               ; Control
 GCB; CR                               ; CR
+GCB; EB                               ; E_Base
+GCB; EBG                              ; E_Base_GAZ
+GCB; EM                               ; E_Modifier
 GCB; EX                               ; Extend
+GCB; GAZ                              ; Glue_After_Zwj
 GCB; L                                ; L
 GCB; LF                               ; LF
 GCB; LV                               ; LV
@@ -661,6 +678,7 @@ GCB; SM                               ; SpacingMark
 GCB; T                                ; T
 GCB; V                                ; V
 GCB; XX                               ; Other
+GCB; ZWJ                              ; ZWJ
 
 # Grapheme_Extend (Gr_Ext)
 
@@ -838,6 +856,9 @@ Join_C; Y                             ; Yes                              ; T
 
 # Joining_Group (jg)
 
+jg ; African_Feh                      ; African_Feh
+jg ; African_Noon                     ; African_Noon
+jg ; African_Qaf                      ; African_Qaf
 jg ; Ain                              ; Ain
 jg ; Alaph                            ; Alaph
 jg ; Alef                             ; Alef
@@ -948,6 +969,8 @@ lb ; CL                               ; Close_Punctuation
 lb ; CM                               ; Combining_Mark
 lb ; CP                               ; Close_Parenthesis
 lb ; CR                               ; Carriage_Return
+lb ; EB                               ; E_Base
+lb ; EM                               ; E_Modifier
 lb ; EX                               ; Exclamation
 lb ; GL                               ; Glue
 lb ; H2                               ; H2
@@ -976,6 +999,7 @@ lb ; SY                               ; Break_Symbols
 lb ; WJ                               ; Word_Joiner
 lb ; XX                               ; Unknown
 lb ; ZW                               ; ZWSpace
+lb ; ZWJ                              ; ZWJ
 
 # Logical_Order_Exception (LOE)
 
@@ -1096,6 +1120,11 @@ Pat_Syn; Y                            ; Yes                              ; T
 Pat_WS; N                             ; No                               ; F                                ; False
 Pat_WS; Y                             ; Yes                              ; T                                ; True
 
+# Prepended_Concatenation_Mark (PCM)
+
+PCM; N                                ; No                               ; F                                ; False
+PCM; Y                                ; Yes                              ; T                                ; True
+
 # Quotation_Mark (QMark)
 
 QMark; N                              ; No                               ; F                                ; False
@@ -1106,13 +1135,9 @@ QMark; Y                              ; Yes                              ; T
 Radical; N                            ; No                               ; F                                ; False
 Radical; Y                            ; Yes                              ; T                                ; True
 
-# STerm (STerm)
-
-STerm; N                              ; No                               ; F                                ; False
-STerm; Y                              ; Yes                              ; T                                ; True
-
 # Script (sc)
 
+sc ; Adlm                             ; Adlam
 sc ; Aghb                             ; Caucasian_Albanian
 sc ; Ahom                             ; Ahom
 sc ; Arab                             ; Arabic
@@ -1124,6 +1149,7 @@ sc ; Bamu                             ; Bamum
 sc ; Bass                             ; Bassa_Vah
 sc ; Batk                             ; Batak
 sc ; Beng                             ; Bengali
+sc ; Bhks                             ; Bhaiksuki
 sc ; Bopo                             ; Bopomofo
 sc ; Brah                             ; Brahmi
 sc ; Brai                             ; Braille
@@ -1182,6 +1208,7 @@ sc ; Lydi                             ; Lydian
 sc ; Mahj                             ; Mahajani
 sc ; Mand                             ; Mandaic
 sc ; Mani                             ; Manichaean
+sc ; Marc                             ; Marchen
 sc ; Mend                             ; Mende_Kikakui
 sc ; Merc                             ; Meroitic_Cursive
 sc ; Mero                             ; Meroitic_Hieroglyphs
@@ -1194,11 +1221,13 @@ sc ; Mult                             ; Multani
 sc ; Mymr                             ; Myanmar
 sc ; Narb                             ; Old_North_Arabian
 sc ; Nbat                             ; Nabataean
+sc ; Newa                             ; Newa
 sc ; Nkoo                             ; Nko
 sc ; Ogam                             ; Ogham
 sc ; Olck                             ; Ol_Chiki
 sc ; Orkh                             ; Old_Turkic
 sc ; Orya                             ; Oriya
+sc ; Osge                             ; Osage
 sc ; Osma                             ; Osmanya
 sc ; Palm                             ; Palmyrene
 sc ; Pauc                             ; Pau_Cin_Hau
@@ -1229,6 +1258,7 @@ sc ; Takr                             ; Takri
 sc ; Tale                             ; Tai_Le
 sc ; Talu                             ; New_Tai_Lue
 sc ; Taml                             ; Tamil
+sc ; Tang                             ; Tangut
 sc ; Tavt                             ; Tai_Viet
 sc ; Telu                             ; Telugu
 sc ; Tfng                             ; Tifinagh
@@ -1269,6 +1299,11 @@ SB ; ST                               ; STerm
 SB ; UP                               ; Upper
 SB ; XX                               ; Other
 
+# Sentence_Terminal (STerm)
+
+STerm; N                              ; No                               ; F                                ; False
+STerm; Y                              ; Yes                              ; T                                ; True
+
 # Simple_Case_Folding (scf)
 
 # @missing: 0000..10FFFF; Simple_Case_Folding; <code point>
@@ -1331,9 +1366,13 @@ WSpace; Y                             ; Yes                              ; T
 
 WB ; CR                               ; CR
 WB ; DQ                               ; Double_Quote
+WB ; EB                               ; E_Base
+WB ; EBG                              ; E_Base_GAZ
+WB ; EM                               ; E_Modifier
 WB ; EX                               ; ExtendNumLet
 WB ; Extend                           ; Extend
 WB ; FO                               ; Format
+WB ; GAZ                              ; Glue_After_Zwj
 WB ; HL                               ; Hebrew_Letter
 WB ; KA                               ; Katakana
 WB ; LE                               ; ALetter
@@ -1346,6 +1385,7 @@ WB ; NU                               ; Numeric
 WB ; RI                               ; Regional_Indicator
 WB ; SQ                               ; Single_Quote
 WB ; XX                               ; Other
+WB ; ZWJ                              ; ZWJ
 
 # XID_Continue (XIDC)
 
index 18dff71..5284682 100644 (file)
@@ -1,10 +1,11 @@
-# PropertyAliases-8.0.0.txt
-# Date: 2015-02-14, 10:26:09 GMT [MD]
+# PropertyAliases-9.0.0.txt
+# Date: 2016-03-02, 18:55:05 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # This file contains aliases for properties used in the UCD.
 # These names can be used for XML formats of UCD data, for regular-expression
@@ -171,10 +172,11 @@ OMath                    ; Other_Math
 OUpper                   ; Other_Uppercase
 Pat_Syn                  ; Pattern_Syntax
 Pat_WS                   ; Pattern_White_Space
+PCM                      ; Prepended_Concatenation_Mark
 QMark                    ; Quotation_Mark
 Radical                  ; Radical
 SD                       ; Soft_Dotted
-STerm                    ; STerm
+STerm                    ; Sentence_Terminal
 Term                     ; Terminal_Punctuation
 UIdeo                    ; Unified_Ideograph
 Upper                    ; Uppercase
@@ -188,6 +190,6 @@ XO_NFKC                  ; Expands_On_NFKC
 XO_NFKD                  ; Expands_On_NFKD
 
 # ================================================
-# Total:    117
+# Total:    118
 
 # EOF
index fc4a904..5da3522 100644 (file)
@@ -1,7 +1,7 @@
-# Date: 2015-06-16, 20:24:00 GMT [KW]
-#
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
+# Date: 2016-06-20, 14:59:00 GMT [KW]
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
 # For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # For documentation, see the following:
@@ -9,9 +9,7 @@
 # UAX #38, "Unicode Han Database (Unihan)"
 # UAX #44, "Unicode Character Database."
 #
-# The UAXes can be accessed at http://www.unicode.org/versions/Unicode8.0.0/
+# The UAXes can be accessed at http://www.unicode.org/versions/Unicode9.0.0/
 
 This directory contains the final data files
-for the Unicode Character Database, for Version 8.0.0 of the Unicode
-Standard.
-
+for the Unicode Character Database, for Version 9.0.0 of the Unicode Standard.
index b0cda87..4bf9a23 100644 (file)
@@ -1,10 +1,11 @@
-# ScriptExtensions-8.0.0.txt
-# Date: 2015-05-14, 22:31:55 GMT [MD]
+# ScriptExtensions-9.0.0.txt
+# Date: 2016-06-01, 10:34:37 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # The Script_Extensions property indicates which characters are commonly used
 # with more than one script, but with a limited number of scripts.
 
 # Script_Extensions=Hani
 
+3006          ; Hani # Lo       IDEOGRAPHIC CLOSING MARK
+303E..303F    ; Hani # So   [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
+3190..3191    ; Hani # So   [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
+3192..3195    ; Hani # No   [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+3196..319F    ; Hani # So  [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+31C0..31E3    ; Hani # So  [36] CJK STROKE T..CJK STROKE Q
+3220..3229    ; Hani # No  [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3247    ; Hani # So  [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO
+3280..3289    ; Hani # No  [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+328A..32B0    ; Hani # So  [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+32C0..32CB    ; Hani # So  [12] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+3358..3370    ; Hani # So  [25] IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO..IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+337B..337F    ; Hani # So   [5] SQUARE ERA NAME HEISEI..SQUARE CORPORATION
+33E0..33FE    ; Hani # So  [31] IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
 1D360..1D371  ; Hani # No  [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
+1F250..1F251  ; Hani # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
 
-# Total code points: 18
+# Total code points: 237
 
 # ================================================
 
@@ -126,6 +142,14 @@ FDFD          ; Arab Thaa # So       ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHE
 
 # ================================================
 
+# Script_Extensions=Beng Deva
+
+A8F1          ; Beng Deva # Mn       COMBINING DEVANAGARI SIGN AVAGRAHA
+
+# Total code points: 1
+
+# ================================================
+
 # Script_Extensions=Bopo Hani
 
 302A..302D    ; Bopo Hani # Mn   [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
@@ -145,19 +169,20 @@ A9CF          ; Bugi Java # Lm       JAVANESE PANGRANGKEP
 # Script_Extensions=Cprt Linb
 
 10100..10102  ; Cprt Linb # Po   [3] AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK
-10107..10133  ; Cprt Linb # No  [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
 10137..1013F  ; Cprt Linb # So   [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
 
-# Total code points: 57
+# Total code points: 12
 
 # ================================================
 
 # Script_Extensions=Cyrl Glag
 
+0484          ; Cyrl Glag # Mn       COMBINING CYRILLIC PALATALIZATION
 0487          ; Cyrl Glag # Mn       COMBINING CYRILLIC POKRYTIE
+2E43          ; Cyrl Glag # Po       DASH WITH LEFT UPTURN
 A66F          ; Cyrl Glag # Mn       COMBINING CYRILLIC VZMET
 
-# Total code points: 2
+# Total code points: 4
 
 # ================================================
 
@@ -217,14 +242,24 @@ A8F3          ; Deva Taml # Lo       DEVANAGARI SIGN CANDRABINDU VIRAMA
 
 # ================================================
 
+# Script_Extensions=Geor Latn
+
+10FB          ; Geor Latn # Po       GEORGIAN PARAGRAPH SEPARATOR
+
+# Total code points: 1
+
+# ================================================
+
 # Script_Extensions=Gran Taml
 
 0BAA          ; Gran Taml # Lo       TAMIL LETTER PA
 0BB5          ; Gran Taml # Lo       TAMIL LETTER VA
 0BE6..0BEF    ; Gran Taml # Nd  [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
 0BF0..0BF2    ; Gran Taml # No   [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
+11303         ; Gran Taml # Mc       GRANTHA SIGN VISARGA
+1133C         ; Gran Taml # Mn       GRANTHA SIGN NUKTA
 
-# Total code points: 15
+# Total code points: 17
 
 # ================================================
 
@@ -293,6 +328,14 @@ FF9E..FF9F    ; Hira Kana # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFW
 
 # ================================================
 
+# Script_Extensions=Cprt Lina Linb
+
+10107..10133  ; Cprt Lina Linb # No  [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
+
+# Total code points: 45
+
+# ================================================
+
 # Script_Extensions=Deva Gran Latn
 
 20F0          ; Deva Gran Latn # Mn       COMBINING ASTERISK ABOVE
@@ -311,14 +354,10 @@ FF9E..FF9F    ; Hira Kana # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFW
 
 # Script_Extensions=Hani Hira Kana
 
-3006          ; Hani Hira Kana # Lo       IDEOGRAPHIC CLOSING MARK
 303C          ; Hani Hira Kana # Lo       MASU MARK
 303D          ; Hani Hira Kana # Po       PART ALTERNATION MARK
-3190..3191    ; Hani Hira Kana # So   [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
-3192..3195    ; Hani Hira Kana # No   [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
-3196..319F    ; Hani Hira Kana # So  [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
 
-# Total code points: 19
+# Total code points: 2
 
 # ================================================
 
@@ -338,14 +377,6 @@ A92E          ; Kali Latn Mymr # Po       KAYAH LI SIGN CWI
 
 # ================================================
 
-# Script_Extensions=Arab Mand Mani Phlp Syrc
-
-0640          ; Arab Mand Mani Phlp Syrc # Lm       ARABIC TATWEEL
-
-# Total code points: 1
-
-# ================================================
-
 # Script_Extensions=Bopo Hang Hani Hira Kana
 
 3003          ; Bopo Hang Hani Hira Kana # Po       DITTO MARK
@@ -355,19 +386,9 @@ A92E          ; Kali Latn Mymr # Po       KAYAH LI SIGN CWI
 301E..301F    ; Bopo Hang Hani Hira Kana # Pe   [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
 3030          ; Bopo Hang Hani Hira Kana # Pd       WAVY DASH
 3037          ; Bopo Hang Hani Hira Kana # So       IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
-303E..303F    ; Bopo Hang Hani Hira Kana # So   [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
-31C0..31E3    ; Bopo Hang Hani Hira Kana # So  [36] CJK STROKE T..CJK STROKE Q
-3220..3229    ; Bopo Hang Hani Hira Kana # No  [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
-322A..3243    ; Bopo Hang Hani Hira Kana # So  [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
-3280..3289    ; Bopo Hang Hani Hira Kana # No  [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
-328A..32B0    ; Bopo Hang Hani Hira Kana # So  [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
-32C0..32CB    ; Bopo Hang Hani Hira Kana # So  [12] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
-3358..3370    ; Bopo Hang Hani Hira Kana # So  [25] IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO..IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
-337B..337F    ; Bopo Hang Hani Hira Kana # So   [5] SQUARE ERA NAME HEISEI..SQUARE CORPORATION
-33E0..33FE    ; Bopo Hang Hani Hira Kana # So  [31] IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE..IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
 FE45..FE46    ; Bopo Hang Hani Hira Kana # Po   [2] SESAME DOT..WHITE SESAME DOT
 
-# Total code points: 206
+# Total code points: 10
 
 # ================================================
 
@@ -379,6 +400,14 @@ FE45..FE46    ; Bopo Hang Hani Hira Kana # Po   [2] SESAME DOT..WHITE SESAME DOT
 
 # ================================================
 
+# Script_Extensions=Adlm Arab Mand Mani Phlp Syrc
+
+0640          ; Adlm Arab Mand Mani Phlp Syrc # Lm       ARABIC TATWEEL
+
+# Total code points: 1
+
+# ================================================
+
 # Script_Extensions=Bopo Hang Hani Hira Kana Yiii
 
 3001..3002    ; Bopo Hang Hani Hira Kana Yiii # Po   [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP
@@ -412,12 +441,19 @@ FF64..FF65    ; Bopo Hang Hani Hira Kana Yiii # Po   [2] HALFWIDTH IDEOGRAPHIC C
 
 # Script_Extensions=Deva Gujr Guru Kthi Mahj Modi Sind Takr Tirh
 
-A830..A835    ; Deva Gujr Guru Kthi Mahj Modi Sind Takr Tirh # No   [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS
 A836..A837    ; Deva Gujr Guru Kthi Mahj Modi Sind Takr Tirh # So   [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK
 A838          ; Deva Gujr Guru Kthi Mahj Modi Sind Takr Tirh # Sc       NORTH INDIC RUPEE MARK
 A839          ; Deva Gujr Guru Kthi Mahj Modi Sind Takr Tirh # So       NORTH INDIC QUANTITY MARK
 
-# Total code points: 10
+# Total code points: 4
+
+# ================================================
+
+# Script_Extensions=Deva Gujr Guru Knda Kthi Mahj Modi Sind Takr Tirh
+
+A830..A835    ; Deva Gujr Guru Knda Kthi Mahj Modi Sind Takr Tirh # No   [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS
+
+# Total code points: 6
 
 # ================================================
 
index 7e42740..687994b 100644 (file)
@@ -1,10 +1,11 @@
-# Scripts-8.0.0.txt
-# Date: 2015-03-11, 22:29:42 GMT [MD]
+# Scripts-9.0.0.txt
+# Date: 2016-06-01, 10:34:37 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 # For more information, see:
 #   UAX #24, Unicode Script Property: http://www.unicode.org/reports/tr24/
 #     Especially the sections:
@@ -96,6 +97,7 @@
 061F          ; Common # Po       ARABIC QUESTION MARK
 0640          ; Common # Lm       ARABIC TATWEEL
 06DD          ; Common # Cf       ARABIC END OF AYAH
+08E2          ; Common # Cf       ARABIC DISPUTED END OF AYAH
 0964..0965    ; Common # Po   [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
 0E3F          ; Common # Sc       THAI CURRENCY SYMBOL BAHT
 0FD5..0FD8    ; Common # So   [4] RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS
 239B..23B3    ; Common # Sm  [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
 23B4..23DB    ; Common # So  [40] TOP SQUARE BRACKET..FUSE
 23DC..23E1    ; Common # Sm   [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
-23E2..23FA    ; Common # So  [25] WHITE TRAPEZIUM..BLACK CIRCLE FOR RECORD
+23E2..23FE    ; Common # So  [29] WHITE TRAPEZIUM..POWER SLEEP SYMBOL
 2400..2426    ; Common # So  [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
 2440..244A    ; Common # So  [11] OCR HOOK..OCR DOUBLE BACKSLASH
 2460..249B    ; Common # No  [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
 2E40          ; Common # Pd       DOUBLE HYPHEN
 2E41          ; Common # Po       REVERSED COMMA
 2E42          ; Common # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
+2E43..2E44    ; Common # Po   [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
 2FF0..2FFB    ; Common # So  [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
 3000          ; Common # Zs       IDEOGRAPHIC SPACE
 3001..3003    ; Common # Po   [3] IDEOGRAPHIC COMMA..DITTO MARK
@@ -572,19 +575,17 @@ FFFC..FFFD    ; Common # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
 1F100..1F10C  ; Common # No  [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
 1F110..1F12E  ; Common # So  [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
 1F130..1F16B  ; Common # So  [60] SQUARED LATIN CAPITAL LETTER A..RAISED MD SIGN
-1F170..1F19A  ; Common # So  [43] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VS
+1F170..1F1AC  ; Common # So  [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD
 1F1E6..1F1FF  ; Common # So  [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
 1F201..1F202  ; Common # So   [2] SQUARED KATAKANA KOKO..SQUARED KATAKANA SA
-1F210..1F23A  ; Common # So  [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
+1F210..1F23B  ; Common # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
 1F240..1F248  ; Common # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
 1F250..1F251  ; Common # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
 1F300..1F3FA  ; Common # So [251] CYCLONE..AMPHORA
 1F3FB..1F3FF  ; Common # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
-1F400..1F579  ; Common # So [378] RAT..JOYSTICK
-1F57B..1F5A3  ; Common # So  [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
-1F5A5..1F6D0  ; Common # So [300] DESKTOP COMPUTER..PLACE OF WORSHIP
+1F400..1F6D2  ; Common # So [723] RAT..SHOPPING TROLLEY
 1F6E0..1F6EC  ; Common # So  [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
-1F6F0..1F6F3  ; Common # So   [4] SATELLITE..PASSENGER SHIP
+1F6F0..1F6F6  ; Common # So   [7] SATELLITE..CANOE
 1F700..1F773  ; Common # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
 1F780..1F7D4  ; Common # So  [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR
 1F800..1F80B  ; Common # So  [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
@@ -592,13 +593,18 @@ FFFC..FFFD    ; Common # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
 1F850..1F859  ; Common # So  [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
 1F860..1F887  ; Common # So  [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
 1F890..1F8AD  ; Common # So  [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F910..1F918  ; Common # So   [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS
-1F980..1F984  ; Common # So   [5] CRAB..UNICORN FACE
+1F910..1F91E  ; Common # So  [15] ZIPPER-MOUTH FACE..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+1F920..1F927  ; Common # So   [8] FACE WITH COWBOY HAT..SNEEZING FACE
+1F930         ; Common # So       PREGNANT WOMAN
+1F933..1F93E  ; Common # So  [12] SELFIE..HANDBALL
+1F940..1F94B  ; Common # So  [12] WILTED FLOWER..MARTIAL ARTS UNIFORM
+1F950..1F95E  ; Common # So  [15] CROISSANT..PANCAKES
+1F980..1F991  ; Common # So  [18] CRAB..SQUID
 1F9C0         ; Common # So       CHEESE WEDGE
 E0001         ; Common # Cf       LANGUAGE TAG
 E0020..E007F  ; Common # Cf  [96] TAG SPACE..CANCEL TAG
 
-# Total code points: 7179
+# Total code points: 7279
 
 # ================================================
 
@@ -641,7 +647,7 @@ A770          ; Latin # Lm       MODIFIER LETTER US
 A771..A787    ; Latin # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
 A78B..A78E    ; Latin # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; Latin # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AD    ; Latin # L&  [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE    ; Latin # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; Latin # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7          ; Latin # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; Latin # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -654,7 +660,7 @@ FB00..FB06    ; Latin # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE S
 FF21..FF3A    ; Latin # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
 FF41..FF5A    ; Latin # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
 
-# Total code points: 1349
+# Total code points: 1350
 
 # ================================================
 
@@ -708,13 +714,13 @@ AB65          ; Greek # L&       GREEK LETTER SMALL CAPITAL OMEGA
 10175..10178  ; Greek # No   [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
 10179..10189  ; Greek # So  [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
 1018A..1018B  ; Greek # No   [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN
-1018C         ; Greek # So       GREEK SINUSOID SIGN
+1018C..1018E  ; Greek # So   [3] GREEK SINUSOID SIGN..NOMISMA SIGN
 101A0         ; Greek # So       GREEK SYMBOL TAU RHO
 1D200..1D241  ; Greek # So  [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54
 1D242..1D244  ; Greek # Mn   [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
 1D245         ; Greek # So       GREEK MUSICAL LEIMMA
 
-# Total code points: 516
+# Total code points: 518
 
 # ================================================
 
@@ -724,6 +730,7 @@ AB65          ; Greek # L&       GREEK LETTER SMALL CAPITAL OMEGA
 0487          ; Cyrillic # Mn       COMBINING CYRILLIC POKRYTIE
 0488..0489    ; Cyrillic # Me   [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
 048A..052F    ; Cyrillic # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER
+1C80..1C88    ; Cyrillic # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1D2B          ; Cyrillic # L&       CYRILLIC LETTER SMALL CAPITAL EL
 1D78          ; Cyrillic # Lm       MODIFIER LETTER CYRILLIC EN
 2DE0..2DFF    ; Cyrillic # Mn  [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
@@ -740,7 +747,7 @@ A69C..A69D    ; Cyrillic # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER
 A69E..A69F    ; Cyrillic # Mn   [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
 FE2E..FE2F    ; Cyrillic # Mn   [2] COMBINING CYRILLIC TITLO LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
 
-# Total code points: 434
+# Total code points: 443
 
 # ================================================
 
@@ -815,6 +822,8 @@ FB46..FB4F    ; Hebrew # Lo  [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU
 06FF          ; Arabic # Lo       ARABIC LETTER HEH WITH INVERTED V
 0750..077F    ; Arabic # Lo  [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE
 08A0..08B4    ; Arabic # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD    ; Arabic # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
+08D4..08E1    ; Arabic # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
 08E3..08FF    ; Arabic # Mn  [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA
 FB50..FBB1    ; Arabic # Lo  [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
 FBB2..FBC1    ; Arabic # Sk  [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW
@@ -862,7 +871,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: 1257
+# Total code points: 1279
 
 # ================================================
 
@@ -1086,6 +1095,7 @@ A8FD          ; Devanagari # Lo       DEVANAGARI JAIN OM
 
 # ================================================
 
+0C80          ; Kannada # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C81          ; Kannada # Mn       KANNADA SIGN CANDRABINDU
 0C82..0C83    ; Kannada # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
 0C85..0C8C    ; Kannada # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
@@ -1109,7 +1119,7 @@ A8FD          ; Devanagari # Lo       DEVANAGARI JAIN OM
 0CE6..0CEF    ; Kannada # Nd  [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
 0CF1..0CF2    ; Kannada # Lo   [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
 
-# Total code points: 87
+# Total code points: 88
 
 # ================================================
 
@@ -1125,15 +1135,18 @@ A8FD          ; Devanagari # Lo       DEVANAGARI JAIN OM
 0D4A..0D4C    ; Malayalam # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
 0D4D          ; Malayalam # Mn       MALAYALAM SIGN VIRAMA
 0D4E          ; Malayalam # Lo       MALAYALAM LETTER DOT REPH
+0D4F          ; Malayalam # So       MALAYALAM SIGN PARA
+0D54..0D56    ; Malayalam # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D57          ; Malayalam # Mc       MALAYALAM AU LENGTH MARK
+0D58..0D5E    ; Malayalam # No   [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
 0D5F..0D61    ; Malayalam # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D62..0D63    ; Malayalam # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
 0D66..0D6F    ; Malayalam # Nd  [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
-0D70..0D75    ; Malayalam # No   [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
+0D70..0D78    ; Malayalam # No   [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
 0D79          ; Malayalam # So       MALAYALAM DATE MARK
 0D7A..0D7F    ; Malayalam # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 
-# Total code points: 100
+# Total code points: 114
 
 # ================================================
 
@@ -1436,11 +1449,14 @@ AB70..ABBF    ; Cherokee # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETT
 1820..1842    ; Mongolian # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; Mongolian # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877    ; Mongolian # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; Mongolian # Lo  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; Mongolian # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885..1886    ; Mongolian # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887..18A8    ; Mongolian # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18A9          ; Mongolian # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 18AA          ; Mongolian # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
+11660..1166C  ; Mongolian # Po  [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
 
-# Total code points: 153
+# Total code points: 166
 
 # ================================================
 
@@ -1543,7 +1559,7 @@ A490..A4C6    ; Yi # So  [55] YI RADICAL QOT..YI RADICAL KE
 1CF4          ; Inherited # Mn       VEDIC TONE CANDRA ABOVE
 1CF8..1CF9    ; Inherited # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
 1DC0..1DF5    ; Inherited # Mn  [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF    ; Inherited # Mn   [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+1DFB..1DFF    ; Inherited # Mn   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
 200C..200D    ; Inherited # Cf   [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
 20D0..20DC    ; Inherited # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
 20DD..20E0    ; Inherited # Me   [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
@@ -1562,7 +1578,7 @@ FE20..FE2D    ; Inherited # Mn  [14] 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: 563
+# Total code points: 564
 
 # ================================================
 
@@ -1705,8 +1721,13 @@ E0100..E01EF  ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-2
 
 2C00..2C2E    ; Glagolitic # L&  [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
 2C30..2C5E    ; Glagolitic # L&  [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
+1E000..1E006  ; Glagolitic # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; Glagolitic # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; Glagolitic # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; Glagolitic # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; Glagolitic # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 
-# Total code points: 94
+# Total code points: 132
 
 # ================================================
 
@@ -1872,11 +1893,11 @@ A62A..A62B    ; Vai # Lo   [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO
 A880..A881    ; Saurashtra # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
 A882..A8B3    ; Saurashtra # Lo  [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
 A8B4..A8C3    ; Saurashtra # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
-A8C4          ; Saurashtra # Mn       SAURASHTRA SIGN VIRAMA
+A8C4..A8C5    ; Saurashtra # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8CE..A8CF    ; Saurashtra # Po   [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
 A8D0..A8D9    ; Saurashtra # Nd  [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
 
-# Total code points: 81
+# Total code points: 82
 
 # ================================================
 
@@ -2314,8 +2335,9 @@ ABF0..ABF9    ; Meetei_Mayek # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
 11235         ; Khojki # Mc       KHOJKI SIGN VIRAMA
 11236..11237  ; Khojki # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
 11238..1123D  ; Khojki # Po   [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN
+1123E         ; Khojki # Mn       KHOJKI SIGN SUKUN
 
-# Total code points: 61
+# Total code points: 62
 
 # ================================================
 
@@ -2536,4 +2558,75 @@ ABF0..ABF9    ; Meetei_Mayek # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
 
 # Total code points: 672
 
+# ================================================
+
+1E900..1E943  ; Adlam # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+1E944..1E94A  ; Adlam # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+1E950..1E959  ; Adlam # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
+1E95E..1E95F  ; Adlam # Po   [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
+
+# Total code points: 87
+
+# ================================================
+
+11C00..11C08  ; Bhaiksuki # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; Bhaiksuki # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C2F         ; Bhaiksuki # Mc       BHAIKSUKI VOWEL SIGN AA
+11C30..11C36  ; Bhaiksuki # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; Bhaiksuki # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3E         ; Bhaiksuki # Mc       BHAIKSUKI SIGN VISARGA
+11C3F         ; Bhaiksuki # Mn       BHAIKSUKI SIGN VIRAMA
+11C40         ; Bhaiksuki # Lo       BHAIKSUKI SIGN AVAGRAHA
+11C41..11C45  ; Bhaiksuki # Po   [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2
+11C50..11C59  ; Bhaiksuki # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+11C5A..11C6C  ; Bhaiksuki # No  [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
+
+# Total code points: 97
+
+# ================================================
+
+11C70..11C71  ; Marchen # Po   [2] MARCHEN HEAD MARK..MARCHEN MARK SHAD
+11C72..11C8F  ; Marchen # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+11C92..11CA7  ; Marchen # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9         ; Marchen # Mc       MARCHEN SUBJOINED LETTER YA
+11CAA..11CB0  ; Marchen # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB1         ; Marchen # Mc       MARCHEN VOWEL SIGN I
+11CB2..11CB3  ; Marchen # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4         ; Marchen # Mc       MARCHEN VOWEL SIGN O
+11CB5..11CB6  ; Marchen # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
+
+# Total code points: 68
+
+# ================================================
+
+11400..11434  ; Newa # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+11435..11437  ; Newa # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F  ; Newa # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441  ; Newa # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11442..11444  ; Newa # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11445         ; Newa # Mc       NEWA SIGN VISARGA
+11446         ; Newa # Mn       NEWA SIGN NUKTA
+11447..1144A  ; Newa # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+1144B..1144F  ; Newa # Po   [5] NEWA DANDA..NEWA ABBREVIATION SIGN
+11450..11459  ; Newa # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
+1145B         ; Newa # Po       NEWA PLACEHOLDER MARK
+1145D         ; Newa # Po       NEWA INSERTION SIGN
+
+# Total code points: 92
+
+# ================================================
+
+104B0..104D3  ; Osage # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; Osage # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+
+# Total code points: 72
+
+# ================================================
+
+16FE0         ; Tangut # Lm       TANGUT ITERATION MARK
+17000..187EC  ; Tangut # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; Tangut # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
+
+# Total code points: 6881
+
 # EOF
index 8de6462..b23fa7f 100644 (file)
@@ -1,10 +1,11 @@
-# SpecialCasing-8.0.0.txt
-# Date: 2014-12-16, 23:08:04 GMT [MD]
+# SpecialCasing-9.0.0.txt
+# Date: 2016-03-02, 18:55:13 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2014 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Special Casing
 #
index f36a0ed..b749b1e 100644 (file)
@@ -1,5 +1,7 @@
-# StandardizedVariants-8.0.0.txt
-# Date: 2015-02-10, 15:25:00 GMT [KW, LI]
+# StandardizedVariants-9.0.0.txt
+# Date: 2015-11-20, 22:54:00 GMT [KW, LI, RP]
+# © 1991-2015 Unicode®, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Specification of the variation sequences that are defined in the
 # Unicode Standard.
@@ -7,9 +9,6 @@
 # This file is a normative contributory data file in the
 # Unicode Character Database.
 #
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-#
 # Standardized variation sequences are defined in this file.
 # Ideographic variation sequences are defined according to the registration
 # process specified in UTS #37, and are listed in the Ideographic
@@ -21,7 +20,7 @@
 #
 # For more information on standardized variation sequences, 
 # see Section 23.4, Variation Selectors, 
-# in The Unicode Standard, Version 8.0.
+# in The Unicode Standard, Version 9.0.
 #
 # For more information on the Ideographic Variation Database,
 # see http://www.unicode.org/ivd/
@@ -36,6 +35,8 @@
 
 # Mathematical
 
+0030 FE00; short diagonal stroke form; # DIGIT ZERO
+2205 FE00; zero with long diagonal stroke overlay form; # EMPTY SET
 2229 FE00; with serifs; # INTERSECTION 
 222A FE00; with serifs; # UNION
 2268 FE00; with vertical stroke; # LESS-THAN BUT NOT EQUAL TO
 2ACB FE00; with stroke through bottom members; # SUBSET OF ABOVE NOT EQUAL TO
 2ACC FE00; with stroke through bottom members; # SUPERSET OF ABOVE NOT EQUAL TO
 
+# Myanmar
+
+1000 FE00; dotted form; # MYANMAR LETTER KA
+1002 FE00; dotted form; # MYANMAR LETTER GA
+1004 FE00; dotted form; # MYANMAR LETTER NGA
+1010 FE00; dotted form; # MYANMAR LETTER TA
+1011 FE00; dotted form; # MYANMAR LETTER THA
+1015 FE00; dotted form; # MYANMAR LETTER PA
+1019 FE00; dotted form; # MYANMAR LETTER MA
+101A FE00; dotted form; # MYANMAR LETTER YA
+101C FE00; dotted form; # MYANMAR LETTER LA
+101D FE00; dotted form; # MYANMAR LETTER WA
+1022 FE00; dotted form; # MYANMAR LETTER SHAN A
+1031 FE00; dotted form; # MYANMAR VOWEL SIGN E
+1075 FE00; dotted form; # MYANMAR LETTER SHAN KA
+1078 FE00; dotted form; # MYANMAR LETTER SHAN CA
+107A FE00; dotted form; # MYANMAR LETTER SHAN NYA
+1080 FE00; dotted form; # MYANMAR LETTER SHAN THA
+AA60 FE00; dotted form; # MYANMAR LETTER KHAMTI GA
+AA61 FE00; dotted form; # MYANMAR LETTER KHAMTI CA
+AA62 FE00; dotted form; # MYANMAR LETTER KHAMTI CHA
+AA63 FE00; dotted form; # MYANMAR LETTER KHAMTI JA
+AA64 FE00; dotted form; # MYANMAR LETTER KHAMTI JHA
+AA65 FE00; dotted form; # MYANMAR LETTER KHAMTI NYA
+AA66 FE00; dotted form; # MYANMAR LETTER KHAMTI TTA
+AA6B FE00; dotted form; # MYANMAR LETTER KHAMTI NA
+AA6C FE00; dotted form; # MYANMAR LETTER KHAMTI SA
+AA6F FE00; dotted form; # MYANMAR LETTER KHAMTI FA
+AA7A FE00; dotted form; # MYANMAR LETTER AITON RA
+
 # Phags-pa
 
 A856 FE00; phags-pa letter reversed shaping small a; # PHAGS-PA LETTER SMALL A
@@ -154,6 +185,8 @@ A868 FE00; phags-pa letter reversed shaping subjoined ya; # PHAGS-PA SUBJOINED L
 
 0023 FE0E; text style;  # NUMBER SIGN
 0023 FE0F; emoji style; # NUMBER SIGN
+002A FE0E; text style;  # ASTERISK
+002A FE0F; emoji style; # ASTERISK
 0030 FE0E; text style;  # DIGIT ZERO
 0030 FE0F; emoji style; # DIGIT ZERO
 0031 FE0E; text style;  # DIGIT ONE
@@ -209,6 +242,26 @@ A868 FE00; phags-pa letter reversed shaping subjoined ya; # PHAGS-PA SUBJOINED L
 231A FE0F; emoji style; # WATCH
 231B FE0E; text style;  # HOURGLASS
 231B FE0F; emoji style; # HOURGLASS
+2328 FE0E; text style;  # KEYBOARD
+2328 FE0F; emoji style; # KEYBOARD
+23CF FE0E; text style;  # EJECT SYMBOL
+23CF FE0F; emoji style; # EJECT SYMBOL
+23ED FE0E; text style;  # BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
+23ED FE0F; emoji style; # BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
+23EE FE0E; text style;  # BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
+23EE FE0F; emoji style; # BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
+23EF FE0E; text style;  # BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR
+23EF FE0F; emoji style; # BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR
+23F1 FE0E; text style;  # STOPWATCH
+23F1 FE0F; emoji style; # STOPWATCH
+23F2 FE0E; text style;  # TIMER CLOCK
+23F2 FE0F; emoji style; # TIMER CLOCK
+23F8 FE0E; text style;  # DOUBLE VERTICAL BAR
+23F8 FE0F; emoji style; # DOUBLE VERTICAL BAR
+23F9 FE0E; text style;  # BLACK SQUARE FOR STOP
+23F9 FE0F; emoji style; # BLACK SQUARE FOR STOP
+23FA FE0E; text style;  # BLACK CIRCLE FOR RECORD
+23FA FE0F; emoji style; # BLACK CIRCLE FOR RECORD
 24C2 FE0E; text style;  # CIRCLED LATIN CAPITAL LETTER M
 24C2 FE0F; emoji style; # CIRCLED LATIN CAPITAL LETTER M
 25AA FE0E; text style;  # BLACK SMALL SQUARE
@@ -231,6 +284,12 @@ A868 FE00; phags-pa letter reversed shaping subjoined ya; # PHAGS-PA SUBJOINED L
 2600 FE0F; emoji style; # BLACK SUN WITH RAYS
 2601 FE0E; text style;  # CLOUD
 2601 FE0F; emoji style; # CLOUD
+2602 FE0E; text style;  # UMBRELLA
+2602 FE0F; emoji style; # UMBRELLA
+2603 FE0E; text style;  # SNOWMAN
+2603 FE0F; emoji style; # SNOWMAN
+2604 FE0E; text style;  # COMET
+2604 FE0F; emoji style; # COMET
 260E FE0E; text style;  # BLACK TELEPHONE
 260E FE0F; emoji style; # BLACK TELEPHONE
 2611 FE0E; text style;  # BALLOT BOX WITH CHECK
@@ -239,8 +298,28 @@ A868 FE00; phags-pa letter reversed shaping subjoined ya; # PHAGS-PA SUBJOINED L
 2614 FE0F; emoji style; # UMBRELLA WITH RAIN DROPS
 2615 FE0E; text style;  # HOT BEVERAGE
 2615 FE0F; emoji style; # HOT BEVERAGE
+2618 FE0E; text style;  # SHAMROCK
+2618 FE0F; emoji style; # SHAMROCK
 261D FE0E; text style;  # WHITE UP POINTING INDEX
 261D FE0F; emoji style; # WHITE UP POINTING INDEX
+2620 FE0E; text style;  # SKULL AND CROSSBONES
+2620 FE0F; emoji style; # SKULL AND CROSSBONES
+2622 FE0E; text style;  # RADIOACTIVE SIGN
+2622 FE0F; emoji style; # RADIOACTIVE SIGN
+2623 FE0E; text style;  # BIOHAZARD SIGN
+2623 FE0F; emoji style; # BIOHAZARD SIGN
+2626 FE0E; text style;  # ORTHODOX CROSS
+2626 FE0F; emoji style; # ORTHODOX CROSS
+262A FE0E; text style;  # STAR AND CRESCENT
+262A FE0F; emoji style; # STAR AND CRESCENT
+262E FE0E; text style;  # PEACE SYMBOL
+262E FE0F; emoji style; # PEACE SYMBOL
+262F FE0E; text style;  # YIN YANG
+262F FE0F; emoji style; # YIN YANG
+2638 FE0E; text style;  # WHEEL OF DHARMA
+2638 FE0F; emoji style; # WHEEL OF DHARMA
+2639 FE0E; text style;  # WHITE FROWNING FACE
+2639 FE0F; emoji style; # WHITE FROWNING FACE
 263A FE0E; text style;  # WHITE SMILING FACE
 263A FE0F; emoji style; # WHITE SMILING FACE
 2648 FE0E; text style;  # ARIES
@@ -281,8 +360,22 @@ A868 FE00; phags-pa letter reversed shaping subjoined ya; # PHAGS-PA SUBJOINED L
 267B FE0F; emoji style; # BLACK UNIVERSAL RECYCLING SYMBOL
 267F FE0E; text style;  # WHEELCHAIR SYMBOL
 267F FE0F; emoji style; # WHEELCHAIR SYMBOL
+2692 FE0E; text style;  # HAMMER AND PICK
+2692 FE0F; emoji style; # HAMMER AND PICK
 2693 FE0E; text style;  # ANCHOR
 2693 FE0F; emoji style; # ANCHOR
+2694 FE0E; text style;  # CROSSED SWORDS
+2694 FE0F; emoji style; # CROSSED SWORDS
+2696 FE0E; text style;  # SCALES
+2696 FE0F; emoji style; # SCALES
+2697 FE0E; text style;  # ALEMBIC
+2697 FE0F; emoji style; # ALEMBIC
+2699 FE0E; text style;  # GEAR
+2699 FE0F; emoji style; # GEAR
+269B FE0E; text style;  # ATOM SYMBOL
+269B FE0F; emoji style; # ATOM SYMBOL
+269C FE0E; text style;  # FLEUR-DE-LIS
+269C FE0F; emoji style; # FLEUR-DE-LIS
 26A0 FE0E; text style;  # WARNING SIGN
 26A0 FE0F; emoji style; # WARNING SIGN
 26A1 FE0E; text style;  # HIGH VOLTAGE SIGN
@@ -291,6 +384,10 @@ A868 FE00; phags-pa letter reversed shaping subjoined ya; # PHAGS-PA SUBJOINED L
 26AA FE0F; emoji style; # MEDIUM WHITE CIRCLE
 26AB FE0E; text style;  # MEDIUM BLACK CIRCLE
 26AB FE0F; emoji style; # MEDIUM BLACK CIRCLE
+26B0 FE0E; text style;  # COFFIN
+26B0 FE0F; emoji style; # COFFIN
+26B1 FE0E; text style;  # FUNERAL URN
+26B1 FE0F; emoji style; # FUNERAL URN
 26BD FE0E; text style;  # SOCCER BALL
 26BD FE0F; emoji style; # SOCCER BALL
 26BE FE0E; text style;  # BASEBALL
@@ -299,16 +396,38 @@ A868 FE00; phags-pa letter reversed shaping subjoined ya; # PHAGS-PA SUBJOINED L
 26C4 FE0F; emoji style; # SNOWMAN WITHOUT SNOW
 26C5 FE0E; text style;  # SUN BEHIND CLOUD
 26C5 FE0F; emoji style; # SUN BEHIND CLOUD
+26C8 FE0E; text style;  # THUNDER CLOUD AND RAIN
+26C8 FE0F; emoji style; # THUNDER CLOUD AND RAIN
+26CF FE0E; text style;  # PICK
+26CF FE0F; emoji style; # PICK
+26D1 FE0E; text style;  # HELMET WITH WHITE CROSS
+26D1 FE0F; emoji style; # HELMET WITH WHITE CROSS
+26D3 FE0E; text style;  # CHAINS
+26D3 FE0F; emoji style; # CHAINS
 26D4 FE0E; text style;  # NO ENTRY
 26D4 FE0F; emoji style; # NO ENTRY
+26E9 FE0E; text style;  # SHINTO SHRINE
+26E9 FE0F; emoji style; # SHINTO SHRINE
 26EA FE0E; text style;  # CHURCH
 26EA FE0F; emoji style; # CHURCH
+26F0 FE0E; text style;  # MOUNTAIN
+26F0 FE0F; emoji style; # MOUNTAIN
+26F1 FE0E; text style;  # UMBRELLA ON GROUND
+26F1 FE0F; emoji style; # UMBRELLA ON GROUND
 26F2 FE0E; text style;  # FOUNTAIN
 26F2 FE0F; emoji style; # FOUNTAIN
 26F3 FE0E; text style;  # FLAG IN HOLE
 26F3 FE0F; emoji style; # FLAG IN HOLE
+26F4 FE0E; text style;  # FERRY
+26F4 FE0F; emoji style; # FERRY
 26F5 FE0E; text style;  # SAILBOAT
 26F5 FE0F; emoji style; # SAILBOAT
+26F7 FE0E; text style;  # SKIER
+26F7 FE0F; emoji style; # SKIER
+26F8 FE0E; text style;  # ICE SKATE
+26F8 FE0F; emoji style; # ICE SKATE
+26F9 FE0E; text style;  # PERSON WITH BALL
+26F9 FE0F; emoji style; # PERSON WITH BALL
 26FA FE0E; text style;  # TENT
 26FA FE0F; emoji style; # TENT
 26FD FE0E; text style;  # FUEL PUMP
@@ -321,6 +440,8 @@ A868 FE00; phags-pa letter reversed shaping subjoined ya; # PHAGS-PA SUBJOINED L
 2709 FE0F; emoji style; # ENVELOPE
 270C FE0E; text style;  # VICTORY HAND
 270C FE0F; emoji style; # VICTORY HAND
+270D FE0E; text style;  # WRITING HAND
+270D FE0F; emoji style; # WRITING HAND
 270F FE0E; text style;  # PENCIL
 270F FE0F; emoji style; # PENCIL
 2712 FE0E; text style;  # BLACK NIB
@@ -329,6 +450,10 @@ A868 FE00; phags-pa letter reversed shaping subjoined ya; # PHAGS-PA SUBJOINED L
 2714 FE0F; emoji style; # HEAVY CHECK MARK
 2716 FE0E; text style;  # HEAVY MULTIPLICATION X
 2716 FE0F; emoji style; # HEAVY MULTIPLICATION X
+271D FE0E; text style;  # LATIN CROSS
+271D FE0F; emoji style; # LATIN CROSS
+2721 FE0E; text style;  # STAR OF DAVID
+2721 FE0F; emoji style; # STAR OF DAVID
 2733 FE0E; text style;  # EIGHT SPOKED ASTERISK
 2733 FE0F; emoji style; # EIGHT SPOKED ASTERISK
 2734 FE0E; text style;  # EIGHT POINTED BLACK STAR
@@ -339,6 +464,8 @@ A868 FE00; phags-pa letter reversed shaping subjoined ya; # PHAGS-PA SUBJOINED L
 2747 FE0F; emoji style; # SPARKLE
 2757 FE0E; text style;  # HEAVY EXCLAMATION MARK SYMBOL
 2757 FE0F; emoji style; # HEAVY EXCLAMATION MARK SYMBOL
+2763 FE0E; text style;  # HEAVY HEART EXCLAMATION MARK ORNAMENT
+2763 FE0F; emoji style; # HEAVY HEART EXCLAMATION MARK ORNAMENT
 2764 FE0E; text style;  # HEAVY BLACK HEART
 2764 FE0F; emoji style; # HEAVY BLACK HEART
 27A1 FE0E; text style;  # BLACK RIGHTWARDS ARROW
@@ -387,6 +514,188 @@ A868 FE00; phags-pa letter reversed shaping subjoined ya; # PHAGS-PA SUBJOINED L
 1F22F FE0F; emoji style; # SQUARED CJK UNIFIED IDEOGRAPH-6307
 1F237 FE0E; text style;  # SQUARED CJK UNIFIED IDEOGRAPH-6708
 1F237 FE0F; emoji style; # SQUARED CJK UNIFIED IDEOGRAPH-6708
+1F321 FE0E; text style;  # THERMOMETER
+1F321 FE0F; emoji style; # THERMOMETER
+1F324 FE0E; text style;  # WHITE SUN WITH SMALL CLOUD
+1F324 FE0F; emoji style; # WHITE SUN WITH SMALL CLOUD
+1F325 FE0E; text style;  # WHITE SUN BEHIND CLOUD
+1F325 FE0F; emoji style; # WHITE SUN BEHIND CLOUD
+1F326 FE0E; text style;  # WHITE SUN BEHIND CLOUD WITH RAIN
+1F326 FE0F; emoji style; # WHITE SUN BEHIND CLOUD WITH RAIN
+1F327 FE0E; text style;  # CLOUD WITH RAIN
+1F327 FE0F; emoji style; # CLOUD WITH RAIN
+1F328 FE0E; text style;  # CLOUD WITH SNOW
+1F328 FE0F; emoji style; # CLOUD WITH SNOW
+1F329 FE0E; text style;  # CLOUD WITH LIGHTNING
+1F329 FE0F; emoji style; # CLOUD WITH LIGHTNING
+1F32A FE0E; text style;  # CLOUD WITH TORNADO
+1F32A FE0F; emoji style; # CLOUD WITH TORNADO
+1F32B FE0E; text style;  # FOG
+1F32B FE0F; emoji style; # FOG
+1F32C FE0E; text style;  # WIND BLOWING FACE
+1F32C FE0F; emoji style; # WIND BLOWING FACE
+1F336 FE0E; text style;  # HOT PEPPER
+1F336 FE0F; emoji style; # HOT PEPPER
+1F37D FE0E; text style;  # FORK AND KNIFE WITH PLATE
+1F37D FE0F; emoji style; # FORK AND KNIFE WITH PLATE
+1F396 FE0E; text style;  # MILITARY MEDAL
+1F396 FE0F; emoji style; # MILITARY MEDAL
+1F397 FE0E; text style;  # REMINDER RIBBON
+1F397 FE0F; emoji style; # REMINDER RIBBON
+1F399 FE0E; text style;  # STUDIO MICROPHONE
+1F399 FE0F; emoji style; # STUDIO MICROPHONE
+1F39A FE0E; text style;  # LEVEL SLIDER
+1F39A FE0F; emoji style; # LEVEL SLIDER
+1F39B FE0E; text style;  # CONTROL KNOBS
+1F39B FE0F; emoji style; # CONTROL KNOBS
+1F39E FE0E; text style;  # FILM FRAMES
+1F39E FE0F; emoji style; # FILM FRAMES
+1F39F FE0E; text style;  # ADMISSION TICKETS
+1F39F FE0F; emoji style; # ADMISSION TICKETS
+1F3CB FE0E; text style;  # WEIGHT LIFTER
+1F3CB FE0F; emoji style; # WEIGHT LIFTER
+1F3CC FE0E; text style;  # GOLFER
+1F3CC FE0F; emoji style; # GOLFER
+1F3CD FE0E; text style;  # RACING MOTORCYCLE
+1F3CD FE0F; emoji style; # RACING MOTORCYCLE
+1F3CE FE0E; text style;  # RACING CAR
+1F3CE FE0F; emoji style; # RACING CAR
+1F3D4 FE0E; text style;  # SNOW CAPPED MOUNTAIN
+1F3D4 FE0F; emoji style; # SNOW CAPPED MOUNTAIN
+1F3D5 FE0E; text style;  # CAMPING
+1F3D5 FE0F; emoji style; # CAMPING
+1F3D6 FE0E; text style;  # BEACH WITH UMBRELLA
+1F3D6 FE0F; emoji style; # BEACH WITH UMBRELLA
+1F3D7 FE0E; text style;  # BUILDING CONSTRUCTION
+1F3D7 FE0F; emoji style; # BUILDING CONSTRUCTION
+1F3D8 FE0E; text style;  # HOUSE BUILDINGS
+1F3D8 FE0F; emoji style; # HOUSE BUILDINGS
+1F3D9 FE0E; text style;  # CITYSCAPE
+1F3D9 FE0F; emoji style; # CITYSCAPE
+1F3DA FE0E; text style;  # DERELICT HOUSE BUILDING
+1F3DA FE0F; emoji style; # DERELICT HOUSE BUILDING
+1F3DB FE0E; text style;  # CLASSICAL BUILDING
+1F3DB FE0F; emoji style; # CLASSICAL BUILDING
+1F3DC FE0E; text style;  # DESERT
+1F3DC FE0F; emoji style; # DESERT
+1F3DD FE0E; text style;  # DESERT ISLAND
+1F3DD FE0F; emoji style; # DESERT ISLAND
+1F3DE FE0E; text style;  # NATIONAL PARK
+1F3DE FE0F; emoji style; # NATIONAL PARK
+1F3DF FE0E; text style;  # STADIUM
+1F3DF FE0F; emoji style; # STADIUM
+1F3F3 FE0E; text style;  # WAVING WHITE FLAG
+1F3F3 FE0F; emoji style; # WAVING WHITE FLAG
+1F3F5 FE0E; text style;  # ROSETTE
+1F3F5 FE0F; emoji style; # ROSETTE
+1F3F7 FE0E; text style;  # LABEL
+1F3F7 FE0F; emoji style; # LABEL
+1F43F FE0E; text style;  # CHIPMUNK
+1F43F FE0F; emoji style; # CHIPMUNK
+1F441 FE0E; text style;  # EYE
+1F441 FE0F; emoji style; # EYE
+1F4FD FE0E; text style;  # FILM PROJECTOR
+1F4FD FE0F; emoji style; # FILM PROJECTOR
+1F549 FE0E; text style;  # OM SYMBOL
+1F549 FE0F; emoji style; # OM SYMBOL
+1F54A FE0E; text style;  # DOVE OF PEACE
+1F54A FE0F; emoji style; # DOVE OF PEACE
+1F56F FE0E; text style;  # CANDLE
+1F56F FE0F; emoji style; # CANDLE
+1F570 FE0E; text style;  # MANTELPIECE CLOCK
+1F570 FE0F; emoji style; # MANTELPIECE CLOCK
+1F573 FE0E; text style;  # HOLE
+1F573 FE0F; emoji style; # HOLE
+1F574 FE0E; text style;  # MAN IN BUSINESS SUIT LEVITATING
+1F574 FE0F; emoji style; # MAN IN BUSINESS SUIT LEVITATING
+1F575 FE0E; text style;  # SLEUTH OR SPY
+1F575 FE0F; emoji style; # SLEUTH OR SPY
+1F576 FE0E; text style;  # DARK SUNGLASSES
+1F576 FE0F; emoji style; # DARK SUNGLASSES
+1F577 FE0E; text style;  # SPIDER
+1F577 FE0F; emoji style; # SPIDER
+1F578 FE0E; text style;  # SPIDER WEB
+1F578 FE0F; emoji style; # SPIDER WEB
+1F579 FE0E; text style;  # JOYSTICK
+1F579 FE0F; emoji style; # JOYSTICK
+1F587 FE0E; text style;  # LINKED PAPERCLIPS
+1F587 FE0F; emoji style; # LINKED PAPERCLIPS
+1F58A FE0E; text style;  # LOWER LEFT BALLPOINT PEN
+1F58A FE0F; emoji style; # LOWER LEFT BALLPOINT PEN
+1F58B FE0E; text style;  # LOWER LEFT FOUNTAIN PEN
+1F58B FE0F; emoji style; # LOWER LEFT FOUNTAIN PEN
+1F58C FE0E; text style;  # LOWER LEFT PAINTBRUSH
+1F58C FE0F; emoji style; # LOWER LEFT PAINTBRUSH
+1F58D FE0E; text style;  # LOWER LEFT CRAYON
+1F58D FE0F; emoji style; # LOWER LEFT CRAYON
+1F590 FE0E; text style;  # RAISED HAND WITH FINGERS SPLAYED
+1F590 FE0F; emoji style; # RAISED HAND WITH FINGERS SPLAYED
+1F5A5 FE0E; text style;  # DESKTOP COMPUTER
+1F5A5 FE0F; emoji style; # DESKTOP COMPUTER
+1F5A8 FE0E; text style;  # PRINTER
+1F5A8 FE0F; emoji style; # PRINTER
+1F5B1 FE0E; text style;  # THREE BUTTON MOUSE
+1F5B1 FE0F; emoji style; # THREE BUTTON MOUSE
+1F5B2 FE0E; text style;  # TRACKBALL
+1F5B2 FE0F; emoji style; # TRACKBALL
+1F5BC FE0E; text style;  # FRAME WITH PICTURE
+1F5BC FE0F; emoji style; # FRAME WITH PICTURE
+1F5C2 FE0E; text style;  # CARD INDEX DIVIDERS
+1F5C2 FE0F; emoji style; # CARD INDEX DIVIDERS
+1F5C3 FE0E; text style;  # CARD FILE BOX
+1F5C3 FE0F; emoji style; # CARD FILE BOX
+1F5C4 FE0E; text style;  # FILE CABINET
+1F5C4 FE0F; emoji style; # FILE CABINET
+1F5D1 FE0E; text style;  # WASTEBASKET
+1F5D1 FE0F; emoji style; # WASTEBASKET
+1F5D2 FE0E; text style;  # SPIRAL NOTE PAD
+1F5D2 FE0F; emoji style; # SPIRAL NOTE PAD
+1F5D3 FE0E; text style;  # SPIRAL CALENDAR PAD
+1F5D3 FE0F; emoji style; # SPIRAL CALENDAR PAD
+1F5DC FE0E; text style;  # COMPRESSION
+1F5DC FE0F; emoji style; # COMPRESSION
+1F5DD FE0E; text style;  # OLD KEY
+1F5DD FE0F; emoji style; # OLD KEY
+1F5DE FE0E; text style;  # ROLLED-UP NEWSPAPER
+1F5DE FE0F; emoji style; # ROLLED-UP NEWSPAPER
+1F5E1 FE0E; text style;  # DAGGER KNIFE
+1F5E1 FE0F; emoji style; # DAGGER KNIFE
+1F5E3 FE0E; text style;  # SPEAKING HEAD IN SILHOUETTE
+1F5E3 FE0F; emoji style; # SPEAKING HEAD IN SILHOUETTE
+1F5E8 FE0E; text style;  # LEFT SPEECH BUBBLE
+1F5E8 FE0F; emoji style; # LEFT SPEECH BUBBLE
+1F5EF FE0E; text style;  # RIGHT ANGER BUBBLE
+1F5EF FE0F; emoji style; # RIGHT ANGER BUBBLE
+1F5F3 FE0E; text style;  # BALLOT BOX WITH BALLOT
+1F5F3 FE0F; emoji style; # BALLOT BOX WITH BALLOT
+1F5FA FE0E; text style;  # WORLD MAP
+1F5FA FE0F; emoji style; # WORLD MAP
+1F6CB FE0E; text style;  # COUCH AND LAMP
+1F6CB FE0F; emoji style; # COUCH AND LAMP
+1F6CD FE0E; text style;  # SHOPPING BAGS
+1F6CD FE0F; emoji style; # SHOPPING BAGS
+1F6CE FE0E; text style;  # BELLHOP BELL
+1F6CE FE0F; emoji style; # BELLHOP BELL
+1F6CF FE0E; text style;  # BED
+1F6CF FE0F; emoji style; # BED
+1F6E0 FE0E; text style;  # HAMMER AND WRENCH
+1F6E0 FE0F; emoji style; # HAMMER AND WRENCH
+1F6E1 FE0E; text style;  # SHIELD
+1F6E1 FE0F; emoji style; # SHIELD
+1F6E2 FE0E; text style;  # OIL DRUM
+1F6E2 FE0F; emoji style; # OIL DRUM
+1F6E3 FE0E; text style;  # MOTORWAY
+1F6E3 FE0F; emoji style; # MOTORWAY
+1F6E4 FE0E; text style;  # RAILWAY TRACK
+1F6E4 FE0F; emoji style; # RAILWAY TRACK
+1F6E5 FE0E; text style;  # MOTOR BOAT
+1F6E5 FE0F; emoji style; # MOTOR BOAT
+1F6E9 FE0E; text style;  # SMALL AIRPLANE
+1F6E9 FE0F; emoji style; # SMALL AIRPLANE
+1F6F0 FE0E; text style;  # SATELLITE
+1F6F0 FE0F; emoji style; # SATELLITE
+1F6F3 FE0E; text style;  # PASSENGER SHIP
+1F6F3 FE0F; emoji style; # PASSENGER SHIP
 
 # CJK compatibility ideographs
 
index aa0e914..a756976 100644 (file)
 0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
 0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
 0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
-026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
+026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;A7AE;;A7AE
 026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62
 026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;A7AD;;A7AD
 026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
 08B2;ARABIC LETTER ZAIN WITH INVERTED V ABOVE;Lo;0;AL;;;;;N;;;;;
 08B3;ARABIC LETTER AIN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
 08B4;ARABIC LETTER KAF WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+08B6;ARABIC LETTER BEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;;
+08B7;ARABIC LETTER PEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;;
+08B8;ARABIC LETTER TEH WITH SMALL TEH ABOVE;Lo;0;AL;;;;;N;;;;;
+08B9;ARABIC LETTER REH WITH SMALL NOON ABOVE;Lo;0;AL;;;;;N;;;;;
+08BA;ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE;Lo;0;AL;;;;;N;;;;;
+08BB;ARABIC LETTER AFRICAN FEH;Lo;0;AL;;;;;N;;;;;
+08BC;ARABIC LETTER AFRICAN QAF;Lo;0;AL;;;;;N;;;;;
+08BD;ARABIC LETTER AFRICAN NOON;Lo;0;AL;;;;;N;;;;;
+08D4;ARABIC SMALL HIGH WORD AR-RUB;Mn;230;NSM;;;;;N;;;;;
+08D5;ARABIC SMALL HIGH SAD;Mn;230;NSM;;;;;N;;;;;
+08D6;ARABIC SMALL HIGH AIN;Mn;230;NSM;;;;;N;;;;;
+08D7;ARABIC SMALL HIGH QAF;Mn;230;NSM;;;;;N;;;;;
+08D8;ARABIC SMALL HIGH NOON WITH KASRA;Mn;230;NSM;;;;;N;;;;;
+08D9;ARABIC SMALL LOW NOON WITH KASRA;Mn;230;NSM;;;;;N;;;;;
+08DA;ARABIC SMALL HIGH WORD ATH-THALATHA;Mn;230;NSM;;;;;N;;;;;
+08DB;ARABIC SMALL HIGH WORD AS-SAJDA;Mn;230;NSM;;;;;N;;;;;
+08DC;ARABIC SMALL HIGH WORD AN-NISF;Mn;230;NSM;;;;;N;;;;;
+08DD;ARABIC SMALL HIGH WORD SAKTA;Mn;230;NSM;;;;;N;;;;;
+08DE;ARABIC SMALL HIGH WORD QIF;Mn;230;NSM;;;;;N;;;;;
+08DF;ARABIC SMALL HIGH WORD WAQFA;Mn;230;NSM;;;;;N;;;;;
+08E0;ARABIC SMALL HIGH FOOTNOTE MARKER;Mn;230;NSM;;;;;N;;;;;
+08E1;ARABIC SMALL HIGH SIGN SAFHA;Mn;230;NSM;;;;;N;;;;;
+08E2;ARABIC DISPUTED END OF AYAH;Cf;0;AN;;;;;N;;;;;
 08E3;ARABIC TURNED DAMMA BELOW;Mn;220;NSM;;;;;N;;;;;
 08E4;ARABIC CURLY FATHA;Mn;230;NSM;;;;;N;;;;;
 08E5;ARABIC CURLY DAMMA;Mn;230;NSM;;;;;N;;;;;
 0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
 0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;;
 0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;N;;;;;
+0C80;KANNADA SIGN SPACING CANDRABINDU;Lo;0;L;;;;;N;;;;;
 0C81;KANNADA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
 0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
 0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
 0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
 0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
 0D4E;MALAYALAM LETTER DOT REPH;Lo;0;L;;;;;N;;;;;
+0D4F;MALAYALAM SIGN PARA;So;0;L;;;;;N;;;;;
+0D54;MALAYALAM LETTER CHILLU M;Lo;0;L;;;;;N;;;;;
+0D55;MALAYALAM LETTER CHILLU Y;Lo;0;L;;;;;N;;;;;
+0D56;MALAYALAM LETTER CHILLU LLL;Lo;0;L;;;;;N;;;;;
 0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
+0D58;MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;;
+0D59;MALAYALAM FRACTION ONE FORTIETH;No;0;L;;;;1/40;N;;;;;
+0D5A;MALAYALAM FRACTION THREE EIGHTIETHS;No;0;L;;;;3/80;N;;;;;
+0D5B;MALAYALAM FRACTION ONE TWENTIETH;No;0;L;;;;1/20;N;;;;;
+0D5C;MALAYALAM FRACTION ONE TENTH;No;0;L;;;;1/10;N;;;;;
+0D5D;MALAYALAM FRACTION THREE TWENTIETHS;No;0;L;;;;3/20;N;;;;;
+0D5E;MALAYALAM FRACTION ONE FIFTH;No;0;L;;;;1/5;N;;;;;
 0D5F;MALAYALAM LETTER ARCHAIC II;Lo;0;L;;;;;N;;;;;
 0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
 0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
 0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;
 0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;
 0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;
+0D76;MALAYALAM FRACTION ONE SIXTEENTH;No;0;L;;;;1/16;N;;;;;
+0D77;MALAYALAM FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;;
+0D78;MALAYALAM FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;;
 0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;;
 0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;;
 0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;;
 1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
 1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
 1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
-1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
-1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
+1885;MONGOLIAN LETTER ALI GALI BALUDA;Mn;0;NSM;;;;;N;;;;;
+1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Mn;0;NSM;;;;;N;;;;;
 1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
 1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
 1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
 1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;;
 1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;;
 1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;;
+1C80;CYRILLIC SMALL LETTER ROUNDED VE;Ll;0;L;;;;;N;;;0412;;0412
+1C81;CYRILLIC SMALL LETTER LONG-LEGGED DE;Ll;0;L;;;;;N;;;0414;;0414
+1C82;CYRILLIC SMALL LETTER NARROW O;Ll;0;L;;;;;N;;;041E;;041E
+1C83;CYRILLIC SMALL LETTER WIDE ES;Ll;0;L;;;;;N;;;0421;;0421
+1C84;CYRILLIC SMALL LETTER TALL TE;Ll;0;L;;;;;N;;;0422;;0422
+1C85;CYRILLIC SMALL LETTER THREE-LEGGED TE;Ll;0;L;;;;;N;;;0422;;0422
+1C86;CYRILLIC SMALL LETTER TALL HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
+1C87;CYRILLIC SMALL LETTER TALL YAT;Ll;0;L;;;;;N;;;0462;;0462
+1C88;CYRILLIC SMALL LETTER UNBLENDED UK;Ll;0;L;;;;;N;;;A64A;;A64A
 1CC0;SUNDANESE PUNCTUATION BINDU SURYA;Po;0;L;;;;;N;;;;;
 1CC1;SUNDANESE PUNCTUATION BINDU PANGLONG;Po;0;L;;;;;N;;;;;
 1CC2;SUNDANESE PUNCTUATION BINDU PURNAMA;Po;0;L;;;;;N;;;;;
 1DF3;COMBINING LATIN SMALL LETTER O WITH DIAERESIS;Mn;230;NSM;;;;;N;;;;;
 1DF4;COMBINING LATIN SMALL LETTER U WITH DIAERESIS;Mn;230;NSM;;;;;N;;;;;
 1DF5;COMBINING UP TACK ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DFB;COMBINING DELETION MARK;Mn;230;NSM;;;;;N;;;;;
 1DFC;COMBINING DOUBLE INVERTED BREVE BELOW;Mn;233;NSM;;;;;N;;;;;
 1DFD;COMBINING ALMOST EQUAL TO BELOW;Mn;220;NSM;;;;;N;;;;;
 1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
 23F8;DOUBLE VERTICAL BAR;So;0;ON;;;;;N;;;;;
 23F9;BLACK SQUARE FOR STOP;So;0;ON;;;;;N;;;;;
 23FA;BLACK CIRCLE FOR RECORD;So;0;ON;;;;;N;;;;;
+23FB;POWER SYMBOL;So;0;ON;;;;;N;;;;;
+23FC;POWER ON-OFF SYMBOL;So;0;ON;;;;;N;;;;;
+23FD;POWER ON SYMBOL;So;0;ON;;;;;N;;;;;
+23FE;POWER SLEEP SYMBOL;So;0;ON;;;;;N;;;;;
 2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
 2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
 2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
 2E40;DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;;
 2E41;REVERSED COMMA;Po;0;ON;;;;;N;;;;;
 2E42;DOUBLE LOW-REVERSED-9 QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
+2E43;DASH WITH LEFT UPTURN;Po;0;ON;;;;;N;;;;;
+2E44;DOUBLE SUSPENSION MARK;Po;0;ON;;;;;N;;;;;
 2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
 2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
 2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
@@ -13889,6 +13943,7 @@ A7AA;LATIN CAPITAL LETTER H WITH HOOK;Lu;0;L;;;;;N;;;;0266;
 A7AB;LATIN CAPITAL LETTER REVERSED OPEN E;Lu;0;L;;;;;N;;;;025C;
 A7AC;LATIN CAPITAL LETTER SCRIPT G;Lu;0;L;;;;;N;;;;0261;
 A7AD;LATIN CAPITAL LETTER L WITH BELT;Lu;0;L;;;;;N;;;;026C;
+A7AE;LATIN CAPITAL LETTER SMALL CAPITAL I;Lu;0;L;;;;;N;;;;026A;
 A7B0;LATIN CAPITAL LETTER TURNED K;Lu;0;L;;;;;N;;;;029E;
 A7B1;LATIN CAPITAL LETTER TURNED T;Lu;0;L;;;;;N;;;;0287;
 A7B2;LATIN CAPITAL LETTER J WITH CROSSED-TAIL;Lu;0;L;;;;;N;;;;029D;
@@ -14085,6 +14140,7 @@ A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
 A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
 A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
 A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+A8C5;SAURASHTRA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
 A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;;
 A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;;
 A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
@@ -16834,6 +16890,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;;
 1018B;GREEK ONE QUARTER SIGN;No;0;ON;;;;1/4;N;;;;;
 1018C;GREEK SINUSOID SIGN;So;0;ON;;;;;N;;;;;
+1018D;GREEK INDICTION SIGN;So;0;L;;;;;N;;;;;
+1018E;NOMISMA SIGN;So;0;L;;;;;N;;;;;
 10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;;
 10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;;
 10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;;
@@ -17354,6 +17412,78 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
 104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
 104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+104B0;OSAGE CAPITAL LETTER A;Lu;0;L;;;;;N;;;;104D8;
+104B1;OSAGE CAPITAL LETTER AI;Lu;0;L;;;;;N;;;;104D9;
+104B2;OSAGE CAPITAL LETTER AIN;Lu;0;L;;;;;N;;;;104DA;
+104B3;OSAGE CAPITAL LETTER AH;Lu;0;L;;;;;N;;;;104DB;
+104B4;OSAGE CAPITAL LETTER BRA;Lu;0;L;;;;;N;;;;104DC;
+104B5;OSAGE CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;104DD;
+104B6;OSAGE CAPITAL LETTER EHCHA;Lu;0;L;;;;;N;;;;104DE;
+104B7;OSAGE CAPITAL LETTER E;Lu;0;L;;;;;N;;;;104DF;
+104B8;OSAGE CAPITAL LETTER EIN;Lu;0;L;;;;;N;;;;104E0;
+104B9;OSAGE CAPITAL LETTER HA;Lu;0;L;;;;;N;;;;104E1;
+104BA;OSAGE CAPITAL LETTER HYA;Lu;0;L;;;;;N;;;;104E2;
+104BB;OSAGE CAPITAL LETTER I;Lu;0;L;;;;;N;;;;104E3;
+104BC;OSAGE CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;104E4;
+104BD;OSAGE CAPITAL LETTER EHKA;Lu;0;L;;;;;N;;;;104E5;
+104BE;OSAGE CAPITAL LETTER KYA;Lu;0;L;;;;;N;;;;104E6;
+104BF;OSAGE CAPITAL LETTER LA;Lu;0;L;;;;;N;;;;104E7;
+104C0;OSAGE CAPITAL LETTER MA;Lu;0;L;;;;;N;;;;104E8;
+104C1;OSAGE CAPITAL LETTER NA;Lu;0;L;;;;;N;;;;104E9;
+104C2;OSAGE CAPITAL LETTER O;Lu;0;L;;;;;N;;;;104EA;
+104C3;OSAGE CAPITAL LETTER OIN;Lu;0;L;;;;;N;;;;104EB;
+104C4;OSAGE CAPITAL LETTER PA;Lu;0;L;;;;;N;;;;104EC;
+104C5;OSAGE CAPITAL LETTER EHPA;Lu;0;L;;;;;N;;;;104ED;
+104C6;OSAGE CAPITAL LETTER SA;Lu;0;L;;;;;N;;;;104EE;
+104C7;OSAGE CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;104EF;
+104C8;OSAGE CAPITAL LETTER TA;Lu;0;L;;;;;N;;;;104F0;
+104C9;OSAGE CAPITAL LETTER EHTA;Lu;0;L;;;;;N;;;;104F1;
+104CA;OSAGE CAPITAL LETTER TSA;Lu;0;L;;;;;N;;;;104F2;
+104CB;OSAGE CAPITAL LETTER EHTSA;Lu;0;L;;;;;N;;;;104F3;
+104CC;OSAGE CAPITAL LETTER TSHA;Lu;0;L;;;;;N;;;;104F4;
+104CD;OSAGE CAPITAL LETTER DHA;Lu;0;L;;;;;N;;;;104F5;
+104CE;OSAGE CAPITAL LETTER U;Lu;0;L;;;;;N;;;;104F6;
+104CF;OSAGE CAPITAL LETTER WA;Lu;0;L;;;;;N;;;;104F7;
+104D0;OSAGE CAPITAL LETTER KHA;Lu;0;L;;;;;N;;;;104F8;
+104D1;OSAGE CAPITAL LETTER GHA;Lu;0;L;;;;;N;;;;104F9;
+104D2;OSAGE CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;104FA;
+104D3;OSAGE CAPITAL LETTER ZHA;Lu;0;L;;;;;N;;;;104FB;
+104D8;OSAGE SMALL LETTER A;Ll;0;L;;;;;N;;;104B0;;104B0
+104D9;OSAGE SMALL LETTER AI;Ll;0;L;;;;;N;;;104B1;;104B1
+104DA;OSAGE SMALL LETTER AIN;Ll;0;L;;;;;N;;;104B2;;104B2
+104DB;OSAGE SMALL LETTER AH;Ll;0;L;;;;;N;;;104B3;;104B3
+104DC;OSAGE SMALL LETTER BRA;Ll;0;L;;;;;N;;;104B4;;104B4
+104DD;OSAGE SMALL LETTER CHA;Ll;0;L;;;;;N;;;104B5;;104B5
+104DE;OSAGE SMALL LETTER EHCHA;Ll;0;L;;;;;N;;;104B6;;104B6
+104DF;OSAGE SMALL LETTER E;Ll;0;L;;;;;N;;;104B7;;104B7
+104E0;OSAGE SMALL LETTER EIN;Ll;0;L;;;;;N;;;104B8;;104B8
+104E1;OSAGE SMALL LETTER HA;Ll;0;L;;;;;N;;;104B9;;104B9
+104E2;OSAGE SMALL LETTER HYA;Ll;0;L;;;;;N;;;104BA;;104BA
+104E3;OSAGE SMALL LETTER I;Ll;0;L;;;;;N;;;104BB;;104BB
+104E4;OSAGE SMALL LETTER KA;Ll;0;L;;;;;N;;;104BC;;104BC
+104E5;OSAGE SMALL LETTER EHKA;Ll;0;L;;;;;N;;;104BD;;104BD
+104E6;OSAGE SMALL LETTER KYA;Ll;0;L;;;;;N;;;104BE;;104BE
+104E7;OSAGE SMALL LETTER LA;Ll;0;L;;;;;N;;;104BF;;104BF
+104E8;OSAGE SMALL LETTER MA;Ll;0;L;;;;;N;;;104C0;;104C0
+104E9;OSAGE SMALL LETTER NA;Ll;0;L;;;;;N;;;104C1;;104C1
+104EA;OSAGE SMALL LETTER O;Ll;0;L;;;;;N;;;104C2;;104C2
+104EB;OSAGE SMALL LETTER OIN;Ll;0;L;;;;;N;;;104C3;;104C3
+104EC;OSAGE SMALL LETTER PA;Ll;0;L;;;;;N;;;104C4;;104C4
+104ED;OSAGE SMALL LETTER EHPA;Ll;0;L;;;;;N;;;104C5;;104C5
+104EE;OSAGE SMALL LETTER SA;Ll;0;L;;;;;N;;;104C6;;104C6
+104EF;OSAGE SMALL LETTER SHA;Ll;0;L;;;;;N;;;104C7;;104C7
+104F0;OSAGE SMALL LETTER TA;Ll;0;L;;;;;N;;;104C8;;104C8
+104F1;OSAGE SMALL LETTER EHTA;Ll;0;L;;;;;N;;;104C9;;104C9
+104F2;OSAGE SMALL LETTER TSA;Ll;0;L;;;;;N;;;104CA;;104CA
+104F3;OSAGE SMALL LETTER EHTSA;Ll;0;L;;;;;N;;;104CB;;104CB
+104F4;OSAGE SMALL LETTER TSHA;Ll;0;L;;;;;N;;;104CC;;104CC
+104F5;OSAGE SMALL LETTER DHA;Ll;0;L;;;;;N;;;104CD;;104CD
+104F6;OSAGE SMALL LETTER U;Ll;0;L;;;;;N;;;104CE;;104CE
+104F7;OSAGE SMALL LETTER WA;Ll;0;L;;;;;N;;;104CF;;104CF
+104F8;OSAGE SMALL LETTER KHA;Ll;0;L;;;;;N;;;104D0;;104D0
+104F9;OSAGE SMALL LETTER GHA;Ll;0;L;;;;;N;;;104D1;;104D1
+104FA;OSAGE SMALL LETTER ZA;Ll;0;L;;;;;N;;;104D2;;104D2
+104FB;OSAGE SMALL LETTER ZHA;Ll;0;L;;;;;N;;;104D3;;104D3
 10500;ELBASAN LETTER A;Lo;0;L;;;;;N;;;;;
 10501;ELBASAN LETTER BE;Lo;0;L;;;;;N;;;;;
 10502;ELBASAN LETTER CE;Lo;0;L;;;;;N;;;;;
@@ -19180,6 +19310,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 1123B;KHOJKI SECTION MARK;Po;0;L;;;;;N;;;;;
 1123C;KHOJKI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;;
 1123D;KHOJKI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+1123E;KHOJKI SIGN SUKUN;Mn;0;NSM;;;;;N;;;;;
 11280;MULTANI LETTER A;Lo;0;L;;;;;N;;;;;
 11281;MULTANI LETTER I;Lo;0;L;;;;;N;;;;;
 11282;MULTANI LETTER U;Lo;0;L;;;;;N;;;;;
@@ -19372,6 +19503,98 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 11372;COMBINING GRANTHA LETTER NA;Mn;230;NSM;;;;;N;;;;;
 11373;COMBINING GRANTHA LETTER VI;Mn;230;NSM;;;;;N;;;;;
 11374;COMBINING GRANTHA LETTER PA;Mn;230;NSM;;;;;N;;;;;
+11400;NEWA LETTER A;Lo;0;L;;;;;N;;;;;
+11401;NEWA LETTER AA;Lo;0;L;;;;;N;;;;;
+11402;NEWA LETTER I;Lo;0;L;;;;;N;;;;;
+11403;NEWA LETTER II;Lo;0;L;;;;;N;;;;;
+11404;NEWA LETTER U;Lo;0;L;;;;;N;;;;;
+11405;NEWA LETTER UU;Lo;0;L;;;;;N;;;;;
+11406;NEWA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+11407;NEWA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+11408;NEWA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+11409;NEWA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+1140A;NEWA LETTER E;Lo;0;L;;;;;N;;;;;
+1140B;NEWA LETTER AI;Lo;0;L;;;;;N;;;;;
+1140C;NEWA LETTER O;Lo;0;L;;;;;N;;;;;
+1140D;NEWA LETTER AU;Lo;0;L;;;;;N;;;;;
+1140E;NEWA LETTER KA;Lo;0;L;;;;;N;;;;;
+1140F;NEWA LETTER KHA;Lo;0;L;;;;;N;;;;;
+11410;NEWA LETTER GA;Lo;0;L;;;;;N;;;;;
+11411;NEWA LETTER GHA;Lo;0;L;;;;;N;;;;;
+11412;NEWA LETTER NGA;Lo;0;L;;;;;N;;;;;
+11413;NEWA LETTER NGHA;Lo;0;L;;;;;N;;;;;
+11414;NEWA LETTER CA;Lo;0;L;;;;;N;;;;;
+11415;NEWA LETTER CHA;Lo;0;L;;;;;N;;;;;
+11416;NEWA LETTER JA;Lo;0;L;;;;;N;;;;;
+11417;NEWA LETTER JHA;Lo;0;L;;;;;N;;;;;
+11418;NEWA LETTER NYA;Lo;0;L;;;;;N;;;;;
+11419;NEWA LETTER NYHA;Lo;0;L;;;;;N;;;;;
+1141A;NEWA LETTER TTA;Lo;0;L;;;;;N;;;;;
+1141B;NEWA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+1141C;NEWA LETTER DDA;Lo;0;L;;;;;N;;;;;
+1141D;NEWA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+1141E;NEWA LETTER NNA;Lo;0;L;;;;;N;;;;;
+1141F;NEWA LETTER TA;Lo;0;L;;;;;N;;;;;
+11420;NEWA LETTER THA;Lo;0;L;;;;;N;;;;;
+11421;NEWA LETTER DA;Lo;0;L;;;;;N;;;;;
+11422;NEWA LETTER DHA;Lo;0;L;;;;;N;;;;;
+11423;NEWA LETTER NA;Lo;0;L;;;;;N;;;;;
+11424;NEWA LETTER NHA;Lo;0;L;;;;;N;;;;;
+11425;NEWA LETTER PA;Lo;0;L;;;;;N;;;;;
+11426;NEWA LETTER PHA;Lo;0;L;;;;;N;;;;;
+11427;NEWA LETTER BA;Lo;0;L;;;;;N;;;;;
+11428;NEWA LETTER BHA;Lo;0;L;;;;;N;;;;;
+11429;NEWA LETTER MA;Lo;0;L;;;;;N;;;;;
+1142A;NEWA LETTER MHA;Lo;0;L;;;;;N;;;;;
+1142B;NEWA LETTER YA;Lo;0;L;;;;;N;;;;;
+1142C;NEWA LETTER RA;Lo;0;L;;;;;N;;;;;
+1142D;NEWA LETTER RHA;Lo;0;L;;;;;N;;;;;
+1142E;NEWA LETTER LA;Lo;0;L;;;;;N;;;;;
+1142F;NEWA LETTER LHA;Lo;0;L;;;;;N;;;;;
+11430;NEWA LETTER WA;Lo;0;L;;;;;N;;;;;
+11431;NEWA LETTER SHA;Lo;0;L;;;;;N;;;;;
+11432;NEWA LETTER SSA;Lo;0;L;;;;;N;;;;;
+11433;NEWA LETTER SA;Lo;0;L;;;;;N;;;;;
+11434;NEWA LETTER HA;Lo;0;L;;;;;N;;;;;
+11435;NEWA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+11436;NEWA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+11437;NEWA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+11438;NEWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+11439;NEWA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+1143A;NEWA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+1143B;NEWA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+1143C;NEWA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+1143D;NEWA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
+1143E;NEWA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+1143F;NEWA VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+11440;NEWA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+11441;NEWA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+11442;NEWA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+11443;NEWA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+11444;NEWA SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+11445;NEWA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+11446;NEWA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+11447;NEWA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+11448;NEWA SIGN FINAL ANUSVARA;Lo;0;L;;;;;N;;;;;
+11449;NEWA OM;Lo;0;L;;;;;N;;;;;
+1144A;NEWA SIDDHI;Lo;0;L;;;;;N;;;;;
+1144B;NEWA DANDA;Po;0;L;;;;;N;;;;;
+1144C;NEWA DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+1144D;NEWA COMMA;Po;0;L;;;;;N;;;;;
+1144E;NEWA GAP FILLER;Po;0;L;;;;;N;;;;;
+1144F;NEWA ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+11450;NEWA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+11451;NEWA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+11452;NEWA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+11453;NEWA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+11454;NEWA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+11455;NEWA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+11456;NEWA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+11457;NEWA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+11458;NEWA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+11459;NEWA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1145B;NEWA PLACEHOLDER MARK;Po;0;L;;;;;N;;;;;
+1145D;NEWA INSERTION SIGN;Po;0;L;;;;;N;;;;;
 11480;TIRHUTA ANJI;Lo;0;L;;;;;N;;;;;
 11481;TIRHUTA LETTER A;Lo;0;L;;;;;N;;;;;
 11482;TIRHUTA LETTER AA;Lo;0;L;;;;;N;;;;;
@@ -19625,6 +19848,19 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 11657;MODI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
 11658;MODI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
 11659;MODI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+11660;MONGOLIAN BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;;
+11661;MONGOLIAN ROTATED BIRGA;Po;0;ON;;;;;N;;;;;
+11662;MONGOLIAN DOUBLE BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;;
+11663;MONGOLIAN TRIPLE BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;;
+11664;MONGOLIAN BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;;
+11665;MONGOLIAN ROTATED BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;;
+11666;MONGOLIAN ROTATED BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;;
+11667;MONGOLIAN INVERTED BIRGA;Po;0;ON;;;;;N;;;;;
+11668;MONGOLIAN INVERTED BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;;
+11669;MONGOLIAN SWIRL BIRGA;Po;0;ON;;;;;N;;;;;
+1166A;MONGOLIAN SWIRL BIRGA WITH ORNAMENT;Po;0;ON;;;;;N;;;;;
+1166B;MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;;
+1166C;MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT;Po;0;ON;;;;;N;;;;;
 11680;TAKRI LETTER A;Lo;0;L;;;;;N;;;;;
 11681;TAKRI LETTER AA;Lo;0;L;;;;;N;;;;;
 11682;TAKRI LETTER I;Lo;0;L;;;;;N;;;;;
@@ -19889,6 +20125,171 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 11AF6;PAU CIN HAU LOW-FALLING TONE LONG FINAL;Lo;0;L;;;;;N;;;;;
 11AF7;PAU CIN HAU LOW-FALLING TONE FINAL;Lo;0;L;;;;;N;;;;;
 11AF8;PAU CIN HAU GLOTTAL STOP FINAL;Lo;0;L;;;;;N;;;;;
+11C00;BHAIKSUKI LETTER A;Lo;0;L;;;;;N;;;;;
+11C01;BHAIKSUKI LETTER AA;Lo;0;L;;;;;N;;;;;
+11C02;BHAIKSUKI LETTER I;Lo;0;L;;;;;N;;;;;
+11C03;BHAIKSUKI LETTER II;Lo;0;L;;;;;N;;;;;
+11C04;BHAIKSUKI LETTER U;Lo;0;L;;;;;N;;;;;
+11C05;BHAIKSUKI LETTER UU;Lo;0;L;;;;;N;;;;;
+11C06;BHAIKSUKI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+11C07;BHAIKSUKI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+11C08;BHAIKSUKI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+11C0A;BHAIKSUKI LETTER E;Lo;0;L;;;;;N;;;;;
+11C0B;BHAIKSUKI LETTER AI;Lo;0;L;;;;;N;;;;;
+11C0C;BHAIKSUKI LETTER O;Lo;0;L;;;;;N;;;;;
+11C0D;BHAIKSUKI LETTER AU;Lo;0;L;;;;;N;;;;;
+11C0E;BHAIKSUKI LETTER KA;Lo;0;L;;;;;N;;;;;
+11C0F;BHAIKSUKI LETTER KHA;Lo;0;L;;;;;N;;;;;
+11C10;BHAIKSUKI LETTER GA;Lo;0;L;;;;;N;;;;;
+11C11;BHAIKSUKI LETTER GHA;Lo;0;L;;;;;N;;;;;
+11C12;BHAIKSUKI LETTER NGA;Lo;0;L;;;;;N;;;;;
+11C13;BHAIKSUKI LETTER CA;Lo;0;L;;;;;N;;;;;
+11C14;BHAIKSUKI LETTER CHA;Lo;0;L;;;;;N;;;;;
+11C15;BHAIKSUKI LETTER JA;Lo;0;L;;;;;N;;;;;
+11C16;BHAIKSUKI LETTER JHA;Lo;0;L;;;;;N;;;;;
+11C17;BHAIKSUKI LETTER NYA;Lo;0;L;;;;;N;;;;;
+11C18;BHAIKSUKI LETTER TTA;Lo;0;L;;;;;N;;;;;
+11C19;BHAIKSUKI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+11C1A;BHAIKSUKI LETTER DDA;Lo;0;L;;;;;N;;;;;
+11C1B;BHAIKSUKI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+11C1C;BHAIKSUKI LETTER NNA;Lo;0;L;;;;;N;;;;;
+11C1D;BHAIKSUKI LETTER TA;Lo;0;L;;;;;N;;;;;
+11C1E;BHAIKSUKI LETTER THA;Lo;0;L;;;;;N;;;;;
+11C1F;BHAIKSUKI LETTER DA;Lo;0;L;;;;;N;;;;;
+11C20;BHAIKSUKI LETTER DHA;Lo;0;L;;;;;N;;;;;
+11C21;BHAIKSUKI LETTER NA;Lo;0;L;;;;;N;;;;;
+11C22;BHAIKSUKI LETTER PA;Lo;0;L;;;;;N;;;;;
+11C23;BHAIKSUKI LETTER PHA;Lo;0;L;;;;;N;;;;;
+11C24;BHAIKSUKI LETTER BA;Lo;0;L;;;;;N;;;;;
+11C25;BHAIKSUKI LETTER BHA;Lo;0;L;;;;;N;;;;;
+11C26;BHAIKSUKI LETTER MA;Lo;0;L;;;;;N;;;;;
+11C27;BHAIKSUKI LETTER YA;Lo;0;L;;;;;N;;;;;
+11C28;BHAIKSUKI LETTER RA;Lo;0;L;;;;;N;;;;;
+11C29;BHAIKSUKI LETTER LA;Lo;0;L;;;;;N;;;;;
+11C2A;BHAIKSUKI LETTER VA;Lo;0;L;;;;;N;;;;;
+11C2B;BHAIKSUKI LETTER SHA;Lo;0;L;;;;;N;;;;;
+11C2C;BHAIKSUKI LETTER SSA;Lo;0;L;;;;;N;;;;;
+11C2D;BHAIKSUKI LETTER SA;Lo;0;L;;;;;N;;;;;
+11C2E;BHAIKSUKI LETTER HA;Lo;0;L;;;;;N;;;;;
+11C2F;BHAIKSUKI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+11C30;BHAIKSUKI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+11C31;BHAIKSUKI VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+11C32;BHAIKSUKI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+11C33;BHAIKSUKI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+11C34;BHAIKSUKI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+11C35;BHAIKSUKI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
+11C36;BHAIKSUKI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+11C38;BHAIKSUKI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+11C39;BHAIKSUKI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+11C3A;BHAIKSUKI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+11C3B;BHAIKSUKI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+11C3C;BHAIKSUKI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+11C3D;BHAIKSUKI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+11C3E;BHAIKSUKI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+11C3F;BHAIKSUKI SIGN VIRAMA;Mn;9;L;;;;;N;;;;;
+11C40;BHAIKSUKI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
+11C41;BHAIKSUKI DANDA;Po;0;L;;;;;N;;;;;
+11C42;BHAIKSUKI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+11C43;BHAIKSUKI WORD SEPARATOR;Po;0;L;;;;;N;;;;;
+11C44;BHAIKSUKI GAP FILLER-1;Po;0;L;;;;;N;;;;;
+11C45;BHAIKSUKI GAP FILLER-2;Po;0;L;;;;;N;;;;;
+11C50;BHAIKSUKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+11C51;BHAIKSUKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+11C52;BHAIKSUKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+11C53;BHAIKSUKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+11C54;BHAIKSUKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+11C55;BHAIKSUKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+11C56;BHAIKSUKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+11C57;BHAIKSUKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+11C58;BHAIKSUKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+11C59;BHAIKSUKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+11C5A;BHAIKSUKI NUMBER ONE;No;0;L;;;;1;N;;;;;
+11C5B;BHAIKSUKI NUMBER TWO;No;0;L;;;;2;N;;;;;
+11C5C;BHAIKSUKI NUMBER THREE;No;0;L;;;;3;N;;;;;
+11C5D;BHAIKSUKI NUMBER FOUR;No;0;L;;;;4;N;;;;;
+11C5E;BHAIKSUKI NUMBER FIVE;No;0;L;;;;5;N;;;;;
+11C5F;BHAIKSUKI NUMBER SIX;No;0;L;;;;6;N;;;;;
+11C60;BHAIKSUKI NUMBER SEVEN;No;0;L;;;;7;N;;;;;
+11C61;BHAIKSUKI NUMBER EIGHT;No;0;L;;;;8;N;;;;;
+11C62;BHAIKSUKI NUMBER NINE;No;0;L;;;;9;N;;;;;
+11C63;BHAIKSUKI NUMBER TEN;No;0;L;;;;10;N;;;;;
+11C64;BHAIKSUKI NUMBER TWENTY;No;0;L;;;;20;N;;;;;
+11C65;BHAIKSUKI NUMBER THIRTY;No;0;L;;;;30;N;;;;;
+11C66;BHAIKSUKI NUMBER FORTY;No;0;L;;;;40;N;;;;;
+11C67;BHAIKSUKI NUMBER FIFTY;No;0;L;;;;50;N;;;;;
+11C68;BHAIKSUKI NUMBER SIXTY;No;0;L;;;;60;N;;;;;
+11C69;BHAIKSUKI NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
+11C6A;BHAIKSUKI NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
+11C6B;BHAIKSUKI NUMBER NINETY;No;0;L;;;;90;N;;;;;
+11C6C;BHAIKSUKI HUNDREDS UNIT MARK;No;0;L;;;;100;N;;;;;
+11C70;MARCHEN HEAD MARK;Po;0;L;;;;;N;;;;;
+11C71;MARCHEN MARK SHAD;Po;0;L;;;;;N;;;;;
+11C72;MARCHEN LETTER KA;Lo;0;L;;;;;N;;;;;
+11C73;MARCHEN LETTER KHA;Lo;0;L;;;;;N;;;;;
+11C74;MARCHEN LETTER GA;Lo;0;L;;;;;N;;;;;
+11C75;MARCHEN LETTER NGA;Lo;0;L;;;;;N;;;;;
+11C76;MARCHEN LETTER CA;Lo;0;L;;;;;N;;;;;
+11C77;MARCHEN LETTER CHA;Lo;0;L;;;;;N;;;;;
+11C78;MARCHEN LETTER JA;Lo;0;L;;;;;N;;;;;
+11C79;MARCHEN LETTER NYA;Lo;0;L;;;;;N;;;;;
+11C7A;MARCHEN LETTER TA;Lo;0;L;;;;;N;;;;;
+11C7B;MARCHEN LETTER THA;Lo;0;L;;;;;N;;;;;
+11C7C;MARCHEN LETTER DA;Lo;0;L;;;;;N;;;;;
+11C7D;MARCHEN LETTER NA;Lo;0;L;;;;;N;;;;;
+11C7E;MARCHEN LETTER PA;Lo;0;L;;;;;N;;;;;
+11C7F;MARCHEN LETTER PHA;Lo;0;L;;;;;N;;;;;
+11C80;MARCHEN LETTER BA;Lo;0;L;;;;;N;;;;;
+11C81;MARCHEN LETTER MA;Lo;0;L;;;;;N;;;;;
+11C82;MARCHEN LETTER TSA;Lo;0;L;;;;;N;;;;;
+11C83;MARCHEN LETTER TSHA;Lo;0;L;;;;;N;;;;;
+11C84;MARCHEN LETTER DZA;Lo;0;L;;;;;N;;;;;
+11C85;MARCHEN LETTER WA;Lo;0;L;;;;;N;;;;;
+11C86;MARCHEN LETTER ZHA;Lo;0;L;;;;;N;;;;;
+11C87;MARCHEN LETTER ZA;Lo;0;L;;;;;N;;;;;
+11C88;MARCHEN LETTER -A;Lo;0;L;;;;;N;;;;;
+11C89;MARCHEN LETTER YA;Lo;0;L;;;;;N;;;;;
+11C8A;MARCHEN LETTER RA;Lo;0;L;;;;;N;;;;;
+11C8B;MARCHEN LETTER LA;Lo;0;L;;;;;N;;;;;
+11C8C;MARCHEN LETTER SHA;Lo;0;L;;;;;N;;;;;
+11C8D;MARCHEN LETTER SA;Lo;0;L;;;;;N;;;;;
+11C8E;MARCHEN LETTER HA;Lo;0;L;;;;;N;;;;;
+11C8F;MARCHEN LETTER A;Lo;0;L;;;;;N;;;;;
+11C92;MARCHEN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
+11C93;MARCHEN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
+11C94;MARCHEN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
+11C95;MARCHEN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
+11C96;MARCHEN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
+11C97;MARCHEN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
+11C98;MARCHEN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
+11C99;MARCHEN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
+11C9A;MARCHEN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
+11C9B;MARCHEN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
+11C9C;MARCHEN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
+11C9D;MARCHEN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
+11C9E;MARCHEN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
+11C9F;MARCHEN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
+11CA0;MARCHEN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
+11CA1;MARCHEN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
+11CA2;MARCHEN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
+11CA3;MARCHEN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
+11CA4;MARCHEN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
+11CA5;MARCHEN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;;;;
+11CA6;MARCHEN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
+11CA7;MARCHEN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
+11CA9;MARCHEN SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;
+11CAA;MARCHEN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;;;;
+11CAB;MARCHEN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
+11CAC;MARCHEN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
+11CAD;MARCHEN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
+11CAE;MARCHEN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
+11CAF;MARCHEN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
+11CB0;MARCHEN VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+11CB1;MARCHEN VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+11CB2;MARCHEN VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+11CB3;MARCHEN VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+11CB4;MARCHEN VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+11CB5;MARCHEN SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+11CB6;MARCHEN SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
 12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;;
 12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;;
 12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;;
@@ -23685,6 +24086,764 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 16F9D;MIAO LETTER REFORMED TONE-5;Lm;0;L;;;;;N;;;;;
 16F9E;MIAO LETTER REFORMED TONE-6;Lm;0;L;;;;;N;;;;;
 16F9F;MIAO LETTER REFORMED TONE-8;Lm;0;L;;;;;N;;;;;
+16FE0;TANGUT ITERATION MARK;Lm;0;L;;;;;N;;;;;
+17000;<Tangut Ideograph, First>;Lo;0;L;;;;;N;;;;;
+187EC;<Tangut Ideograph, Last>;Lo;0;L;;;;;N;;;;;
+18800;TANGUT COMPONENT-001;Lo;0;L;;;;;N;;;;;
+18801;TANGUT COMPONENT-002;Lo;0;L;;;;;N;;;;;
+18802;TANGUT COMPONENT-003;Lo;0;L;;;;;N;;;;;
+18803;TANGUT COMPONENT-004;Lo;0;L;;;;;N;;;;;
+18804;TANGUT COMPONENT-005;Lo;0;L;;;;;N;;;;;
+18805;TANGUT COMPONENT-006;Lo;0;L;;;;;N;;;;;
+18806;TANGUT COMPONENT-007;Lo;0;L;;;;;N;;;;;
+18807;TANGUT COMPONENT-008;Lo;0;L;;;;;N;;;;;
+18808;TANGUT COMPONENT-009;Lo;0;L;;;;;N;;;;;
+18809;TANGUT COMPONENT-010;Lo;0;L;;;;;N;;;;;
+1880A;TANGUT COMPONENT-011;Lo;0;L;;;;;N;;;;;
+1880B;TANGUT COMPONENT-012;Lo;0;L;;;;;N;;;;;
+1880C;TANGUT COMPONENT-013;Lo;0;L;;;;;N;;;;;
+1880D;TANGUT COMPONENT-014;Lo;0;L;;;;;N;;;;;
+1880E;TANGUT COMPONENT-015;Lo;0;L;;;;;N;;;;;
+1880F;TANGUT COMPONENT-016;Lo;0;L;;;;;N;;;;;
+18810;TANGUT COMPONENT-017;Lo;0;L;;;;;N;;;;;
+18811;TANGUT COMPONENT-018;Lo;0;L;;;;;N;;;;;
+18812;TANGUT COMPONENT-019;Lo;0;L;;;;;N;;;;;
+18813;TANGUT COMPONENT-020;Lo;0;L;;;;;N;;;;;
+18814;TANGUT COMPONENT-021;Lo;0;L;;;;;N;;;;;
+18815;TANGUT COMPONENT-022;Lo;0;L;;;;;N;;;;;
+18816;TANGUT COMPONENT-023;Lo;0;L;;;;;N;;;;;
+18817;TANGUT COMPONENT-024;Lo;0;L;;;;;N;;;;;
+18818;TANGUT COMPONENT-025;Lo;0;L;;;;;N;;;;;
+18819;TANGUT COMPONENT-026;Lo;0;L;;;;;N;;;;;
+1881A;TANGUT COMPONENT-027;Lo;0;L;;;;;N;;;;;
+1881B;TANGUT COMPONENT-028;Lo;0;L;;;;;N;;;;;
+1881C;TANGUT COMPONENT-029;Lo;0;L;;;;;N;;;;;
+1881D;TANGUT COMPONENT-030;Lo;0;L;;;;;N;;;;;
+1881E;TANGUT COMPONENT-031;Lo;0;L;;;;;N;;;;;
+1881F;TANGUT COMPONENT-032;Lo;0;L;;;;;N;;;;;
+18820;TANGUT COMPONENT-033;Lo;0;L;;;;;N;;;;;
+18821;TANGUT COMPONENT-034;Lo;0;L;;;;;N;;;;;
+18822;TANGUT COMPONENT-035;Lo;0;L;;;;;N;;;;;
+18823;TANGUT COMPONENT-036;Lo;0;L;;;;;N;;;;;
+18824;TANGUT COMPONENT-037;Lo;0;L;;;;;N;;;;;
+18825;TANGUT COMPONENT-038;Lo;0;L;;;;;N;;;;;
+18826;TANGUT COMPONENT-039;Lo;0;L;;;;;N;;;;;
+18827;TANGUT COMPONENT-040;Lo;0;L;;;;;N;;;;;
+18828;TANGUT COMPONENT-041;Lo;0;L;;;;;N;;;;;
+18829;TANGUT COMPONENT-042;Lo;0;L;;;;;N;;;;;
+1882A;TANGUT COMPONENT-043;Lo;0;L;;;;;N;;;;;
+1882B;TANGUT COMPONENT-044;Lo;0;L;;;;;N;;;;;
+1882C;TANGUT COMPONENT-045;Lo;0;L;;;;;N;;;;;
+1882D;TANGUT COMPONENT-046;Lo;0;L;;;;;N;;;;;
+1882E;TANGUT COMPONENT-047;Lo;0;L;;;;;N;;;;;
+1882F;TANGUT COMPONENT-048;Lo;0;L;;;;;N;;;;;
+18830;TANGUT COMPONENT-049;Lo;0;L;;;;;N;;;;;
+18831;TANGUT COMPONENT-050;Lo;0;L;;;;;N;;;;;
+18832;TANGUT COMPONENT-051;Lo;0;L;;;;;N;;;;;
+18833;TANGUT COMPONENT-052;Lo;0;L;;;;;N;;;;;
+18834;TANGUT COMPONENT-053;Lo;0;L;;;;;N;;;;;
+18835;TANGUT COMPONENT-054;Lo;0;L;;;;;N;;;;;
+18836;TANGUT COMPONENT-055;Lo;0;L;;;;;N;;;;;
+18837;TANGUT COMPONENT-056;Lo;0;L;;;;;N;;;;;
+18838;TANGUT COMPONENT-057;Lo;0;L;;;;;N;;;;;
+18839;TANGUT COMPONENT-058;Lo;0;L;;;;;N;;;;;
+1883A;TANGUT COMPONENT-059;Lo;0;L;;;;;N;;;;;
+1883B;TANGUT COMPONENT-060;Lo;0;L;;;;;N;;;;;
+1883C;TANGUT COMPONENT-061;Lo;0;L;;;;;N;;;;;
+1883D;TANGUT COMPONENT-062;Lo;0;L;;;;;N;;;;;
+1883E;TANGUT COMPONENT-063;Lo;0;L;;;;;N;;;;;
+1883F;TANGUT COMPONENT-064;Lo;0;L;;;;;N;;;;;
+18840;TANGUT COMPONENT-065;Lo;0;L;;;;;N;;;;;
+18841;TANGUT COMPONENT-066;Lo;0;L;;;;;N;;;;;
+18842;TANGUT COMPONENT-067;Lo;0;L;;;;;N;;;;;
+18843;TANGUT COMPONENT-068;Lo;0;L;;;;;N;;;;;
+18844;TANGUT COMPONENT-069;Lo;0;L;;;;;N;;;;;
+18845;TANGUT COMPONENT-070;Lo;0;L;;;;;N;;;;;
+18846;TANGUT COMPONENT-071;Lo;0;L;;;;;N;;;;;
+18847;TANGUT COMPONENT-072;Lo;0;L;;;;;N;;;;;
+18848;TANGUT COMPONENT-073;Lo;0;L;;;;;N;;;;;
+18849;TANGUT COMPONENT-074;Lo;0;L;;;;;N;;;;;
+1884A;TANGUT COMPONENT-075;Lo;0;L;;;;;N;;;;;
+1884B;TANGUT COMPONENT-076;Lo;0;L;;;;;N;;;;;
+1884C;TANGUT COMPONENT-077;Lo;0;L;;;;;N;;;;;
+1884D;TANGUT COMPONENT-078;Lo;0;L;;;;;N;;;;;
+1884E;TANGUT COMPONENT-079;Lo;0;L;;;;;N;;;;;
+1884F;TANGUT COMPONENT-080;Lo;0;L;;;;;N;;;;;
+18850;TANGUT COMPONENT-081;Lo;0;L;;;;;N;;;;;
+18851;TANGUT COMPONENT-082;Lo;0;L;;;;;N;;;;;
+18852;TANGUT COMPONENT-083;Lo;0;L;;;;;N;;;;;
+18853;TANGUT COMPONENT-084;Lo;0;L;;;;;N;;;;;
+18854;TANGUT COMPONENT-085;Lo;0;L;;;;;N;;;;;
+18855;TANGUT COMPONENT-086;Lo;0;L;;;;;N;;;;;
+18856;TANGUT COMPONENT-087;Lo;0;L;;;;;N;;;;;
+18857;TANGUT COMPONENT-088;Lo;0;L;;;;;N;;;;;
+18858;TANGUT COMPONENT-089;Lo;0;L;;;;;N;;;;;
+18859;TANGUT COMPONENT-090;Lo;0;L;;;;;N;;;;;
+1885A;TANGUT COMPONENT-091;Lo;0;L;;;;;N;;;;;
+1885B;TANGUT COMPONENT-092;Lo;0;L;;;;;N;;;;;
+1885C;TANGUT COMPONENT-093;Lo;0;L;;;;;N;;;;;
+1885D;TANGUT COMPONENT-094;Lo;0;L;;;;;N;;;;;
+1885E;TANGUT COMPONENT-095;Lo;0;L;;;;;N;;;;;
+1885F;TANGUT COMPONENT-096;Lo;0;L;;;;;N;;;;;
+18860;TANGUT COMPONENT-097;Lo;0;L;;;;;N;;;;;
+18861;TANGUT COMPONENT-098;Lo;0;L;;;;;N;;;;;
+18862;TANGUT COMPONENT-099;Lo;0;L;;;;;N;;;;;
+18863;TANGUT COMPONENT-100;Lo;0;L;;;;;N;;;;;
+18864;TANGUT COMPONENT-101;Lo;0;L;;;;;N;;;;;
+18865;TANGUT COMPONENT-102;Lo;0;L;;;;;N;;;;;
+18866;TANGUT COMPONENT-103;Lo;0;L;;;;;N;;;;;
+18867;TANGUT COMPONENT-104;Lo;0;L;;;;;N;;;;;
+18868;TANGUT COMPONENT-105;Lo;0;L;;;;;N;;;;;
+18869;TANGUT COMPONENT-106;Lo;0;L;;;;;N;;;;;
+1886A;TANGUT COMPONENT-107;Lo;0;L;;;;;N;;;;;
+1886B;TANGUT COMPONENT-108;Lo;0;L;;;;;N;;;;;
+1886C;TANGUT COMPONENT-109;Lo;0;L;;;;;N;;;;;
+1886D;TANGUT COMPONENT-110;Lo;0;L;;;;;N;;;;;
+1886E;TANGUT COMPONENT-111;Lo;0;L;;;;;N;;;;;
+1886F;TANGUT COMPONENT-112;Lo;0;L;;;;;N;;;;;
+18870;TANGUT COMPONENT-113;Lo;0;L;;;;;N;;;;;
+18871;TANGUT COMPONENT-114;Lo;0;L;;;;;N;;;;;
+18872;TANGUT COMPONENT-115;Lo;0;L;;;;;N;;;;;
+18873;TANGUT COMPONENT-116;Lo;0;L;;;;;N;;;;;
+18874;TANGUT COMPONENT-117;Lo;0;L;;;;;N;;;;;
+18875;TANGUT COMPONENT-118;Lo;0;L;;;;;N;;;;;
+18876;TANGUT COMPONENT-119;Lo;0;L;;;;;N;;;;;
+18877;TANGUT COMPONENT-120;Lo;0;L;;;;;N;;;;;
+18878;TANGUT COMPONENT-121;Lo;0;L;;;;;N;;;;;
+18879;TANGUT COMPONENT-122;Lo;0;L;;;;;N;;;;;
+1887A;TANGUT COMPONENT-123;Lo;0;L;;;;;N;;;;;
+1887B;TANGUT COMPONENT-124;Lo;0;L;;;;;N;;;;;
+1887C;TANGUT COMPONENT-125;Lo;0;L;;;;;N;;;;;
+1887D;TANGUT COMPONENT-126;Lo;0;L;;;;;N;;;;;
+1887E;TANGUT COMPONENT-127;Lo;0;L;;;;;N;;;;;
+1887F;TANGUT COMPONENT-128;Lo;0;L;;;;;N;;;;;
+18880;TANGUT COMPONENT-129;Lo;0;L;;;;;N;;;;;
+18881;TANGUT COMPONENT-130;Lo;0;L;;;;;N;;;;;
+18882;TANGUT COMPONENT-131;Lo;0;L;;;;;N;;;;;
+18883;TANGUT COMPONENT-132;Lo;0;L;;;;;N;;;;;
+18884;TANGUT COMPONENT-133;Lo;0;L;;;;;N;;;;;
+18885;TANGUT COMPONENT-134;Lo;0;L;;;;;N;;;;;
+18886;TANGUT COMPONENT-135;Lo;0;L;;;;;N;;;;;
+18887;TANGUT COMPONENT-136;Lo;0;L;;;;;N;;;;;
+18888;TANGUT COMPONENT-137;Lo;0;L;;;;;N;;;;;
+18889;TANGUT COMPONENT-138;Lo;0;L;;;;;N;;;;;
+1888A;TANGUT COMPONENT-139;Lo;0;L;;;;;N;;;;;
+1888B;TANGUT COMPONENT-140;Lo;0;L;;;;;N;;;;;
+1888C;TANGUT COMPONENT-141;Lo;0;L;;;;;N;;;;;
+1888D;TANGUT COMPONENT-142;Lo;0;L;;;;;N;;;;;
+1888E;TANGUT COMPONENT-143;Lo;0;L;;;;;N;;;;;
+1888F;TANGUT COMPONENT-144;Lo;0;L;;;;;N;;;;;
+18890;TANGUT COMPONENT-145;Lo;0;L;;;;;N;;;;;
+18891;TANGUT COMPONENT-146;Lo;0;L;;;;;N;;;;;
+18892;TANGUT COMPONENT-147;Lo;0;L;;;;;N;;;;;
+18893;TANGUT COMPONENT-148;Lo;0;L;;;;;N;;;;;
+18894;TANGUT COMPONENT-149;Lo;0;L;;;;;N;;;;;
+18895;TANGUT COMPONENT-150;Lo;0;L;;;;;N;;;;;
+18896;TANGUT COMPONENT-151;Lo;0;L;;;;;N;;;;;
+18897;TANGUT COMPONENT-152;Lo;0;L;;;;;N;;;;;
+18898;TANGUT COMPONENT-153;Lo;0;L;;;;;N;;;;;
+18899;TANGUT COMPONENT-154;Lo;0;L;;;;;N;;;;;
+1889A;TANGUT COMPONENT-155;Lo;0;L;;;;;N;;;;;
+1889B;TANGUT COMPONENT-156;Lo;0;L;;;;;N;;;;;
+1889C;TANGUT COMPONENT-157;Lo;0;L;;;;;N;;;;;
+1889D;TANGUT COMPONENT-158;Lo;0;L;;;;;N;;;;;
+1889E;TANGUT COMPONENT-159;Lo;0;L;;;;;N;;;;;
+1889F;TANGUT COMPONENT-160;Lo;0;L;;;;;N;;;;;
+188A0;TANGUT COMPONENT-161;Lo;0;L;;;;;N;;;;;
+188A1;TANGUT COMPONENT-162;Lo;0;L;;;;;N;;;;;
+188A2;TANGUT COMPONENT-163;Lo;0;L;;;;;N;;;;;
+188A3;TANGUT COMPONENT-164;Lo;0;L;;;;;N;;;;;
+188A4;TANGUT COMPONENT-165;Lo;0;L;;;;;N;;;;;
+188A5;TANGUT COMPONENT-166;Lo;0;L;;;;;N;;;;;
+188A6;TANGUT COMPONENT-167;Lo;0;L;;;;;N;;;;;
+188A7;TANGUT COMPONENT-168;Lo;0;L;;;;;N;;;;;
+188A8;TANGUT COMPONENT-169;Lo;0;L;;;;;N;;;;;
+188A9;TANGUT COMPONENT-170;Lo;0;L;;;;;N;;;;;
+188AA;TANGUT COMPONENT-171;Lo;0;L;;;;;N;;;;;
+188AB;TANGUT COMPONENT-172;Lo;0;L;;;;;N;;;;;
+188AC;TANGUT COMPONENT-173;Lo;0;L;;;;;N;;;;;
+188AD;TANGUT COMPONENT-174;Lo;0;L;;;;;N;;;;;
+188AE;TANGUT COMPONENT-175;Lo;0;L;;;;;N;;;;;
+188AF;TANGUT COMPONENT-176;Lo;0;L;;;;;N;;;;;
+188B0;TANGUT COMPONENT-177;Lo;0;L;;;;;N;;;;;
+188B1;TANGUT COMPONENT-178;Lo;0;L;;;;;N;;;;;
+188B2;TANGUT COMPONENT-179;Lo;0;L;;;;;N;;;;;
+188B3;TANGUT COMPONENT-180;Lo;0;L;;;;;N;;;;;
+188B4;TANGUT COMPONENT-181;Lo;0;L;;;;;N;;;;;
+188B5;TANGUT COMPONENT-182;Lo;0;L;;;;;N;;;;;
+188B6;TANGUT COMPONENT-183;Lo;0;L;;;;;N;;;;;
+188B7;TANGUT COMPONENT-184;Lo;0;L;;;;;N;;;;;
+188B8;TANGUT COMPONENT-185;Lo;0;L;;;;;N;;;;;
+188B9;TANGUT COMPONENT-186;Lo;0;L;;;;;N;;;;;
+188BA;TANGUT COMPONENT-187;Lo;0;L;;;;;N;;;;;
+188BB;TANGUT COMPONENT-188;Lo;0;L;;;;;N;;;;;
+188BC;TANGUT COMPONENT-189;Lo;0;L;;;;;N;;;;;
+188BD;TANGUT COMPONENT-190;Lo;0;L;;;;;N;;;;;
+188BE;TANGUT COMPONENT-191;Lo;0;L;;;;;N;;;;;
+188BF;TANGUT COMPONENT-192;Lo;0;L;;;;;N;;;;;
+188C0;TANGUT COMPONENT-193;Lo;0;L;;;;;N;;;;;
+188C1;TANGUT COMPONENT-194;Lo;0;L;;;;;N;;;;;
+188C2;TANGUT COMPONENT-195;Lo;0;L;;;;;N;;;;;
+188C3;TANGUT COMPONENT-196;Lo;0;L;;;;;N;;;;;
+188C4;TANGUT COMPONENT-197;Lo;0;L;;;;;N;;;;;
+188C5;TANGUT COMPONENT-198;Lo;0;L;;;;;N;;;;;
+188C6;TANGUT COMPONENT-199;Lo;0;L;;;;;N;;;;;
+188C7;TANGUT COMPONENT-200;Lo;0;L;;;;;N;;;;;
+188C8;TANGUT COMPONENT-201;Lo;0;L;;;;;N;;;;;
+188C9;TANGUT COMPONENT-202;Lo;0;L;;;;;N;;;;;
+188CA;TANGUT COMPONENT-203;Lo;0;L;;;;;N;;;;;
+188CB;TANGUT COMPONENT-204;Lo;0;L;;;;;N;;;;;
+188CC;TANGUT COMPONENT-205;Lo;0;L;;;;;N;;;;;
+188CD;TANGUT COMPONENT-206;Lo;0;L;;;;;N;;;;;
+188CE;TANGUT COMPONENT-207;Lo;0;L;;;;;N;;;;;
+188CF;TANGUT COMPONENT-208;Lo;0;L;;;;;N;;;;;
+188D0;TANGUT COMPONENT-209;Lo;0;L;;;;;N;;;;;
+188D1;TANGUT COMPONENT-210;Lo;0;L;;;;;N;;;;;
+188D2;TANGUT COMPONENT-211;Lo;0;L;;;;;N;;;;;
+188D3;TANGUT COMPONENT-212;Lo;0;L;;;;;N;;;;;
+188D4;TANGUT COMPONENT-213;Lo;0;L;;;;;N;;;;;
+188D5;TANGUT COMPONENT-214;Lo;0;L;;;;;N;;;;;
+188D6;TANGUT COMPONENT-215;Lo;0;L;;;;;N;;;;;
+188D7;TANGUT COMPONENT-216;Lo;0;L;;;;;N;;;;;
+188D8;TANGUT COMPONENT-217;Lo;0;L;;;;;N;;;;;
+188D9;TANGUT COMPONENT-218;Lo;0;L;;;;;N;;;;;
+188DA;TANGUT COMPONENT-219;Lo;0;L;;;;;N;;;;;
+188DB;TANGUT COMPONENT-220;Lo;0;L;;;;;N;;;;;
+188DC;TANGUT COMPONENT-221;Lo;0;L;;;;;N;;;;;
+188DD;TANGUT COMPONENT-222;Lo;0;L;;;;;N;;;;;
+188DE;TANGUT COMPONENT-223;Lo;0;L;;;;;N;;;;;
+188DF;TANGUT COMPONENT-224;Lo;0;L;;;;;N;;;;;
+188E0;TANGUT COMPONENT-225;Lo;0;L;;;;;N;;;;;
+188E1;TANGUT COMPONENT-226;Lo;0;L;;;;;N;;;;;
+188E2;TANGUT COMPONENT-227;Lo;0;L;;;;;N;;;;;
+188E3;TANGUT COMPONENT-228;Lo;0;L;;;;;N;;;;;
+188E4;TANGUT COMPONENT-229;Lo;0;L;;;;;N;;;;;
+188E5;TANGUT COMPONENT-230;Lo;0;L;;;;;N;;;;;
+188E6;TANGUT COMPONENT-231;Lo;0;L;;;;;N;;;;;
+188E7;TANGUT COMPONENT-232;Lo;0;L;;;;;N;;;;;
+188E8;TANGUT COMPONENT-233;Lo;0;L;;;;;N;;;;;
+188E9;TANGUT COMPONENT-234;Lo;0;L;;;;;N;;;;;
+188EA;TANGUT COMPONENT-235;Lo;0;L;;;;;N;;;;;
+188EB;TANGUT COMPONENT-236;Lo;0;L;;;;;N;;;;;
+188EC;TANGUT COMPONENT-237;Lo;0;L;;;;;N;;;;;
+188ED;TANGUT COMPONENT-238;Lo;0;L;;;;;N;;;;;
+188EE;TANGUT COMPONENT-239;Lo;0;L;;;;;N;;;;;
+188EF;TANGUT COMPONENT-240;Lo;0;L;;;;;N;;;;;
+188F0;TANGUT COMPONENT-241;Lo;0;L;;;;;N;;;;;
+188F1;TANGUT COMPONENT-242;Lo;0;L;;;;;N;;;;;
+188F2;TANGUT COMPONENT-243;Lo;0;L;;;;;N;;;;;
+188F3;TANGUT COMPONENT-244;Lo;0;L;;;;;N;;;;;
+188F4;TANGUT COMPONENT-245;Lo;0;L;;;;;N;;;;;
+188F5;TANGUT COMPONENT-246;Lo;0;L;;;;;N;;;;;
+188F6;TANGUT COMPONENT-247;Lo;0;L;;;;;N;;;;;
+188F7;TANGUT COMPONENT-248;Lo;0;L;;;;;N;;;;;
+188F8;TANGUT COMPONENT-249;Lo;0;L;;;;;N;;;;;
+188F9;TANGUT COMPONENT-250;Lo;0;L;;;;;N;;;;;
+188FA;TANGUT COMPONENT-251;Lo;0;L;;;;;N;;;;;
+188FB;TANGUT COMPONENT-252;Lo;0;L;;;;;N;;;;;
+188FC;TANGUT COMPONENT-253;Lo;0;L;;;;;N;;;;;
+188FD;TANGUT COMPONENT-254;Lo;0;L;;;;;N;;;;;
+188FE;TANGUT COMPONENT-255;Lo;0;L;;;;;N;;;;;
+188FF;TANGUT COMPONENT-256;Lo;0;L;;;;;N;;;;;
+18900;TANGUT COMPONENT-257;Lo;0;L;;;;;N;;;;;
+18901;TANGUT COMPONENT-258;Lo;0;L;;;;;N;;;;;
+18902;TANGUT COMPONENT-259;Lo;0;L;;;;;N;;;;;
+18903;TANGUT COMPONENT-260;Lo;0;L;;;;;N;;;;;
+18904;TANGUT COMPONENT-261;Lo;0;L;;;;;N;;;;;
+18905;TANGUT COMPONENT-262;Lo;0;L;;;;;N;;;;;
+18906;TANGUT COMPONENT-263;Lo;0;L;;;;;N;;;;;
+18907;TANGUT COMPONENT-264;Lo;0;L;;;;;N;;;;;
+18908;TANGUT COMPONENT-265;Lo;0;L;;;;;N;;;;;
+18909;TANGUT COMPONENT-266;Lo;0;L;;;;;N;;;;;
+1890A;TANGUT COMPONENT-267;Lo;0;L;;;;;N;;;;;
+1890B;TANGUT COMPONENT-268;Lo;0;L;;;;;N;;;;;
+1890C;TANGUT COMPONENT-269;Lo;0;L;;;;;N;;;;;
+1890D;TANGUT COMPONENT-270;Lo;0;L;;;;;N;;;;;
+1890E;TANGUT COMPONENT-271;Lo;0;L;;;;;N;;;;;
+1890F;TANGUT COMPONENT-272;Lo;0;L;;;;;N;;;;;
+18910;TANGUT COMPONENT-273;Lo;0;L;;;;;N;;;;;
+18911;TANGUT COMPONENT-274;Lo;0;L;;;;;N;;;;;
+18912;TANGUT COMPONENT-275;Lo;0;L;;;;;N;;;;;
+18913;TANGUT COMPONENT-276;Lo;0;L;;;;;N;;;;;
+18914;TANGUT COMPONENT-277;Lo;0;L;;;;;N;;;;;
+18915;TANGUT COMPONENT-278;Lo;0;L;;;;;N;;;;;
+18916;TANGUT COMPONENT-279;Lo;0;L;;;;;N;;;;;
+18917;TANGUT COMPONENT-280;Lo;0;L;;;;;N;;;;;
+18918;TANGUT COMPONENT-281;Lo;0;L;;;;;N;;;;;
+18919;TANGUT COMPONENT-282;Lo;0;L;;;;;N;;;;;
+1891A;TANGUT COMPONENT-283;Lo;0;L;;;;;N;;;;;
+1891B;TANGUT COMPONENT-284;Lo;0;L;;;;;N;;;;;
+1891C;TANGUT COMPONENT-285;Lo;0;L;;;;;N;;;;;
+1891D;TANGUT COMPONENT-286;Lo;0;L;;;;;N;;;;;
+1891E;TANGUT COMPONENT-287;Lo;0;L;;;;;N;;;;;
+1891F;TANGUT COMPONENT-288;Lo;0;L;;;;;N;;;;;
+18920;TANGUT COMPONENT-289;Lo;0;L;;;;;N;;;;;
+18921;TANGUT COMPONENT-290;Lo;0;L;;;;;N;;;;;
+18922;TANGUT COMPONENT-291;Lo;0;L;;;;;N;;;;;
+18923;TANGUT COMPONENT-292;Lo;0;L;;;;;N;;;;;
+18924;TANGUT COMPONENT-293;Lo;0;L;;;;;N;;;;;
+18925;TANGUT COMPONENT-294;Lo;0;L;;;;;N;;;;;
+18926;TANGUT COMPONENT-295;Lo;0;L;;;;;N;;;;;
+18927;TANGUT COMPONENT-296;Lo;0;L;;;;;N;;;;;
+18928;TANGUT COMPONENT-297;Lo;0;L;;;;;N;;;;;
+18929;TANGUT COMPONENT-298;Lo;0;L;;;;;N;;;;;
+1892A;TANGUT COMPONENT-299;Lo;0;L;;;;;N;;;;;
+1892B;TANGUT COMPONENT-300;Lo;0;L;;;;;N;;;;;
+1892C;TANGUT COMPONENT-301;Lo;0;L;;;;;N;;;;;
+1892D;TANGUT COMPONENT-302;Lo;0;L;;;;;N;;;;;
+1892E;TANGUT COMPONENT-303;Lo;0;L;;;;;N;;;;;
+1892F;TANGUT COMPONENT-304;Lo;0;L;;;;;N;;;;;
+18930;TANGUT COMPONENT-305;Lo;0;L;;;;;N;;;;;
+18931;TANGUT COMPONENT-306;Lo;0;L;;;;;N;;;;;
+18932;TANGUT COMPONENT-307;Lo;0;L;;;;;N;;;;;
+18933;TANGUT COMPONENT-308;Lo;0;L;;;;;N;;;;;
+18934;TANGUT COMPONENT-309;Lo;0;L;;;;;N;;;;;
+18935;TANGUT COMPONENT-310;Lo;0;L;;;;;N;;;;;
+18936;TANGUT COMPONENT-311;Lo;0;L;;;;;N;;;;;
+18937;TANGUT COMPONENT-312;Lo;0;L;;;;;N;;;;;
+18938;TANGUT COMPONENT-313;Lo;0;L;;;;;N;;;;;
+18939;TANGUT COMPONENT-314;Lo;0;L;;;;;N;;;;;
+1893A;TANGUT COMPONENT-315;Lo;0;L;;;;;N;;;;;
+1893B;TANGUT COMPONENT-316;Lo;0;L;;;;;N;;;;;
+1893C;TANGUT COMPONENT-317;Lo;0;L;;;;;N;;;;;
+1893D;TANGUT COMPONENT-318;Lo;0;L;;;;;N;;;;;
+1893E;TANGUT COMPONENT-319;Lo;0;L;;;;;N;;;;;
+1893F;TANGUT COMPONENT-320;Lo;0;L;;;;;N;;;;;
+18940;TANGUT COMPONENT-321;Lo;0;L;;;;;N;;;;;
+18941;TANGUT COMPONENT-322;Lo;0;L;;;;;N;;;;;
+18942;TANGUT COMPONENT-323;Lo;0;L;;;;;N;;;;;
+18943;TANGUT COMPONENT-324;Lo;0;L;;;;;N;;;;;
+18944;TANGUT COMPONENT-325;Lo;0;L;;;;;N;;;;;
+18945;TANGUT COMPONENT-326;Lo;0;L;;;;;N;;;;;
+18946;TANGUT COMPONENT-327;Lo;0;L;;;;;N;;;;;
+18947;TANGUT COMPONENT-328;Lo;0;L;;;;;N;;;;;
+18948;TANGUT COMPONENT-329;Lo;0;L;;;;;N;;;;;
+18949;TANGUT COMPONENT-330;Lo;0;L;;;;;N;;;;;
+1894A;TANGUT COMPONENT-331;Lo;0;L;;;;;N;;;;;
+1894B;TANGUT COMPONENT-332;Lo;0;L;;;;;N;;;;;
+1894C;TANGUT COMPONENT-333;Lo;0;L;;;;;N;;;;;
+1894D;TANGUT COMPONENT-334;Lo;0;L;;;;;N;;;;;
+1894E;TANGUT COMPONENT-335;Lo;0;L;;;;;N;;;;;
+1894F;TANGUT COMPONENT-336;Lo;0;L;;;;;N;;;;;
+18950;TANGUT COMPONENT-337;Lo;0;L;;;;;N;;;;;
+18951;TANGUT COMPONENT-338;Lo;0;L;;;;;N;;;;;
+18952;TANGUT COMPONENT-339;Lo;0;L;;;;;N;;;;;
+18953;TANGUT COMPONENT-340;Lo;0;L;;;;;N;;;;;
+18954;TANGUT COMPONENT-341;Lo;0;L;;;;;N;;;;;
+18955;TANGUT COMPONENT-342;Lo;0;L;;;;;N;;;;;
+18956;TANGUT COMPONENT-343;Lo;0;L;;;;;N;;;;;
+18957;TANGUT COMPONENT-344;Lo;0;L;;;;;N;;;;;
+18958;TANGUT COMPONENT-345;Lo;0;L;;;;;N;;;;;
+18959;TANGUT COMPONENT-346;Lo;0;L;;;;;N;;;;;
+1895A;TANGUT COMPONENT-347;Lo;0;L;;;;;N;;;;;
+1895B;TANGUT COMPONENT-348;Lo;0;L;;;;;N;;;;;
+1895C;TANGUT COMPONENT-349;Lo;0;L;;;;;N;;;;;
+1895D;TANGUT COMPONENT-350;Lo;0;L;;;;;N;;;;;
+1895E;TANGUT COMPONENT-351;Lo;0;L;;;;;N;;;;;
+1895F;TANGUT COMPONENT-352;Lo;0;L;;;;;N;;;;;
+18960;TANGUT COMPONENT-353;Lo;0;L;;;;;N;;;;;
+18961;TANGUT COMPONENT-354;Lo;0;L;;;;;N;;;;;
+18962;TANGUT COMPONENT-355;Lo;0;L;;;;;N;;;;;
+18963;TANGUT COMPONENT-356;Lo;0;L;;;;;N;;;;;
+18964;TANGUT COMPONENT-357;Lo;0;L;;;;;N;;;;;
+18965;TANGUT COMPONENT-358;Lo;0;L;;;;;N;;;;;
+18966;TANGUT COMPONENT-359;Lo;0;L;;;;;N;;;;;
+18967;TANGUT COMPONENT-360;Lo;0;L;;;;;N;;;;;
+18968;TANGUT COMPONENT-361;Lo;0;L;;;;;N;;;;;
+18969;TANGUT COMPONENT-362;Lo;0;L;;;;;N;;;;;
+1896A;TANGUT COMPONENT-363;Lo;0;L;;;;;N;;;;;
+1896B;TANGUT COMPONENT-364;Lo;0;L;;;;;N;;;;;
+1896C;TANGUT COMPONENT-365;Lo;0;L;;;;;N;;;;;
+1896D;TANGUT COMPONENT-366;Lo;0;L;;;;;N;;;;;
+1896E;TANGUT COMPONENT-367;Lo;0;L;;;;;N;;;;;
+1896F;TANGUT COMPONENT-368;Lo;0;L;;;;;N;;;;;
+18970;TANGUT COMPONENT-369;Lo;0;L;;;;;N;;;;;
+18971;TANGUT COMPONENT-370;Lo;0;L;;;;;N;;;;;
+18972;TANGUT COMPONENT-371;Lo;0;L;;;;;N;;;;;
+18973;TANGUT COMPONENT-372;Lo;0;L;;;;;N;;;;;
+18974;TANGUT COMPONENT-373;Lo;0;L;;;;;N;;;;;
+18975;TANGUT COMPONENT-374;Lo;0;L;;;;;N;;;;;
+18976;TANGUT COMPONENT-375;Lo;0;L;;;;;N;;;;;
+18977;TANGUT COMPONENT-376;Lo;0;L;;;;;N;;;;;
+18978;TANGUT COMPONENT-377;Lo;0;L;;;;;N;;;;;
+18979;TANGUT COMPONENT-378;Lo;0;L;;;;;N;;;;;
+1897A;TANGUT COMPONENT-379;Lo;0;L;;;;;N;;;;;
+1897B;TANGUT COMPONENT-380;Lo;0;L;;;;;N;;;;;
+1897C;TANGUT COMPONENT-381;Lo;0;L;;;;;N;;;;;
+1897D;TANGUT COMPONENT-382;Lo;0;L;;;;;N;;;;;
+1897E;TANGUT COMPONENT-383;Lo;0;L;;;;;N;;;;;
+1897F;TANGUT COMPONENT-384;Lo;0;L;;;;;N;;;;;
+18980;TANGUT COMPONENT-385;Lo;0;L;;;;;N;;;;;
+18981;TANGUT COMPONENT-386;Lo;0;L;;;;;N;;;;;
+18982;TANGUT COMPONENT-387;Lo;0;L;;;;;N;;;;;
+18983;TANGUT COMPONENT-388;Lo;0;L;;;;;N;;;;;
+18984;TANGUT COMPONENT-389;Lo;0;L;;;;;N;;;;;
+18985;TANGUT COMPONENT-390;Lo;0;L;;;;;N;;;;;
+18986;TANGUT COMPONENT-391;Lo;0;L;;;;;N;;;;;
+18987;TANGUT COMPONENT-392;Lo;0;L;;;;;N;;;;;
+18988;TANGUT COMPONENT-393;Lo;0;L;;;;;N;;;;;
+18989;TANGUT COMPONENT-394;Lo;0;L;;;;;N;;;;;
+1898A;TANGUT COMPONENT-395;Lo;0;L;;;;;N;;;;;
+1898B;TANGUT COMPONENT-396;Lo;0;L;;;;;N;;;;;
+1898C;TANGUT COMPONENT-397;Lo;0;L;;;;;N;;;;;
+1898D;TANGUT COMPONENT-398;Lo;0;L;;;;;N;;;;;
+1898E;TANGUT COMPONENT-399;Lo;0;L;;;;;N;;;;;
+1898F;TANGUT COMPONENT-400;Lo;0;L;;;;;N;;;;;
+18990;TANGUT COMPONENT-401;Lo;0;L;;;;;N;;;;;
+18991;TANGUT COMPONENT-402;Lo;0;L;;;;;N;;;;;
+18992;TANGUT COMPONENT-403;Lo;0;L;;;;;N;;;;;
+18993;TANGUT COMPONENT-404;Lo;0;L;;;;;N;;;;;
+18994;TANGUT COMPONENT-405;Lo;0;L;;;;;N;;;;;
+18995;TANGUT COMPONENT-406;Lo;0;L;;;;;N;;;;;
+18996;TANGUT COMPONENT-407;Lo;0;L;;;;;N;;;;;
+18997;TANGUT COMPONENT-408;Lo;0;L;;;;;N;;;;;
+18998;TANGUT COMPONENT-409;Lo;0;L;;;;;N;;;;;
+18999;TANGUT COMPONENT-410;Lo;0;L;;;;;N;;;;;
+1899A;TANGUT COMPONENT-411;Lo;0;L;;;;;N;;;;;
+1899B;TANGUT COMPONENT-412;Lo;0;L;;;;;N;;;;;
+1899C;TANGUT COMPONENT-413;Lo;0;L;;;;;N;;;;;
+1899D;TANGUT COMPONENT-414;Lo;0;L;;;;;N;;;;;
+1899E;TANGUT COMPONENT-415;Lo;0;L;;;;;N;;;;;
+1899F;TANGUT COMPONENT-416;Lo;0;L;;;;;N;;;;;
+189A0;TANGUT COMPONENT-417;Lo;0;L;;;;;N;;;;;
+189A1;TANGUT COMPONENT-418;Lo;0;L;;;;;N;;;;;
+189A2;TANGUT COMPONENT-419;Lo;0;L;;;;;N;;;;;
+189A3;TANGUT COMPONENT-420;Lo;0;L;;;;;N;;;;;
+189A4;TANGUT COMPONENT-421;Lo;0;L;;;;;N;;;;;
+189A5;TANGUT COMPONENT-422;Lo;0;L;;;;;N;;;;;
+189A6;TANGUT COMPONENT-423;Lo;0;L;;;;;N;;;;;
+189A7;TANGUT COMPONENT-424;Lo;0;L;;;;;N;;;;;
+189A8;TANGUT COMPONENT-425;Lo;0;L;;;;;N;;;;;
+189A9;TANGUT COMPONENT-426;Lo;0;L;;;;;N;;;;;
+189AA;TANGUT COMPONENT-427;Lo;0;L;;;;;N;;;;;
+189AB;TANGUT COMPONENT-428;Lo;0;L;;;;;N;;;;;
+189AC;TANGUT COMPONENT-429;Lo;0;L;;;;;N;;;;;
+189AD;TANGUT COMPONENT-430;Lo;0;L;;;;;N;;;;;
+189AE;TANGUT COMPONENT-431;Lo;0;L;;;;;N;;;;;
+189AF;TANGUT COMPONENT-432;Lo;0;L;;;;;N;;;;;
+189B0;TANGUT COMPONENT-433;Lo;0;L;;;;;N;;;;;
+189B1;TANGUT COMPONENT-434;Lo;0;L;;;;;N;;;;;
+189B2;TANGUT COMPONENT-435;Lo;0;L;;;;;N;;;;;
+189B3;TANGUT COMPONENT-436;Lo;0;L;;;;;N;;;;;
+189B4;TANGUT COMPONENT-437;Lo;0;L;;;;;N;;;;;
+189B5;TANGUT COMPONENT-438;Lo;0;L;;;;;N;;;;;
+189B6;TANGUT COMPONENT-439;Lo;0;L;;;;;N;;;;;
+189B7;TANGUT COMPONENT-440;Lo;0;L;;;;;N;;;;;
+189B8;TANGUT COMPONENT-441;Lo;0;L;;;;;N;;;;;
+189B9;TANGUT COMPONENT-442;Lo;0;L;;;;;N;;;;;
+189BA;TANGUT COMPONENT-443;Lo;0;L;;;;;N;;;;;
+189BB;TANGUT COMPONENT-444;Lo;0;L;;;;;N;;;;;
+189BC;TANGUT COMPONENT-445;Lo;0;L;;;;;N;;;;;
+189BD;TANGUT COMPONENT-446;Lo;0;L;;;;;N;;;;;
+189BE;TANGUT COMPONENT-447;Lo;0;L;;;;;N;;;;;
+189BF;TANGUT COMPONENT-448;Lo;0;L;;;;;N;;;;;
+189C0;TANGUT COMPONENT-449;Lo;0;L;;;;;N;;;;;
+189C1;TANGUT COMPONENT-450;Lo;0;L;;;;;N;;;;;
+189C2;TANGUT COMPONENT-451;Lo;0;L;;;;;N;;;;;
+189C3;TANGUT COMPONENT-452;Lo;0;L;;;;;N;;;;;
+189C4;TANGUT COMPONENT-453;Lo;0;L;;;;;N;;;;;
+189C5;TANGUT COMPONENT-454;Lo;0;L;;;;;N;;;;;
+189C6;TANGUT COMPONENT-455;Lo;0;L;;;;;N;;;;;
+189C7;TANGUT COMPONENT-456;Lo;0;L;;;;;N;;;;;
+189C8;TANGUT COMPONENT-457;Lo;0;L;;;;;N;;;;;
+189C9;TANGUT COMPONENT-458;Lo;0;L;;;;;N;;;;;
+189CA;TANGUT COMPONENT-459;Lo;0;L;;;;;N;;;;;
+189CB;TANGUT COMPONENT-460;Lo;0;L;;;;;N;;;;;
+189CC;TANGUT COMPONENT-461;Lo;0;L;;;;;N;;;;;
+189CD;TANGUT COMPONENT-462;Lo;0;L;;;;;N;;;;;
+189CE;TANGUT COMPONENT-463;Lo;0;L;;;;;N;;;;;
+189CF;TANGUT COMPONENT-464;Lo;0;L;;;;;N;;;;;
+189D0;TANGUT COMPONENT-465;Lo;0;L;;;;;N;;;;;
+189D1;TANGUT COMPONENT-466;Lo;0;L;;;;;N;;;;;
+189D2;TANGUT COMPONENT-467;Lo;0;L;;;;;N;;;;;
+189D3;TANGUT COMPONENT-468;Lo;0;L;;;;;N;;;;;
+189D4;TANGUT COMPONENT-469;Lo;0;L;;;;;N;;;;;
+189D5;TANGUT COMPONENT-470;Lo;0;L;;;;;N;;;;;
+189D6;TANGUT COMPONENT-471;Lo;0;L;;;;;N;;;;;
+189D7;TANGUT COMPONENT-472;Lo;0;L;;;;;N;;;;;
+189D8;TANGUT COMPONENT-473;Lo;0;L;;;;;N;;;;;
+189D9;TANGUT COMPONENT-474;Lo;0;L;;;;;N;;;;;
+189DA;TANGUT COMPONENT-475;Lo;0;L;;;;;N;;;;;
+189DB;TANGUT COMPONENT-476;Lo;0;L;;;;;N;;;;;
+189DC;TANGUT COMPONENT-477;Lo;0;L;;;;;N;;;;;
+189DD;TANGUT COMPONENT-478;Lo;0;L;;;;;N;;;;;
+189DE;TANGUT COMPONENT-479;Lo;0;L;;;;;N;;;;;
+189DF;TANGUT COMPONENT-480;Lo;0;L;;;;;N;;;;;
+189E0;TANGUT COMPONENT-481;Lo;0;L;;;;;N;;;;;
+189E1;TANGUT COMPONENT-482;Lo;0;L;;;;;N;;;;;
+189E2;TANGUT COMPONENT-483;Lo;0;L;;;;;N;;;;;
+189E3;TANGUT COMPONENT-484;Lo;0;L;;;;;N;;;;;
+189E4;TANGUT COMPONENT-485;Lo;0;L;;;;;N;;;;;
+189E5;TANGUT COMPONENT-486;Lo;0;L;;;;;N;;;;;
+189E6;TANGUT COMPONENT-487;Lo;0;L;;;;;N;;;;;
+189E7;TANGUT COMPONENT-488;Lo;0;L;;;;;N;;;;;
+189E8;TANGUT COMPONENT-489;Lo;0;L;;;;;N;;;;;
+189E9;TANGUT COMPONENT-490;Lo;0;L;;;;;N;;;;;
+189EA;TANGUT COMPONENT-491;Lo;0;L;;;;;N;;;;;
+189EB;TANGUT COMPONENT-492;Lo;0;L;;;;;N;;;;;
+189EC;TANGUT COMPONENT-493;Lo;0;L;;;;;N;;;;;
+189ED;TANGUT COMPONENT-494;Lo;0;L;;;;;N;;;;;
+189EE;TANGUT COMPONENT-495;Lo;0;L;;;;;N;;;;;
+189EF;TANGUT COMPONENT-496;Lo;0;L;;;;;N;;;;;
+189F0;TANGUT COMPONENT-497;Lo;0;L;;;;;N;;;;;
+189F1;TANGUT COMPONENT-498;Lo;0;L;;;;;N;;;;;
+189F2;TANGUT COMPONENT-499;Lo;0;L;;;;;N;;;;;
+189F3;TANGUT COMPONENT-500;Lo;0;L;;;;;N;;;;;
+189F4;TANGUT COMPONENT-501;Lo;0;L;;;;;N;;;;;
+189F5;TANGUT COMPONENT-502;Lo;0;L;;;;;N;;;;;
+189F6;TANGUT COMPONENT-503;Lo;0;L;;;;;N;;;;;
+189F7;TANGUT COMPONENT-504;Lo;0;L;;;;;N;;;;;
+189F8;TANGUT COMPONENT-505;Lo;0;L;;;;;N;;;;;
+189F9;TANGUT COMPONENT-506;Lo;0;L;;;;;N;;;;;
+189FA;TANGUT COMPONENT-507;Lo;0;L;;;;;N;;;;;
+189FB;TANGUT COMPONENT-508;Lo;0;L;;;;;N;;;;;
+189FC;TANGUT COMPONENT-509;Lo;0;L;;;;;N;;;;;
+189FD;TANGUT COMPONENT-510;Lo;0;L;;;;;N;;;;;
+189FE;TANGUT COMPONENT-511;Lo;0;L;;;;;N;;;;;
+189FF;TANGUT COMPONENT-512;Lo;0;L;;;;;N;;;;;
+18A00;TANGUT COMPONENT-513;Lo;0;L;;;;;N;;;;;
+18A01;TANGUT COMPONENT-514;Lo;0;L;;;;;N;;;;;
+18A02;TANGUT COMPONENT-515;Lo;0;L;;;;;N;;;;;
+18A03;TANGUT COMPONENT-516;Lo;0;L;;;;;N;;;;;
+18A04;TANGUT COMPONENT-517;Lo;0;L;;;;;N;;;;;
+18A05;TANGUT COMPONENT-518;Lo;0;L;;;;;N;;;;;
+18A06;TANGUT COMPONENT-519;Lo;0;L;;;;;N;;;;;
+18A07;TANGUT COMPONENT-520;Lo;0;L;;;;;N;;;;;
+18A08;TANGUT COMPONENT-521;Lo;0;L;;;;;N;;;;;
+18A09;TANGUT COMPONENT-522;Lo;0;L;;;;;N;;;;;
+18A0A;TANGUT COMPONENT-523;Lo;0;L;;;;;N;;;;;
+18A0B;TANGUT COMPONENT-524;Lo;0;L;;;;;N;;;;;
+18A0C;TANGUT COMPONENT-525;Lo;0;L;;;;;N;;;;;
+18A0D;TANGUT COMPONENT-526;Lo;0;L;;;;;N;;;;;
+18A0E;TANGUT COMPONENT-527;Lo;0;L;;;;;N;;;;;
+18A0F;TANGUT COMPONENT-528;Lo;0;L;;;;;N;;;;;
+18A10;TANGUT COMPONENT-529;Lo;0;L;;;;;N;;;;;
+18A11;TANGUT COMPONENT-530;Lo;0;L;;;;;N;;;;;
+18A12;TANGUT COMPONENT-531;Lo;0;L;;;;;N;;;;;
+18A13;TANGUT COMPONENT-532;Lo;0;L;;;;;N;;;;;
+18A14;TANGUT COMPONENT-533;Lo;0;L;;;;;N;;;;;
+18A15;TANGUT COMPONENT-534;Lo;0;L;;;;;N;;;;;
+18A16;TANGUT COMPONENT-535;Lo;0;L;;;;;N;;;;;
+18A17;TANGUT COMPONENT-536;Lo;0;L;;;;;N;;;;;
+18A18;TANGUT COMPONENT-537;Lo;0;L;;;;;N;;;;;
+18A19;TANGUT COMPONENT-538;Lo;0;L;;;;;N;;;;;
+18A1A;TANGUT COMPONENT-539;Lo;0;L;;;;;N;;;;;
+18A1B;TANGUT COMPONENT-540;Lo;0;L;;;;;N;;;;;
+18A1C;TANGUT COMPONENT-541;Lo;0;L;;;;;N;;;;;
+18A1D;TANGUT COMPONENT-542;Lo;0;L;;;;;N;;;;;
+18A1E;TANGUT COMPONENT-543;Lo;0;L;;;;;N;;;;;
+18A1F;TANGUT COMPONENT-544;Lo;0;L;;;;;N;;;;;
+18A20;TANGUT COMPONENT-545;Lo;0;L;;;;;N;;;;;
+18A21;TANGUT COMPONENT-546;Lo;0;L;;;;;N;;;;;
+18A22;TANGUT COMPONENT-547;Lo;0;L;;;;;N;;;;;
+18A23;TANGUT COMPONENT-548;Lo;0;L;;;;;N;;;;;
+18A24;TANGUT COMPONENT-549;Lo;0;L;;;;;N;;;;;
+18A25;TANGUT COMPONENT-550;Lo;0;L;;;;;N;;;;;
+18A26;TANGUT COMPONENT-551;Lo;0;L;;;;;N;;;;;
+18A27;TANGUT COMPONENT-552;Lo;0;L;;;;;N;;;;;
+18A28;TANGUT COMPONENT-553;Lo;0;L;;;;;N;;;;;
+18A29;TANGUT COMPONENT-554;Lo;0;L;;;;;N;;;;;
+18A2A;TANGUT COMPONENT-555;Lo;0;L;;;;;N;;;;;
+18A2B;TANGUT COMPONENT-556;Lo;0;L;;;;;N;;;;;
+18A2C;TANGUT COMPONENT-557;Lo;0;L;;;;;N;;;;;
+18A2D;TANGUT COMPONENT-558;Lo;0;L;;;;;N;;;;;
+18A2E;TANGUT COMPONENT-559;Lo;0;L;;;;;N;;;;;
+18A2F;TANGUT COMPONENT-560;Lo;0;L;;;;;N;;;;;
+18A30;TANGUT COMPONENT-561;Lo;0;L;;;;;N;;;;;
+18A31;TANGUT COMPONENT-562;Lo;0;L;;;;;N;;;;;
+18A32;TANGUT COMPONENT-563;Lo;0;L;;;;;N;;;;;
+18A33;TANGUT COMPONENT-564;Lo;0;L;;;;;N;;;;;
+18A34;TANGUT COMPONENT-565;Lo;0;L;;;;;N;;;;;
+18A35;TANGUT COMPONENT-566;Lo;0;L;;;;;N;;;;;
+18A36;TANGUT COMPONENT-567;Lo;0;L;;;;;N;;;;;
+18A37;TANGUT COMPONENT-568;Lo;0;L;;;;;N;;;;;
+18A38;TANGUT COMPONENT-569;Lo;0;L;;;;;N;;;;;
+18A39;TANGUT COMPONENT-570;Lo;0;L;;;;;N;;;;;
+18A3A;TANGUT COMPONENT-571;Lo;0;L;;;;;N;;;;;
+18A3B;TANGUT COMPONENT-572;Lo;0;L;;;;;N;;;;;
+18A3C;TANGUT COMPONENT-573;Lo;0;L;;;;;N;;;;;
+18A3D;TANGUT COMPONENT-574;Lo;0;L;;;;;N;;;;;
+18A3E;TANGUT COMPONENT-575;Lo;0;L;;;;;N;;;;;
+18A3F;TANGUT COMPONENT-576;Lo;0;L;;;;;N;;;;;
+18A40;TANGUT COMPONENT-577;Lo;0;L;;;;;N;;;;;
+18A41;TANGUT COMPONENT-578;Lo;0;L;;;;;N;;;;;
+18A42;TANGUT COMPONENT-579;Lo;0;L;;;;;N;;;;;
+18A43;TANGUT COMPONENT-580;Lo;0;L;;;;;N;;;;;
+18A44;TANGUT COMPONENT-581;Lo;0;L;;;;;N;;;;;
+18A45;TANGUT COMPONENT-582;Lo;0;L;;;;;N;;;;;
+18A46;TANGUT COMPONENT-583;Lo;0;L;;;;;N;;;;;
+18A47;TANGUT COMPONENT-584;Lo;0;L;;;;;N;;;;;
+18A48;TANGUT COMPONENT-585;Lo;0;L;;;;;N;;;;;
+18A49;TANGUT COMPONENT-586;Lo;0;L;;;;;N;;;;;
+18A4A;TANGUT COMPONENT-587;Lo;0;L;;;;;N;;;;;
+18A4B;TANGUT COMPONENT-588;Lo;0;L;;;;;N;;;;;
+18A4C;TANGUT COMPONENT-589;Lo;0;L;;;;;N;;;;;
+18A4D;TANGUT COMPONENT-590;Lo;0;L;;;;;N;;;;;
+18A4E;TANGUT COMPONENT-591;Lo;0;L;;;;;N;;;;;
+18A4F;TANGUT COMPONENT-592;Lo;0;L;;;;;N;;;;;
+18A50;TANGUT COMPONENT-593;Lo;0;L;;;;;N;;;;;
+18A51;TANGUT COMPONENT-594;Lo;0;L;;;;;N;;;;;
+18A52;TANGUT COMPONENT-595;Lo;0;L;;;;;N;;;;;
+18A53;TANGUT COMPONENT-596;Lo;0;L;;;;;N;;;;;
+18A54;TANGUT COMPONENT-597;Lo;0;L;;;;;N;;;;;
+18A55;TANGUT COMPONENT-598;Lo;0;L;;;;;N;;;;;
+18A56;TANGUT COMPONENT-599;Lo;0;L;;;;;N;;;;;
+18A57;TANGUT COMPONENT-600;Lo;0;L;;;;;N;;;;;
+18A58;TANGUT COMPONENT-601;Lo;0;L;;;;;N;;;;;
+18A59;TANGUT COMPONENT-602;Lo;0;L;;;;;N;;;;;
+18A5A;TANGUT COMPONENT-603;Lo;0;L;;;;;N;;;;;
+18A5B;TANGUT COMPONENT-604;Lo;0;L;;;;;N;;;;;
+18A5C;TANGUT COMPONENT-605;Lo;0;L;;;;;N;;;;;
+18A5D;TANGUT COMPONENT-606;Lo;0;L;;;;;N;;;;;
+18A5E;TANGUT COMPONENT-607;Lo;0;L;;;;;N;;;;;
+18A5F;TANGUT COMPONENT-608;Lo;0;L;;;;;N;;;;;
+18A60;TANGUT COMPONENT-609;Lo;0;L;;;;;N;;;;;
+18A61;TANGUT COMPONENT-610;Lo;0;L;;;;;N;;;;;
+18A62;TANGUT COMPONENT-611;Lo;0;L;;;;;N;;;;;
+18A63;TANGUT COMPONENT-612;Lo;0;L;;;;;N;;;;;
+18A64;TANGUT COMPONENT-613;Lo;0;L;;;;;N;;;;;
+18A65;TANGUT COMPONENT-614;Lo;0;L;;;;;N;;;;;
+18A66;TANGUT COMPONENT-615;Lo;0;L;;;;;N;;;;;
+18A67;TANGUT COMPONENT-616;Lo;0;L;;;;;N;;;;;
+18A68;TANGUT COMPONENT-617;Lo;0;L;;;;;N;;;;;
+18A69;TANGUT COMPONENT-618;Lo;0;L;;;;;N;;;;;
+18A6A;TANGUT COMPONENT-619;Lo;0;L;;;;;N;;;;;
+18A6B;TANGUT COMPONENT-620;Lo;0;L;;;;;N;;;;;
+18A6C;TANGUT COMPONENT-621;Lo;0;L;;;;;N;;;;;
+18A6D;TANGUT COMPONENT-622;Lo;0;L;;;;;N;;;;;
+18A6E;TANGUT COMPONENT-623;Lo;0;L;;;;;N;;;;;
+18A6F;TANGUT COMPONENT-624;Lo;0;L;;;;;N;;;;;
+18A70;TANGUT COMPONENT-625;Lo;0;L;;;;;N;;;;;
+18A71;TANGUT COMPONENT-626;Lo;0;L;;;;;N;;;;;
+18A72;TANGUT COMPONENT-627;Lo;0;L;;;;;N;;;;;
+18A73;TANGUT COMPONENT-628;Lo;0;L;;;;;N;;;;;
+18A74;TANGUT COMPONENT-629;Lo;0;L;;;;;N;;;;;
+18A75;TANGUT COMPONENT-630;Lo;0;L;;;;;N;;;;;
+18A76;TANGUT COMPONENT-631;Lo;0;L;;;;;N;;;;;
+18A77;TANGUT COMPONENT-632;Lo;0;L;;;;;N;;;;;
+18A78;TANGUT COMPONENT-633;Lo;0;L;;;;;N;;;;;
+18A79;TANGUT COMPONENT-634;Lo;0;L;;;;;N;;;;;
+18A7A;TANGUT COMPONENT-635;Lo;0;L;;;;;N;;;;;
+18A7B;TANGUT COMPONENT-636;Lo;0;L;;;;;N;;;;;
+18A7C;TANGUT COMPONENT-637;Lo;0;L;;;;;N;;;;;
+18A7D;TANGUT COMPONENT-638;Lo;0;L;;;;;N;;;;;
+18A7E;TANGUT COMPONENT-639;Lo;0;L;;;;;N;;;;;
+18A7F;TANGUT COMPONENT-640;Lo;0;L;;;;;N;;;;;
+18A80;TANGUT COMPONENT-641;Lo;0;L;;;;;N;;;;;
+18A81;TANGUT COMPONENT-642;Lo;0;L;;;;;N;;;;;
+18A82;TANGUT COMPONENT-643;Lo;0;L;;;;;N;;;;;
+18A83;TANGUT COMPONENT-644;Lo;0;L;;;;;N;;;;;
+18A84;TANGUT COMPONENT-645;Lo;0;L;;;;;N;;;;;
+18A85;TANGUT COMPONENT-646;Lo;0;L;;;;;N;;;;;
+18A86;TANGUT COMPONENT-647;Lo;0;L;;;;;N;;;;;
+18A87;TANGUT COMPONENT-648;Lo;0;L;;;;;N;;;;;
+18A88;TANGUT COMPONENT-649;Lo;0;L;;;;;N;;;;;
+18A89;TANGUT COMPONENT-650;Lo;0;L;;;;;N;;;;;
+18A8A;TANGUT COMPONENT-651;Lo;0;L;;;;;N;;;;;
+18A8B;TANGUT COMPONENT-652;Lo;0;L;;;;;N;;;;;
+18A8C;TANGUT COMPONENT-653;Lo;0;L;;;;;N;;;;;
+18A8D;TANGUT COMPONENT-654;Lo;0;L;;;;;N;;;;;
+18A8E;TANGUT COMPONENT-655;Lo;0;L;;;;;N;;;;;
+18A8F;TANGUT COMPONENT-656;Lo;0;L;;;;;N;;;;;
+18A90;TANGUT COMPONENT-657;Lo;0;L;;;;;N;;;;;
+18A91;TANGUT COMPONENT-658;Lo;0;L;;;;;N;;;;;
+18A92;TANGUT COMPONENT-659;Lo;0;L;;;;;N;;;;;
+18A93;TANGUT COMPONENT-660;Lo;0;L;;;;;N;;;;;
+18A94;TANGUT COMPONENT-661;Lo;0;L;;;;;N;;;;;
+18A95;TANGUT COMPONENT-662;Lo;0;L;;;;;N;;;;;
+18A96;TANGUT COMPONENT-663;Lo;0;L;;;;;N;;;;;
+18A97;TANGUT COMPONENT-664;Lo;0;L;;;;;N;;;;;
+18A98;TANGUT COMPONENT-665;Lo;0;L;;;;;N;;;;;
+18A99;TANGUT COMPONENT-666;Lo;0;L;;;;;N;;;;;
+18A9A;TANGUT COMPONENT-667;Lo;0;L;;;;;N;;;;;
+18A9B;TANGUT COMPONENT-668;Lo;0;L;;;;;N;;;;;
+18A9C;TANGUT COMPONENT-669;Lo;0;L;;;;;N;;;;;
+18A9D;TANGUT COMPONENT-670;Lo;0;L;;;;;N;;;;;
+18A9E;TANGUT COMPONENT-671;Lo;0;L;;;;;N;;;;;
+18A9F;TANGUT COMPONENT-672;Lo;0;L;;;;;N;;;;;
+18AA0;TANGUT COMPONENT-673;Lo;0;L;;;;;N;;;;;
+18AA1;TANGUT COMPONENT-674;Lo;0;L;;;;;N;;;;;
+18AA2;TANGUT COMPONENT-675;Lo;0;L;;;;;N;;;;;
+18AA3;TANGUT COMPONENT-676;Lo;0;L;;;;;N;;;;;
+18AA4;TANGUT COMPONENT-677;Lo;0;L;;;;;N;;;;;
+18AA5;TANGUT COMPONENT-678;Lo;0;L;;;;;N;;;;;
+18AA6;TANGUT COMPONENT-679;Lo;0;L;;;;;N;;;;;
+18AA7;TANGUT COMPONENT-680;Lo;0;L;;;;;N;;;;;
+18AA8;TANGUT COMPONENT-681;Lo;0;L;;;;;N;;;;;
+18AA9;TANGUT COMPONENT-682;Lo;0;L;;;;;N;;;;;
+18AAA;TANGUT COMPONENT-683;Lo;0;L;;;;;N;;;;;
+18AAB;TANGUT COMPONENT-684;Lo;0;L;;;;;N;;;;;
+18AAC;TANGUT COMPONENT-685;Lo;0;L;;;;;N;;;;;
+18AAD;TANGUT COMPONENT-686;Lo;0;L;;;;;N;;;;;
+18AAE;TANGUT COMPONENT-687;Lo;0;L;;;;;N;;;;;
+18AAF;TANGUT COMPONENT-688;Lo;0;L;;;;;N;;;;;
+18AB0;TANGUT COMPONENT-689;Lo;0;L;;;;;N;;;;;
+18AB1;TANGUT COMPONENT-690;Lo;0;L;;;;;N;;;;;
+18AB2;TANGUT COMPONENT-691;Lo;0;L;;;;;N;;;;;
+18AB3;TANGUT COMPONENT-692;Lo;0;L;;;;;N;;;;;
+18AB4;TANGUT COMPONENT-693;Lo;0;L;;;;;N;;;;;
+18AB5;TANGUT COMPONENT-694;Lo;0;L;;;;;N;;;;;
+18AB6;TANGUT COMPONENT-695;Lo;0;L;;;;;N;;;;;
+18AB7;TANGUT COMPONENT-696;Lo;0;L;;;;;N;;;;;
+18AB8;TANGUT COMPONENT-697;Lo;0;L;;;;;N;;;;;
+18AB9;TANGUT COMPONENT-698;Lo;0;L;;;;;N;;;;;
+18ABA;TANGUT COMPONENT-699;Lo;0;L;;;;;N;;;;;
+18ABB;TANGUT COMPONENT-700;Lo;0;L;;;;;N;;;;;
+18ABC;TANGUT COMPONENT-701;Lo;0;L;;;;;N;;;;;
+18ABD;TANGUT COMPONENT-702;Lo;0;L;;;;;N;;;;;
+18ABE;TANGUT COMPONENT-703;Lo;0;L;;;;;N;;;;;
+18ABF;TANGUT COMPONENT-704;Lo;0;L;;;;;N;;;;;
+18AC0;TANGUT COMPONENT-705;Lo;0;L;;;;;N;;;;;
+18AC1;TANGUT COMPONENT-706;Lo;0;L;;;;;N;;;;;
+18AC2;TANGUT COMPONENT-707;Lo;0;L;;;;;N;;;;;
+18AC3;TANGUT COMPONENT-708;Lo;0;L;;;;;N;;;;;
+18AC4;TANGUT COMPONENT-709;Lo;0;L;;;;;N;;;;;
+18AC5;TANGUT COMPONENT-710;Lo;0;L;;;;;N;;;;;
+18AC6;TANGUT COMPONENT-711;Lo;0;L;;;;;N;;;;;
+18AC7;TANGUT COMPONENT-712;Lo;0;L;;;;;N;;;;;
+18AC8;TANGUT COMPONENT-713;Lo;0;L;;;;;N;;;;;
+18AC9;TANGUT COMPONENT-714;Lo;0;L;;;;;N;;;;;
+18ACA;TANGUT COMPONENT-715;Lo;0;L;;;;;N;;;;;
+18ACB;TANGUT COMPONENT-716;Lo;0;L;;;;;N;;;;;
+18ACC;TANGUT COMPONENT-717;Lo;0;L;;;;;N;;;;;
+18ACD;TANGUT COMPONENT-718;Lo;0;L;;;;;N;;;;;
+18ACE;TANGUT COMPONENT-719;Lo;0;L;;;;;N;;;;;
+18ACF;TANGUT COMPONENT-720;Lo;0;L;;;;;N;;;;;
+18AD0;TANGUT COMPONENT-721;Lo;0;L;;;;;N;;;;;
+18AD1;TANGUT COMPONENT-722;Lo;0;L;;;;;N;;;;;
+18AD2;TANGUT COMPONENT-723;Lo;0;L;;;;;N;;;;;
+18AD3;TANGUT COMPONENT-724;Lo;0;L;;;;;N;;;;;
+18AD4;TANGUT COMPONENT-725;Lo;0;L;;;;;N;;;;;
+18AD5;TANGUT COMPONENT-726;Lo;0;L;;;;;N;;;;;
+18AD6;TANGUT COMPONENT-727;Lo;0;L;;;;;N;;;;;
+18AD7;TANGUT COMPONENT-728;Lo;0;L;;;;;N;;;;;
+18AD8;TANGUT COMPONENT-729;Lo;0;L;;;;;N;;;;;
+18AD9;TANGUT COMPONENT-730;Lo;0;L;;;;;N;;;;;
+18ADA;TANGUT COMPONENT-731;Lo;0;L;;;;;N;;;;;
+18ADB;TANGUT COMPONENT-732;Lo;0;L;;;;;N;;;;;
+18ADC;TANGUT COMPONENT-733;Lo;0;L;;;;;N;;;;;
+18ADD;TANGUT COMPONENT-734;Lo;0;L;;;;;N;;;;;
+18ADE;TANGUT COMPONENT-735;Lo;0;L;;;;;N;;;;;
+18ADF;TANGUT COMPONENT-736;Lo;0;L;;;;;N;;;;;
+18AE0;TANGUT COMPONENT-737;Lo;0;L;;;;;N;;;;;
+18AE1;TANGUT COMPONENT-738;Lo;0;L;;;;;N;;;;;
+18AE2;TANGUT COMPONENT-739;Lo;0;L;;;;;N;;;;;
+18AE3;TANGUT COMPONENT-740;Lo;0;L;;;;;N;;;;;
+18AE4;TANGUT COMPONENT-741;Lo;0;L;;;;;N;;;;;
+18AE5;TANGUT COMPONENT-742;Lo;0;L;;;;;N;;;;;
+18AE6;TANGUT COMPONENT-743;Lo;0;L;;;;;N;;;;;
+18AE7;TANGUT COMPONENT-744;Lo;0;L;;;;;N;;;;;
+18AE8;TANGUT COMPONENT-745;Lo;0;L;;;;;N;;;;;
+18AE9;TANGUT COMPONENT-746;Lo;0;L;;;;;N;;;;;
+18AEA;TANGUT COMPONENT-747;Lo;0;L;;;;;N;;;;;
+18AEB;TANGUT COMPONENT-748;Lo;0;L;;;;;N;;;;;
+18AEC;TANGUT COMPONENT-749;Lo;0;L;;;;;N;;;;;
+18AED;TANGUT COMPONENT-750;Lo;0;L;;;;;N;;;;;
+18AEE;TANGUT COMPONENT-751;Lo;0;L;;;;;N;;;;;
+18AEF;TANGUT COMPONENT-752;Lo;0;L;;;;;N;;;;;
+18AF0;TANGUT COMPONENT-753;Lo;0;L;;;;;N;;;;;
+18AF1;TANGUT COMPONENT-754;Lo;0;L;;;;;N;;;;;
+18AF2;TANGUT COMPONENT-755;Lo;0;L;;;;;N;;;;;
 1B000;KATAKANA LETTER ARCHAIC E;Lo;0;L;;;;;N;;;;;
 1B001;HIRAGANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;;
 1BC00;DUPLOYAN LETTER H;Lo;0;L;;;;;N;;;;;
@@ -26154,6 +27313,44 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 1DAAD;SIGNWRITING ROTATION MODIFIER-14;Mn;0;NSM;;;;;N;;;;;
 1DAAE;SIGNWRITING ROTATION MODIFIER-15;Mn;0;NSM;;;;;N;;;;;
 1DAAF;SIGNWRITING ROTATION MODIFIER-16;Mn;0;NSM;;;;;N;;;;;
+1E000;COMBINING GLAGOLITIC LETTER AZU;Mn;230;NSM;;;;;N;;;;;
+1E001;COMBINING GLAGOLITIC LETTER BUKY;Mn;230;NSM;;;;;N;;;;;
+1E002;COMBINING GLAGOLITIC LETTER VEDE;Mn;230;NSM;;;;;N;;;;;
+1E003;COMBINING GLAGOLITIC LETTER GLAGOLI;Mn;230;NSM;;;;;N;;;;;
+1E004;COMBINING GLAGOLITIC LETTER DOBRO;Mn;230;NSM;;;;;N;;;;;
+1E005;COMBINING GLAGOLITIC LETTER YESTU;Mn;230;NSM;;;;;N;;;;;
+1E006;COMBINING GLAGOLITIC LETTER ZHIVETE;Mn;230;NSM;;;;;N;;;;;
+1E008;COMBINING GLAGOLITIC LETTER ZEMLJA;Mn;230;NSM;;;;;N;;;;;
+1E009;COMBINING GLAGOLITIC LETTER IZHE;Mn;230;NSM;;;;;N;;;;;
+1E00A;COMBINING GLAGOLITIC LETTER INITIAL IZHE;Mn;230;NSM;;;;;N;;;;;
+1E00B;COMBINING GLAGOLITIC LETTER I;Mn;230;NSM;;;;;N;;;;;
+1E00C;COMBINING GLAGOLITIC LETTER DJERVI;Mn;230;NSM;;;;;N;;;;;
+1E00D;COMBINING GLAGOLITIC LETTER KAKO;Mn;230;NSM;;;;;N;;;;;
+1E00E;COMBINING GLAGOLITIC LETTER LJUDIJE;Mn;230;NSM;;;;;N;;;;;
+1E00F;COMBINING GLAGOLITIC LETTER MYSLITE;Mn;230;NSM;;;;;N;;;;;
+1E010;COMBINING GLAGOLITIC LETTER NASHI;Mn;230;NSM;;;;;N;;;;;
+1E011;COMBINING GLAGOLITIC LETTER ONU;Mn;230;NSM;;;;;N;;;;;
+1E012;COMBINING GLAGOLITIC LETTER POKOJI;Mn;230;NSM;;;;;N;;;;;
+1E013;COMBINING GLAGOLITIC LETTER RITSI;Mn;230;NSM;;;;;N;;;;;
+1E014;COMBINING GLAGOLITIC LETTER SLOVO;Mn;230;NSM;;;;;N;;;;;
+1E015;COMBINING GLAGOLITIC LETTER TVRIDO;Mn;230;NSM;;;;;N;;;;;
+1E016;COMBINING GLAGOLITIC LETTER UKU;Mn;230;NSM;;;;;N;;;;;
+1E017;COMBINING GLAGOLITIC LETTER FRITU;Mn;230;NSM;;;;;N;;;;;
+1E018;COMBINING GLAGOLITIC LETTER HERU;Mn;230;NSM;;;;;N;;;;;
+1E01B;COMBINING GLAGOLITIC LETTER SHTA;Mn;230;NSM;;;;;N;;;;;
+1E01C;COMBINING GLAGOLITIC LETTER TSI;Mn;230;NSM;;;;;N;;;;;
+1E01D;COMBINING GLAGOLITIC LETTER CHRIVI;Mn;230;NSM;;;;;N;;;;;
+1E01E;COMBINING GLAGOLITIC LETTER SHA;Mn;230;NSM;;;;;N;;;;;
+1E01F;COMBINING GLAGOLITIC LETTER YERU;Mn;230;NSM;;;;;N;;;;;
+1E020;COMBINING GLAGOLITIC LETTER YERI;Mn;230;NSM;;;;;N;;;;;
+1E021;COMBINING GLAGOLITIC LETTER YATI;Mn;230;NSM;;;;;N;;;;;
+1E023;COMBINING GLAGOLITIC LETTER YU;Mn;230;NSM;;;;;N;;;;;
+1E024;COMBINING GLAGOLITIC LETTER SMALL YUS;Mn;230;NSM;;;;;N;;;;;
+1E026;COMBINING GLAGOLITIC LETTER YO;Mn;230;NSM;;;;;N;;;;;
+1E027;COMBINING GLAGOLITIC LETTER IOTATED SMALL YUS;Mn;230;NSM;;;;;N;;;;;
+1E028;COMBINING GLAGOLITIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;;
+1E029;COMBINING GLAGOLITIC LETTER IOTATED BIG YUS;Mn;230;NSM;;;;;N;;;;;
+1E02A;COMBINING GLAGOLITIC LETTER FITA;Mn;230;NSM;;;;;N;;;;;
 1E800;MENDE KIKAKUI SYLLABLE M001 KI;Lo;0;R;;;;;N;;;;;
 1E801;MENDE KIKAKUI SYLLABLE M002 KA;Lo;0;R;;;;;N;;;;;
 1E802;MENDE KIKAKUI SYLLABLE M003 KU;Lo;0;R;;;;;N;;;;;
@@ -26367,6 +27564,93 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 1E8D4;MENDE KIKAKUI COMBINING NUMBER TEN THOUSANDS;Mn;220;NSM;;;;;N;;;;;
 1E8D5;MENDE KIKAKUI COMBINING NUMBER HUNDRED THOUSANDS;Mn;220;NSM;;;;;N;;;;;
 1E8D6;MENDE KIKAKUI COMBINING NUMBER MILLIONS;Mn;220;NSM;;;;;N;;;;;
+1E900;ADLAM CAPITAL LETTER ALIF;Lu;0;R;;;;;N;;;;1E922;
+1E901;ADLAM CAPITAL LETTER DAALI;Lu;0;R;;;;;N;;;;1E923;
+1E902;ADLAM CAPITAL LETTER LAAM;Lu;0;R;;;;;N;;;;1E924;
+1E903;ADLAM CAPITAL LETTER MIIM;Lu;0;R;;;;;N;;;;1E925;
+1E904;ADLAM CAPITAL LETTER BA;Lu;0;R;;;;;N;;;;1E926;
+1E905;ADLAM CAPITAL LETTER SINNYIIYHE;Lu;0;R;;;;;N;;;;1E927;
+1E906;ADLAM CAPITAL LETTER PE;Lu;0;R;;;;;N;;;;1E928;
+1E907;ADLAM CAPITAL LETTER BHE;Lu;0;R;;;;;N;;;;1E929;
+1E908;ADLAM CAPITAL LETTER RA;Lu;0;R;;;;;N;;;;1E92A;
+1E909;ADLAM CAPITAL LETTER E;Lu;0;R;;;;;N;;;;1E92B;
+1E90A;ADLAM CAPITAL LETTER FA;Lu;0;R;;;;;N;;;;1E92C;
+1E90B;ADLAM CAPITAL LETTER I;Lu;0;R;;;;;N;;;;1E92D;
+1E90C;ADLAM CAPITAL LETTER O;Lu;0;R;;;;;N;;;;1E92E;
+1E90D;ADLAM CAPITAL LETTER DHA;Lu;0;R;;;;;N;;;;1E92F;
+1E90E;ADLAM CAPITAL LETTER YHE;Lu;0;R;;;;;N;;;;1E930;
+1E90F;ADLAM CAPITAL LETTER WAW;Lu;0;R;;;;;N;;;;1E931;
+1E910;ADLAM CAPITAL LETTER NUN;Lu;0;R;;;;;N;;;;1E932;
+1E911;ADLAM CAPITAL LETTER KAF;Lu;0;R;;;;;N;;;;1E933;
+1E912;ADLAM CAPITAL LETTER YA;Lu;0;R;;;;;N;;;;1E934;
+1E913;ADLAM CAPITAL LETTER U;Lu;0;R;;;;;N;;;;1E935;
+1E914;ADLAM CAPITAL LETTER JIIM;Lu;0;R;;;;;N;;;;1E936;
+1E915;ADLAM CAPITAL LETTER CHI;Lu;0;R;;;;;N;;;;1E937;
+1E916;ADLAM CAPITAL LETTER HA;Lu;0;R;;;;;N;;;;1E938;
+1E917;ADLAM CAPITAL LETTER QAAF;Lu;0;R;;;;;N;;;;1E939;
+1E918;ADLAM CAPITAL LETTER GA;Lu;0;R;;;;;N;;;;1E93A;
+1E919;ADLAM CAPITAL LETTER NYA;Lu;0;R;;;;;N;;;;1E93B;
+1E91A;ADLAM CAPITAL LETTER TU;Lu;0;R;;;;;N;;;;1E93C;
+1E91B;ADLAM CAPITAL LETTER NHA;Lu;0;R;;;;;N;;;;1E93D;
+1E91C;ADLAM CAPITAL LETTER VA;Lu;0;R;;;;;N;;;;1E93E;
+1E91D;ADLAM CAPITAL LETTER KHA;Lu;0;R;;;;;N;;;;1E93F;
+1E91E;ADLAM CAPITAL LETTER GBE;Lu;0;R;;;;;N;;;;1E940;
+1E91F;ADLAM CAPITAL LETTER ZAL;Lu;0;R;;;;;N;;;;1E941;
+1E920;ADLAM CAPITAL LETTER KPO;Lu;0;R;;;;;N;;;;1E942;
+1E921;ADLAM CAPITAL LETTER SHA;Lu;0;R;;;;;N;;;;1E943;
+1E922;ADLAM SMALL LETTER ALIF;Ll;0;R;;;;;N;;;1E900;;1E900
+1E923;ADLAM SMALL LETTER DAALI;Ll;0;R;;;;;N;;;1E901;;1E901
+1E924;ADLAM SMALL LETTER LAAM;Ll;0;R;;;;;N;;;1E902;;1E902
+1E925;ADLAM SMALL LETTER MIIM;Ll;0;R;;;;;N;;;1E903;;1E903
+1E926;ADLAM SMALL LETTER BA;Ll;0;R;;;;;N;;;1E904;;1E904
+1E927;ADLAM SMALL LETTER SINNYIIYHE;Ll;0;R;;;;;N;;;1E905;;1E905
+1E928;ADLAM SMALL LETTER PE;Ll;0;R;;;;;N;;;1E906;;1E906
+1E929;ADLAM SMALL LETTER BHE;Ll;0;R;;;;;N;;;1E907;;1E907
+1E92A;ADLAM SMALL LETTER RA;Ll;0;R;;;;;N;;;1E908;;1E908
+1E92B;ADLAM SMALL LETTER E;Ll;0;R;;;;;N;;;1E909;;1E909
+1E92C;ADLAM SMALL LETTER FA;Ll;0;R;;;;;N;;;1E90A;;1E90A
+1E92D;ADLAM SMALL LETTER I;Ll;0;R;;;;;N;;;1E90B;;1E90B
+1E92E;ADLAM SMALL LETTER O;Ll;0;R;;;;;N;;;1E90C;;1E90C
+1E92F;ADLAM SMALL LETTER DHA;Ll;0;R;;;;;N;;;1E90D;;1E90D
+1E930;ADLAM SMALL LETTER YHE;Ll;0;R;;;;;N;;;1E90E;;1E90E
+1E931;ADLAM SMALL LETTER WAW;Ll;0;R;;;;;N;;;1E90F;;1E90F
+1E932;ADLAM SMALL LETTER NUN;Ll;0;R;;;;;N;;;1E910;;1E910
+1E933;ADLAM SMALL LETTER KAF;Ll;0;R;;;;;N;;;1E911;;1E911
+1E934;ADLAM SMALL LETTER YA;Ll;0;R;;;;;N;;;1E912;;1E912
+1E935;ADLAM SMALL LETTER U;Ll;0;R;;;;;N;;;1E913;;1E913
+1E936;ADLAM SMALL LETTER JIIM;Ll;0;R;;;;;N;;;1E914;;1E914
+1E937;ADLAM SMALL LETTER CHI;Ll;0;R;;;;;N;;;1E915;;1E915
+1E938;ADLAM SMALL LETTER HA;Ll;0;R;;;;;N;;;1E916;;1E916
+1E939;ADLAM SMALL LETTER QAAF;Ll;0;R;;;;;N;;;1E917;;1E917
+1E93A;ADLAM SMALL LETTER GA;Ll;0;R;;;;;N;;;1E918;;1E918
+1E93B;ADLAM SMALL LETTER NYA;Ll;0;R;;;;;N;;;1E919;;1E919
+1E93C;ADLAM SMALL LETTER TU;Ll;0;R;;;;;N;;;1E91A;;1E91A
+1E93D;ADLAM SMALL LETTER NHA;Ll;0;R;;;;;N;;;1E91B;;1E91B
+1E93E;ADLAM SMALL LETTER VA;Ll;0;R;;;;;N;;;1E91C;;1E91C
+1E93F;ADLAM SMALL LETTER KHA;Ll;0;R;;;;;N;;;1E91D;;1E91D
+1E940;ADLAM SMALL LETTER GBE;Ll;0;R;;;;;N;;;1E91E;;1E91E
+1E941;ADLAM SMALL LETTER ZAL;Ll;0;R;;;;;N;;;1E91F;;1E91F
+1E942;ADLAM SMALL LETTER KPO;Ll;0;R;;;;;N;;;1E920;;1E920
+1E943;ADLAM SMALL LETTER SHA;Ll;0;R;;;;;N;;;1E921;;1E921
+1E944;ADLAM ALIF LENGTHENER;Mn;230;NSM;;;;;N;;;;;
+1E945;ADLAM VOWEL LENGTHENER;Mn;230;NSM;;;;;N;;;;;
+1E946;ADLAM GEMINATION MARK;Mn;230;NSM;;;;;N;;;;;
+1E947;ADLAM HAMZA;Mn;230;NSM;;;;;N;;;;;
+1E948;ADLAM CONSONANT MODIFIER;Mn;230;NSM;;;;;N;;;;;
+1E949;ADLAM GEMINATE CONSONANT MODIFIER;Mn;230;NSM;;;;;N;;;;;
+1E94A;ADLAM NUKTA;Mn;7;NSM;;;;;N;;;;;
+1E950;ADLAM DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;;
+1E951;ADLAM DIGIT ONE;Nd;0;R;;1;1;1;N;;;;;
+1E952;ADLAM DIGIT TWO;Nd;0;R;;2;2;2;N;;;;;
+1E953;ADLAM DIGIT THREE;Nd;0;R;;3;3;3;N;;;;;
+1E954;ADLAM DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;;
+1E955;ADLAM DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;;
+1E956;ADLAM DIGIT SIX;Nd;0;R;;6;6;6;N;;;;;
+1E957;ADLAM DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;;
+1E958;ADLAM DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;;
+1E959;ADLAM DIGIT NINE;Nd;0;R;;9;9;9;N;;;;;
+1E95E;ADLAM INITIAL EXCLAMATION MARK;Po;0;R;;;;;N;;;;;
+1E95F;ADLAM INITIAL QUESTION MARK;Po;0;R;;;;;N;;;;;
 1EE00;ARABIC MATHEMATICAL ALEF;Lo;0;AL;<font> 0627;;;;N;;;;;
 1EE01;ARABIC MATHEMATICAL BEH;Lo;0;AL;<font> 0628;;;;N;;;;;
 1EE02;ARABIC MATHEMATICAL JEEM;Lo;0;AL;<font> 062C;;;;N;;;;;
@@ -26883,6 +28167,24 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 1F198;SQUARED SOS;So;0;L;;;;;N;;;;;
 1F199;SQUARED UP WITH EXCLAMATION MARK;So;0;L;;;;;N;;;;;
 1F19A;SQUARED VS;So;0;L;;;;;N;;;;;
+1F19B;SQUARED THREE D;So;0;L;;;;;N;;;;;
+1F19C;SQUARED SECOND SCREEN;So;0;L;;;;;N;;;;;
+1F19D;SQUARED TWO K;So;0;L;;;;;N;;;;;
+1F19E;SQUARED FOUR K;So;0;L;;;;;N;;;;;
+1F19F;SQUARED EIGHT K;So;0;L;;;;;N;;;;;
+1F1A0;SQUARED FIVE POINT ONE;So;0;L;;;;;N;;;;;
+1F1A1;SQUARED SEVEN POINT ONE;So;0;L;;;;;N;;;;;
+1F1A2;SQUARED TWENTY-TWO POINT TWO;So;0;L;;;;;N;;;;;
+1F1A3;SQUARED SIXTY P;So;0;L;;;;;N;;;;;
+1F1A4;SQUARED ONE HUNDRED TWENTY P;So;0;L;;;;;N;;;;;
+1F1A5;SQUARED LATIN SMALL LETTER D;So;0;L;;;;;N;;;;;
+1F1A6;SQUARED HC;So;0;L;;;;;N;;;;;
+1F1A7;SQUARED HDR;So;0;L;;;;;N;;;;;
+1F1A8;SQUARED HI-RES;So;0;L;;;;;N;;;;;
+1F1A9;SQUARED LOSSLESS;So;0;L;;;;;N;;;;;
+1F1AA;SQUARED SHV;So;0;L;;;;;N;;;;;
+1F1AB;SQUARED UHD;So;0;L;;;;;N;;;;;
+1F1AC;SQUARED VOD;So;0;L;;;;;N;;;;;
 1F1E6;REGIONAL INDICATOR SYMBOL LETTER A;So;0;L;;;;;N;;;;;
 1F1E7;REGIONAL INDICATOR SYMBOL LETTER B;So;0;L;;;;;N;;;;;
 1F1E8;REGIONAL INDICATOR SYMBOL LETTER C;So;0;L;;;;;N;;;;;
@@ -26955,6 +28257,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 1F238;SQUARED CJK UNIFIED IDEOGRAPH-7533;So;0;L;<square> 7533;;;;N;;;;;
 1F239;SQUARED CJK UNIFIED IDEOGRAPH-5272;So;0;L;<square> 5272;;;;N;;;;;
 1F23A;SQUARED CJK UNIFIED IDEOGRAPH-55B6;So;0;L;<square> 55B6;;;;N;;;;;
+1F23B;SQUARED CJK UNIFIED IDEOGRAPH-914D;So;0;L;<square> 914D;;;;N;;;;;
 1F240;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C;So;0;L;<compat> 3014 672C 3015;;;;N;;;;;
 1F241;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09;So;0;L;<compat> 3014 4E09 3015;;;;N;;;;;
 1F242;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L;<compat> 3014 4E8C 3015;;;;N;;;;;
@@ -27600,6 +28903,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 1F577;SPIDER;So;0;ON;;;;;N;;;;;
 1F578;SPIDER WEB;So;0;ON;;;;;N;;;;;
 1F579;JOYSTICK;So;0;ON;;;;;N;;;;;
+1F57A;MAN DANCING;So;0;ON;;;;;N;;;;;
 1F57B;LEFT HAND TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;;
 1F57C;TELEPHONE RECEIVER WITH PAGE;So;0;ON;;;;;N;;;;;
 1F57D;RIGHT HAND TELEPHONE RECEIVER;So;0;ON;;;;;N;;;;;
@@ -27641,6 +28945,7 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 1F5A1;SIDEWAYS BLACK DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
 1F5A2;BLACK UP POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
 1F5A3;BLACK DOWN POINTING BACKHAND INDEX;So;0;ON;;;;;N;;;;;
+1F5A4;BLACK HEART;So;0;ON;;;;;N;;;;;
 1F5A5;DESKTOP COMPUTER;So;0;ON;;;;;N;;;;;
 1F5A6;KEYBOARD AND MOUSE;So;0;ON;;;;;N;;;;;
 1F5A7;THREE NETWORKED COMPUTERS;So;0;ON;;;;;N;;;;;
@@ -27941,6 +29246,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 1F6CE;BELLHOP BELL;So;0;ON;;;;;N;;;;;
 1F6CF;BED;So;0;ON;;;;;N;;;;;
 1F6D0;PLACE OF WORSHIP;So;0;ON;;;;;N;;;;;
+1F6D1;OCTAGONAL SIGN;So;0;ON;;;;;N;;;;;
+1F6D2;SHOPPING TROLLEY;So;0;ON;;;;;N;;;;;
 1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;;
 1F6E1;SHIELD;So;0;ON;;;;;N;;;;;
 1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;;
@@ -27958,6 +29265,9 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 1F6F1;ONCOMING FIRE ENGINE;So;0;ON;;;;;N;;;;;
 1F6F2;DIESEL LOCOMOTIVE;So;0;ON;;;;;N;;;;;
 1F6F3;PASSENGER SHIP;So;0;ON;;;;;N;;;;;
+1F6F4;SCOOTER;So;0;ON;;;;;N;;;;;
+1F6F5;MOTOR SCOOTER;So;0;ON;;;;;N;;;;;
+1F6F6;CANOE;So;0;ON;;;;;N;;;;;
 1F700;ALCHEMICAL SYMBOL FOR QUINTESSENCE;So;0;ON;;;;;N;;;;;
 1F701;ALCHEMICAL SYMBOL FOR AIR;So;0;ON;;;;;N;;;;;
 1F702;ALCHEMICAL SYMBOL FOR FIRE;So;0;ON;;;;;N;;;;;
@@ -28316,11 +29626,78 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
 1F916;ROBOT FACE;So;0;ON;;;;;N;;;;;
 1F917;HUGGING FACE;So;0;ON;;;;;N;;;;;
 1F918;SIGN OF THE HORNS;So;0;ON;;;;;N;;;;;
+1F919;CALL ME HAND;So;0;ON;;;;;N;;;;;
+1F91A;RAISED BACK OF HAND;So;0;ON;;;;;N;;;;;
+1F91B;LEFT-FACING FIST;So;0;ON;;;;;N;;;;;
+1F91C;RIGHT-FACING FIST;So;0;ON;;;;;N;;;;;
+1F91D;HANDSHAKE;So;0;ON;;;;;N;;;;;
+1F91E;HAND WITH INDEX AND MIDDLE FINGERS CROSSED;So;0;ON;;;;;N;;;;;
+1F920;FACE WITH COWBOY HAT;So;0;ON;;;;;N;;;;;
+1F921;CLOWN FACE;So;0;ON;;;;;N;;;;;
+1F922;NAUSEATED FACE;So;0;ON;;;;;N;;;;;
+1F923;ROLLING ON THE FLOOR LAUGHING;So;0;ON;;;;;N;;;;;
+1F924;DROOLING FACE;So;0;ON;;;;;N;;;;;
+1F925;LYING FACE;So;0;ON;;;;;N;;;;;
+1F926;FACE PALM;So;0;ON;;;;;N;;;;;
+1F927;SNEEZING FACE;So;0;ON;;;;;N;;;;;
+1F930;PREGNANT WOMAN;So;0;ON;;;;;N;;;;;
+1F933;SELFIE;So;0;ON;;;;;N;;;;;
+1F934;PRINCE;So;0;ON;;;;;N;;;;;
+1F935;MAN IN TUXEDO;So;0;ON;;;;;N;;;;;
+1F936;MOTHER CHRISTMAS;So;0;ON;;;;;N;;;;;
+1F937;SHRUG;So;0;ON;;;;;N;;;;;
+1F938;PERSON DOING CARTWHEEL;So;0;ON;;;;;N;;;;;
+1F939;JUGGLING;So;0;ON;;;;;N;;;;;
+1F93A;FENCER;So;0;ON;;;;;N;;;;;
+1F93B;MODERN PENTATHLON;So;0;ON;;;;;N;;;;;
+1F93C;WRESTLERS;So;0;ON;;;;;N;;;;;
+1F93D;WATER POLO;So;0;ON;;;;;N;;;;;
+1F93E;HANDBALL;So;0;ON;;;;;N;;;;;
+1F940;WILTED FLOWER;So;0;ON;;;;;N;;;;;
+1F941;DRUM WITH DRUMSTICKS;So;0;ON;;;;;N;;;;;
+1F942;CLINKING GLASSES;So;0;ON;;;;;N;;;;;
+1F943;TUMBLER GLASS;So;0;ON;;;;;N;;;;;
+1F944;SPOON;So;0;ON;;;;;N;;;;;
+1F945;GOAL NET;So;0;ON;;;;;N;;;;;
+1F946;RIFLE;So;0;ON;;;;;N;;;;;
+1F947;FIRST PLACE MEDAL;So;0;ON;;;;;N;;;;;
+1F948;SECOND PLACE MEDAL;So;0;ON;;;;;N;;;;;
+1F949;THIRD PLACE MEDAL;So;0;ON;;;;;N;;;;;
+1F94A;BOXING GLOVE;So;0;ON;;;;;N;;;;;
+1F94B;MARTIAL ARTS UNIFORM;So;0;ON;;;;;N;;;;;
+1F950;CROISSANT;So;0;ON;;;;;N;;;;;
+1F951;AVOCADO;So;0;ON;;;;;N;;;;;
+1F952;CUCUMBER;So;0;ON;;;;;N;;;;;
+1F953;BACON;So;0;ON;;;;;N;;;;;
+1F954;POTATO;So;0;ON;;;;;N;;;;;
+1F955;CARROT;So;0;ON;;;;;N;;;;;
+1F956;BAGUETTE BREAD;So;0;ON;;;;;N;;;;;
+1F957;GREEN SALAD;So;0;ON;;;;;N;;;;;
+1F958;SHALLOW PAN OF FOOD;So;0;ON;;;;;N;;;;;
+1F959;STUFFED FLATBREAD;So;0;ON;;;;;N;;;;;
+1F95A;EGG;So;0;ON;;;;;N;;;;;
+1F95B;GLASS OF MILK;So;0;ON;;;;;N;;;;;
+1F95C;PEANUTS;So;0;ON;;;;;N;;;;;
+1F95D;KIWIFRUIT;So;0;ON;;;;;N;;;;;
+1F95E;PANCAKES;So;0;ON;;;;;N;;;;;
 1F980;CRAB;So;0;ON;;;;;N;;;;;
 1F981;LION FACE;So;0;ON;;;;;N;;;;;
 1F982;SCORPION;So;0;ON;;;;;N;;;;;
 1F983;TURKEY;So;0;ON;;;;;N;;;;;
 1F984;UNICORN FACE;So;0;ON;;;;;N;;;;;
+1F985;EAGLE;So;0;ON;;;;;N;;;;;
+1F986;DUCK;So;0;ON;;;;;N;;;;;
+1F987;BAT;So;0;ON;;;;;N;;;;;
+1F988;SHARK;So;0;ON;;;;;N;;;;;
+1F989;OWL;So;0;ON;;;;;N;;;;;
+1F98A;FOX FACE;So;0;ON;;;;;N;;;;;
+1F98B;BUTTERFLY;So;0;ON;;;;;N;;;;;
+1F98C;DEER;So;0;ON;;;;;N;;;;;
+1F98D;GORILLA;So;0;ON;;;;;N;;;;;
+1F98E;LIZARD;So;0;ON;;;;;N;;;;;
+1F98F;RHINOCEROS;So;0;ON;;;;;N;;;;;
+1F990;SHRIMP;So;0;ON;;;;;N;;;;;
+1F991;SQUID;So;0;ON;;;;;N;;;;;
 1F9C0;CHEESE WEDGE;So;0;ON;;;;;N;;;;;
 20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
 2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
index a3ed239..4bb4b13 100644 (file)
@@ -1,10 +1,11 @@
-# GraphemeBreakTest-8.0.0.txt
-# Date: 2015-02-13, 13:47:15 GMT [MD]
+# GraphemeBreakTest-9.0.0.txt
+# Date: 2016-06-02, 18:28:17 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Default Grapheme Break Test
 #
@@ -30,6 +31,8 @@
 ÷ 0020 × 0308 ÷ 0001 ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
 ÷ 0020 × 0300 ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
 ÷ 0020 × 0308 × 0300 ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 0020 ÷ 0600 ÷     #  ÷ [0.2] SPACE (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0020 × 0308 ÷ 0600 ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
 ÷ 0020 × 0903 ÷     #  ÷ [0.2] SPACE (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 0020 × 0308 × 0903 ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 0020 ÷ 1100 ÷     #  ÷ [0.2] SPACE (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
 ÷ 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 ÷ 1F1E6 ÷    #  ÷ [0.2] SPACE (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0020 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0020 ÷ 261D ÷     #  ÷ [0.2] SPACE (Other) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0020 × 0308 ÷ 261D ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0020 ÷ 1F3FB ÷    #  ÷ [0.2] SPACE (Other) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0020 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0020 × 200D ÷     #  ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 0020 × 0308 × 200D ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 0020 ÷ 2764 ÷     #  ÷ [0.2] SPACE (Other) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0020 × 0308 ÷ 2764 ÷     #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0020 ÷ 1F466 ÷    #  ÷ [0.2] SPACE (Other) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0020 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] SPACE (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [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]
@@ -58,6 +71,8 @@
 ÷ 000D ÷ 0308 ÷ 0001 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
 ÷ 000D ÷ 0300 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
 ÷ 000D ÷ 0308 × 0300 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 000D ÷ 0600 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 0600 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
 ÷ 000D ÷ 0903 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 000D ÷ 0308 × 0903 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 000D ÷ 1100 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
 ÷ 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 ÷ 1F1E6 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 000D ÷ 261D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 261D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 000D ÷ 1F3FB ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 000D ÷ 200D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 000D ÷ 0308 × 200D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 000D ÷ 2764 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000D ÷ 1F466 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] BOY (EBG) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [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]
 ÷ 000A ÷ 0308 ÷ 0001 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
 ÷ 000A ÷ 0300 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
 ÷ 000A ÷ 0308 × 0300 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 000A ÷ 0600 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 0600 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
 ÷ 000A ÷ 0903 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 000A ÷ 0308 × 0903 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 000A ÷ 1100 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
 ÷ 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 ÷ 1F1E6 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 000A ÷ 261D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 261D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 000A ÷ 1F3FB ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 000A ÷ 200D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 000A ÷ 0308 × 200D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 000A ÷ 2764 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000A ÷ 1F466 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] BOY (EBG) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [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]
 ÷ 0001 ÷ 0308 ÷ 0001 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
 ÷ 0001 ÷ 0300 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
 ÷ 0001 ÷ 0308 × 0300 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 0001 ÷ 0600 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 0600 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
 ÷ 0001 ÷ 0903 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 0001 ÷ 0308 × 0903 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 0001 ÷ 1100 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
 ÷ 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 ÷ 1F1E6 ÷    #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0001 ÷ 261D ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 261D ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0001 ÷ 1F3FB ÷    #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0001 ÷ 200D ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 0001 ÷ 0308 × 200D ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 0001 ÷ 2764 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0001 ÷ 1F466 ÷    #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] BOY (EBG) ÷ [0.3]
+÷ 0001 ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <START OF HEADING> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [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]
 ÷ 0300 × 0308 ÷ 0001 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
 ÷ 0300 × 0300 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
 ÷ 0300 × 0308 × 0300 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 0300 ÷ 0600 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0300 × 0308 ÷ 0600 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
 ÷ 0300 × 0903 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 0300 × 0308 × 0903 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 0300 ÷ 1100 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
 ÷ 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 ÷ 1F1E6 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0300 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0300 ÷ 261D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0300 × 0308 ÷ 261D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0300 ÷ 1F3FB ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0300 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0300 × 200D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 0300 × 0308 × 200D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 0300 ÷ 2764 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0300 × 0308 ÷ 2764 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0300 ÷ 1F466 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0300 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [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]
 ÷ 0300 × 0308 ÷ D800 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 0600 × 0020 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] SPACE (Other) ÷ [0.3]
+÷ 0600 × 0308 ÷ 0020 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0600 ÷ 000D ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0600 × 0308 ÷ 000D ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0600 ÷ 000A ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0600 × 0308 ÷ 000A ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0600 ÷ 0001 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0600 × 0308 ÷ 0001 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 0600 × 0300 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 0600 × 0308 × 0300 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 0600 × 0600 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0600 × 0308 ÷ 0600 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0600 × 0903 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0600 × 0308 × 0903 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 0600 × 1100 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0600 × 0308 ÷ 1100 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 0600 × 1160 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0600 × 0308 ÷ 1160 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 0600 × 11A8 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0600 × 0308 ÷ 11A8 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 0600 × AC00 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0600 × 0308 ÷ AC00 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 0600 × AC01 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0600 × 0308 ÷ AC01 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 0600 × 1F1E6 ÷    #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0600 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0600 × 261D ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0600 × 0308 ÷ 261D ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0600 × 1F3FB ÷    #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0600 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0600 × 200D ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 0600 × 0308 × 200D ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 0600 × 2764 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0600 × 0308 ÷ 2764 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0600 × 1F466 ÷    #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] BOY (EBG) ÷ [0.3]
+÷ 0600 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0600 × 0378 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.2] <reserved-0378> (Other) ÷ [0.3]
+÷ 0600 × 0308 ÷ 0378 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 0600 ÷ D800 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 0600 × 0308 ÷ D800 ÷     #  ÷ [0.2] ARABIC NUMBER SIGN (Prepend) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
 ÷ 0903 ÷ 0020 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] SPACE (Other) ÷ [0.3]
 ÷ 0903 × 0308 ÷ 0020 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
 ÷ 0903 ÷ 000D ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 ÷ 0903 × 0308 ÷ 0001 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
 ÷ 0903 × 0300 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
 ÷ 0903 × 0308 × 0300 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 0903 ÷ 0600 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0903 × 0308 ÷ 0600 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
 ÷ 0903 × 0903 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 0903 × 0308 × 0903 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 0903 ÷ 1100 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
 ÷ 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 ÷ 1F1E6 ÷    #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0903 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0903 ÷ 261D ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0903 × 0308 ÷ 261D ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0903 ÷ 1F3FB ÷    #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0903 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0903 × 200D ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 0903 × 0308 × 200D ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 0903 ÷ 2764 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0903 × 0308 ÷ 2764 ÷     #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0903 ÷ 1F466 ÷    #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0903 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DEVANAGARI SIGN VISARGA (SpacingMark) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [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]
 ÷ 1100 × 0308 ÷ 0001 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
 ÷ 1100 × 0300 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
 ÷ 1100 × 0308 × 0300 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 1100 ÷ 0600 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 1100 × 0308 ÷ 0600 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
 ÷ 1100 × 0903 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 1100 × 0308 × 0903 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 1100 × 1100 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
 ÷ 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 ÷ 1F1E6 ÷    #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1100 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1100 ÷ 261D ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1100 × 0308 ÷ 261D ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1100 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1100 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1100 × 200D ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 1100 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 1100 ÷ 2764 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1100 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1100 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1100 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [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]
 ÷ 1160 × 0308 ÷ 0001 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
 ÷ 1160 × 0300 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
 ÷ 1160 × 0308 × 0300 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 1160 ÷ 0600 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 1160 × 0308 ÷ 0600 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
 ÷ 1160 × 0903 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 1160 × 0308 × 0903 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 1160 ÷ 1100 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
 ÷ 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 ÷ 1F1E6 ÷    #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1160 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1160 ÷ 261D ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1160 × 0308 ÷ 261D ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1160 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1160 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1160 × 200D ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 1160 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 1160 ÷ 2764 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1160 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1160 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1160 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL JUNGSEONG FILLER (V) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [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]
 ÷ 11A8 × 0308 ÷ 0001 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
 ÷ 11A8 × 0300 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
 ÷ 11A8 × 0308 × 0300 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 11A8 ÷ 0600 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 0600 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
 ÷ 11A8 × 0903 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 11A8 × 0308 × 0903 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 11A8 ÷ 1100 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
 ÷ 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 ÷ 1F1E6 ÷    #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 11A8 ÷ 261D ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 261D ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 11A8 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 11A8 × 200D ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 11A8 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 11A8 ÷ 2764 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 11A8 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 11A8 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL JONGSEONG KIYEOK (T) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [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]
 ÷ AC00 × 0308 ÷ 0001 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
 ÷ AC00 × 0300 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
 ÷ AC00 × 0308 × 0300 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ AC00 ÷ 0600 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ AC00 × 0308 ÷ 0600 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
 ÷ AC00 × 0903 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ AC00 × 0308 × 0903 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ AC00 ÷ 1100 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
 ÷ 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 ÷ 1F1E6 ÷    #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ AC00 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ AC00 ÷ 261D ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ AC00 × 0308 ÷ 261D ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ AC00 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ AC00 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ AC00 × 200D ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ AC00 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ AC00 ÷ 2764 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ AC00 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ AC00 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL SYLLABLE GA (LV) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ AC00 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [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]
 ÷ AC01 × 0308 ÷ 0001 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
 ÷ AC01 × 0300 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
 ÷ AC01 × 0308 × 0300 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ AC01 ÷ 0600 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ AC01 × 0308 ÷ 0600 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
 ÷ AC01 × 0903 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ AC01 × 0308 × 0903 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ AC01 ÷ 1100 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
 ÷ 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 ÷ 1F1E6 ÷    #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ AC01 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ AC01 ÷ 261D ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ AC01 × 0308 ÷ 261D ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ AC01 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ AC01 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ AC01 × 200D ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ AC01 × 0308 × 200D ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ AC01 ÷ 2764 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ AC01 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ AC01 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ AC01 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [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]
+÷ 1F1E6 ÷ 0020 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0020 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 1F1E6 ÷ 000D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 000D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F1E6 ÷ 000A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 000A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F1E6 ÷ 0001 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0001 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 1F1E6 × 0300 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 1F1E6 × 0308 × 0300 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 1F1E6 ÷ 0600 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0600 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 1F1E6 × 0903 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1F1E6 × 0308 × 0903 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1F1E6 ÷ 1100 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 1100 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 1F1E6 ÷ 1160 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 1160 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 1F1E6 ÷ 11A8 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 11A8 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 1F1E6 ÷ AC00 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ AC00 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 1F1E6 ÷ AC01 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ AC01 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1F1E6 × 1F1E6 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [12.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 1F1E6 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1F1E6 ÷ 261D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 261D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F1E6 ÷ 1F3FB ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 1F3FB ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1F1E6 × 200D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 1F1E6 × 0308 × 200D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 1F1E6 ÷ 2764 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 2764 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F1E6 ÷ 1F466 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 1F466 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1F1E6 ÷ 0378 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0378 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 1F1E6 ÷ D800 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ D800 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 261D ÷ 0020 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 261D × 0308 ÷ 0020 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 261D ÷ 000D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 261D × 0308 ÷ 000D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 261D ÷ 000A ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 261D × 0308 ÷ 000A ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 261D ÷ 0001 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 261D × 0308 ÷ 0001 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 261D × 0300 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 261D × 0308 × 0300 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 261D ÷ 0600 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 261D × 0308 ÷ 0600 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 261D × 0903 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 261D × 0308 × 0903 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 261D ÷ 1100 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 261D × 0308 ÷ 1100 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 261D ÷ 1160 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 261D × 0308 ÷ 1160 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 261D ÷ 11A8 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 261D × 0308 ÷ 11A8 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 261D ÷ AC00 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 261D × 0308 ÷ AC00 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 261D ÷ AC01 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 261D × 0308 ÷ AC01 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 261D ÷ 1F1E6 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 261D × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 261D ÷ 261D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 261D × 0308 ÷ 261D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 261D × 1F3FB ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 261D × 0308 × 1F3FB ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 261D × 200D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 261D × 0308 × 200D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 261D ÷ 2764 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 261D × 0308 ÷ 2764 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 261D ÷ 1F466 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 261D × 0308 ÷ 1F466 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 261D ÷ 0378 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 261D × 0308 ÷ 0378 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 261D ÷ D800 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 261D × 0308 ÷ D800 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 1F3FB ÷ 0020 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0020 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 1F3FB ÷ 000D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 000D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F3FB ÷ 000A ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 000A ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F3FB ÷ 0001 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0001 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 1F3FB × 0300 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 1F3FB × 0308 × 0300 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 1F3FB ÷ 0600 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0600 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 1F3FB × 0903 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1F3FB × 0308 × 0903 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1F3FB ÷ 1100 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 1100 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 1F3FB ÷ 1160 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 1160 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 1F3FB ÷ 11A8 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 11A8 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 1F3FB ÷ AC00 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ AC00 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 1F3FB ÷ AC01 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ AC01 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1F3FB ÷ 1F1E6 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 1F1E6 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1F3FB ÷ 261D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 261D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F3FB ÷ 1F3FB ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 1F3FB ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1F3FB × 200D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 1F3FB × 0308 × 200D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 1F3FB ÷ 2764 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 2764 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F3FB ÷ 1F466 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 1F466 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1F3FB ÷ 0378 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0378 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 1F3FB ÷ D800 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ D800 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 200D ÷ 0020 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 200D × 0308 ÷ 0020 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 200D ÷ 000D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 200D × 0308 ÷ 000D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 200D ÷ 000A ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 200D × 0308 ÷ 000A ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 200D ÷ 0001 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 200D × 0308 ÷ 0001 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 200D × 0300 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 200D × 0308 × 0300 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 200D ÷ 0600 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 200D × 0308 ÷ 0600 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 200D × 0903 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 200D × 0308 × 0903 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 200D ÷ 1100 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 200D × 0308 ÷ 1100 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 200D ÷ 1160 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 200D × 0308 ÷ 1160 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 200D ÷ 11A8 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 200D × 0308 ÷ 11A8 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 200D ÷ AC00 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 200D × 0308 ÷ AC00 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 200D ÷ AC01 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 200D × 0308 ÷ AC01 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 200D ÷ 1F1E6 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 200D × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 200D ÷ 261D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 200D × 0308 ÷ 261D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 200D ÷ 1F3FB ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 200D × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 200D × 200D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 200D × 0308 × 200D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 200D × 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 0308 ÷ 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) ÷ [0.3]
+÷ 200D × 0308 ÷ 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 200D ÷ 0378 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 200D × 0308 ÷ 0378 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 200D ÷ D800 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 200D × 0308 ÷ D800 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 2764 ÷ 0020 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0020 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 2764 ÷ 000D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 2764 × 0308 ÷ 000D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 2764 ÷ 000A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 2764 × 0308 ÷ 000A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 2764 ÷ 0001 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0001 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 2764 × 0300 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 2764 × 0308 × 0300 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 2764 ÷ 0600 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0600 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 2764 × 0903 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 2764 × 0308 × 0903 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 2764 ÷ 1100 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1100 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 2764 ÷ 1160 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1160 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 2764 ÷ 11A8 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 2764 × 0308 ÷ 11A8 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 2764 ÷ AC00 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 2764 × 0308 ÷ AC00 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 2764 ÷ AC01 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 2764 × 0308 ÷ AC01 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 2764 ÷ 1F1E6 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 2764 ÷ 261D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 2764 × 0308 ÷ 261D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 2764 ÷ 1F3FB ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 2764 × 200D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 2764 × 0308 × 200D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 2764 ÷ 2764 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 2764 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 2764 ÷ 1F466 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 2764 ÷ 0378 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0378 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 2764 ÷ D800 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 2764 × 0308 ÷ D800 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 1F466 ÷ 0020 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0020 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 1F466 ÷ 000D ÷    #  ÷ [0.2] BOY (EBG) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 000D ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F466 ÷ 000A ÷    #  ÷ [0.2] BOY (EBG) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 000A ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F466 ÷ 0001 ÷    #  ÷ [0.2] BOY (EBG) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0001 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
+÷ 1F466 × 0300 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 1F466 × 0308 × 0300 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 1F466 ÷ 0600 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0600 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 1F466 × 0903 ÷    #  ÷ [0.2] BOY (EBG) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1F466 × 0308 × 0903 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
+÷ 1F466 ÷ 1100 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 1100 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 1F466 ÷ 1160 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 1160 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JUNGSEONG FILLER (V) ÷ [0.3]
+÷ 1F466 ÷ 11A8 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 11A8 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL JONGSEONG KIYEOK (T) ÷ [0.3]
+÷ 1F466 ÷ AC00 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 1F466 × 0308 ÷ AC00 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GA (LV) ÷ [0.3]
+÷ 1F466 ÷ AC01 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1F466 × 0308 ÷ AC01 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HANGUL SYLLABLE GAG (LVT) ÷ [0.3]
+÷ 1F466 ÷ 1F1E6 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 1F1E6 ÷   #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1F466 ÷ 261D ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 261D ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F466 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1F466 × 0308 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1F466 × 200D ÷    #  ÷ [0.2] BOY (EBG) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 1F466 × 0308 × 200D ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 1F466 ÷ 2764 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 2764 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F466 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1F466 ÷ 0378 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0378 ÷    #  ÷ [0.2] BOY (EBG) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] <reserved-0378> (Other) ÷ [0.3]
+÷ 1F466 ÷ D800 ÷    #  ÷ [0.2] BOY (EBG) ÷ [5.0] <surrogate-D800> (Control) ÷ [0.3]
+÷ 1F466 × 0308 ÷ D800 ÷    #  ÷ [0.2] BOY (EBG) × [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]
 ÷ 0378 × 0308 ÷ 0001 ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
 ÷ 0378 × 0300 ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
 ÷ 0378 × 0308 × 0300 ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ 0378 ÷ 0600 ÷     #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ 0378 × 0308 ÷ 0600 ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
 ÷ 0378 × 0903 ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 0378 × 0308 × 0903 ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ 0378 ÷ 1100 ÷     #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
 ÷ 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 ÷ 1F1E6 ÷    #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0378 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0378 ÷ 261D ÷     #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0378 × 0308 ÷ 261D ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0378 ÷ 1F3FB ÷    #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0378 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0378 × 200D ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 0378 × 0308 × 200D ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 0378 ÷ 2764 ÷     #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0378 × 0308 ÷ 2764 ÷     #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0378 ÷ 1F466 ÷    #  ÷ [0.2] <reserved-0378> (Other) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0378 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] <reserved-0378> (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [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]
 ÷ D800 ÷ 0308 ÷ 0001 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [5.0] <START OF HEADING> (Control) ÷ [0.3]
 ÷ D800 ÷ 0300 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
 ÷ D800 ÷ 0308 × 0300 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] COMBINING GRAVE ACCENT (Extend) ÷ [0.3]
+÷ D800 ÷ 0600 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
+÷ D800 ÷ 0308 ÷ 0600 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) ÷ [0.3]
 ÷ D800 ÷ 0903 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ D800 ÷ 0308 × 0903 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [0.3]
 ÷ D800 ÷ 1100 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
 ÷ 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 ÷ 1F1E6 ÷    #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ D800 ÷ 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ D800 ÷ 261D ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ D800 ÷ 0308 ÷ 261D ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ D800 ÷ 1F3FB ÷    #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ D800 ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ D800 ÷ 200D ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ D800 ÷ 0308 × 200D ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ D800 ÷ 2764 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ D800 ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ D800 ÷ 1F466 ÷    #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] BOY (EBG) ÷ [0.3]
+÷ D800 ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <surrogate-D800> (Control) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [999.0] BOY (EBG) ÷ [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]
-÷ 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]
+÷ 000D × 000A ÷ 0061 ÷ 000A ÷ 0308 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN SMALL LETTER A (Other) ÷ [5.0] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend) ÷ [0.3]
+÷ 0061 × 0308 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [0.3]
+÷ 0020 × 200D ÷ 0646 ÷     #  ÷ [0.2] SPACE (Other) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] ARABIC LETTER NOON (Other) ÷ [0.3]
+÷ 0646 × 200D ÷ 0020 ÷     #  ÷ [0.2] ARABIC LETTER NOON (Other) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 1100 × 1100 ÷     #  ÷ [0.2] HANGUL CHOSEONG KIYEOK (L) × [6.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ AC00 × 11A8 ÷ 1100 ÷     #  ÷ [0.2] HANGUL SYLLABLE GA (LV) × [7.0] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ AC01 × 11A8 ÷ 1100 ÷     #  ÷ [0.2] HANGUL SYLLABLE GAG (LVT) × [8.0] HANGUL JONGSEONG KIYEOK (T) ÷ [999.0] HANGUL CHOSEONG KIYEOK (L) ÷ [0.3]
+÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷  #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [12.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
+÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷  #  ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
+÷ 0061 ÷ 1F1E6 × 1F1E7 × 200D ÷ 1F1E8 ÷ 0062 ÷  #  ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
+÷ 0061 ÷ 1F1E6 × 200D ÷ 1F1E7 × 1F1E8 ÷ 0062 ÷  #  ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
+÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 × 1F1E9 ÷ 0062 ÷ #  ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) × [13.0] REGIONAL INDICATOR SYMBOL LETTER D (RI) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
+÷ 0061 × 200D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] ZERO WIDTH JOINER (ZWJ) ÷ [0.3]
+÷ 0061 × 0308 ÷ 0062 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.0] COMBINING DIAERESIS (Extend) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
+÷ 0061 × 0903 ÷ 0062 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Other) × [9.1] DEVANAGARI SIGN VISARGA (SpacingMark) ÷ [999.0] LATIN SMALL LETTER B (Other) ÷ [0.3]
+÷ 0061 ÷ 0600 × 0062 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Other) ÷ [999.0] ARABIC NUMBER SIGN (Prepend) × [9.2] LATIN SMALL LETTER B (Other) ÷ [0.3]
+÷ 261D × 1F3FB ÷ 261D ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F466 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 200D × 1F466 × 1F3FB ÷   #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) × [10.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 200D × 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ) × [11.0] BOY (EBG) ÷ [0.3]
+÷ 1F466 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] BOY (EBG) ÷ [0.3]
 #
-# Lines: 402
+# Lines: 822
 #
 # EOF
index fba2ee8..c5e94a3 100644 (file)
@@ -1,10 +1,11 @@
-# GraphemeBreakProperty-8.0.0.txt
-# Date: 2015-02-13, 13:47:14 GMT [MD]
+# GraphemeBreakProperty-9.0.0.txt
+# Date: 2016-06-03, 22:23:55 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
 
 # ================================================
 
+0600..0605    ; Prepend # Cf   [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
+06DD          ; Prepend # Cf       ARABIC END OF AYAH
+070F          ; Prepend # Cf       SYRIAC ABBREVIATION MARK
+08E2          ; Prepend # Cf       ARABIC DISPUTED END OF AYAH
+0D4E          ; Prepend # Lo       MALAYALAM LETTER DOT REPH
+110BD         ; Prepend # Cf       KAITHI NUMBER SIGN
+111C2..111C3  ; Prepend # Lo   [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA
+
+# Total code points: 13
+
+# ================================================
+
 000D          ; CR # Cc       <control-000D>
 
 # Total code points: 1
 000E..001F    ; Control # Cc  [18] <control-000E>..<control-001F>
 007F..009F    ; Control # Cc  [33] <control-007F>..<control-009F>
 00AD          ; Control # Cf       SOFT HYPHEN
-0600..0605    ; Control # Cf   [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
 061C          ; Control # Cf       ARABIC LETTER MARK
-06DD          ; Control # Cf       ARABIC END OF AYAH
-070F          ; Control # Cf       SYRIAC ABBREVIATION MARK
 180E          ; Control # Cf       MONGOLIAN VOWEL SEPARATOR
 200B          ; Control # Cf       ZERO WIDTH SPACE
 200E..200F    ; Control # Cf   [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
@@ -51,17 +61,15 @@ D800..DFFF    ; Control # Cs [2048] <surrogate-D800>..<surrogate-DFFF>
 FEFF          ; Control # Cf       ZERO WIDTH NO-BREAK SPACE
 FFF0..FFF8    ; Control # Cn   [9] <reserved-FFF0>..<reserved-FFF8>
 FFF9..FFFB    ; Control # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
-110BD         ; Control # Cf       KAITHI NUMBER SIGN
 1BCA0..1BCA3  ; Control # Cf   [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
 1D173..1D17A  ; Control # Cf   [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
 E0000         ; Control # Cn       <reserved-E0000>
 E0001         ; Control # Cf       LANGUAGE TAG
 E0002..E001F  ; Control # Cn  [30] <reserved-E0002>..<reserved-E001F>
-E0020..E007F  ; Control # Cf  [96] TAG SPACE..CANCEL TAG
 E0080..E00FF  ; Control # Cn [128] <reserved-E0080>..<reserved-E00FF>
 E01F0..E0FFF  ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
 
-# Total code points: 6030
+# Total code points: 5925
 
 # ================================================
 
@@ -89,6 +97,7 @@ E01F0..E0FFF  ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
 0825..0827    ; Extend # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
 0829..082D    ; Extend # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
 0859..085B    ; Extend # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+08D4..08E1    ; Extend # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
 08E3..0902    ; Extend # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
 093A          ; Extend # Mn       DEVANAGARI VOWEL SIGN OE
 093C          ; Extend # Mn       DEVANAGARI SIGN NUKTA
@@ -195,6 +204,7 @@ E01F0..E0FFF  ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
 17C9..17D3    ; Extend # Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
 17DD          ; Extend # Mn       KHMER SIGN ATTHACAN
 180B..180D    ; Extend # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+1885..1886    ; Extend # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
 18A9          ; Extend # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 1920..1922    ; Extend # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
 1927..1928    ; Extend # Mn   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
@@ -234,8 +244,8 @@ E01F0..E0FFF  ; Control # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
 1CF4          ; Extend # Mn       VEDIC TONE CANDRA ABOVE
 1CF8..1CF9    ; Extend # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
 1DC0..1DF5    ; Extend # Mn  [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF    ; Extend # Mn   [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
-200C..200D    ; Extend # Cf   [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
+1DFB..1DFF    ; Extend # Mn   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+200C          ; Extend # Cf       ZERO WIDTH NON-JOINER
 20D0..20DC    ; Extend # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
 20DD..20E0    ; Extend # Me   [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
 20E1          ; Extend # Mn       COMBINING LEFT RIGHT ARROW ABOVE
@@ -256,7 +266,7 @@ A802          ; Extend # Mn       SYLOTI NAGRI SIGN DVISVARA
 A806          ; Extend # Mn       SYLOTI NAGRI SIGN HASANTA
 A80B          ; Extend # Mn       SYLOTI NAGRI SIGN ANUSVARA
 A825..A826    ; Extend # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
-A8C4          ; Extend # Mn       SAURASHTRA SIGN VIRAMA
+A8C4..A8C5    ; Extend # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8E0..A8F1    ; Extend # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
 A926..A92D    ; Extend # Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
 A947..A951    ; Extend # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
@@ -309,6 +319,7 @@ FF9E..FF9F    ; Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
 1122F..11231  ; Extend # Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
 11234         ; Extend # Mn       KHOJKI SIGN ANUSVARA
 11236..11237  ; Extend # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E         ; Extend # Mn       KHOJKI SIGN SUKUN
 112DF         ; Extend # Mn       KHUDAWADI SIGN ANUSVARA
 112E3..112EA  ; Extend # Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
 11300..11301  ; Extend # Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
@@ -318,6 +329,9 @@ FF9E..FF9F    ; Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
 11357         ; Extend # Mc       GRANTHA AU LENGTH MARK
 11366..1136C  ; Extend # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; Extend # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11438..1143F  ; Extend # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11442..11444  ; Extend # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11446         ; Extend # Mn       NEWA SIGN NUKTA
 114B0         ; Extend # Mc       TIRHUTA VOWEL SIGN AA
 114B3..114B8  ; Extend # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
 114BA         ; Extend # Mn       TIRHUTA VOWEL SIGN SHORT E
@@ -339,6 +353,13 @@ FF9E..FF9F    ; Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
 1171D..1171F  ; Extend # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
 11722..11725  ; Extend # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
 11727..1172B  ; Extend # Mn   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+11C30..11C36  ; Extend # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; Extend # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3F         ; Extend # Mn       BHAIKSUKI SIGN VIRAMA
+11C92..11CA7  ; Extend # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CAA..11CB0  ; Extend # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB2..11CB3  ; Extend # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB5..11CB6  ; Extend # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 16AF0..16AF4  ; Extend # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
 16B30..16B36  ; Extend # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
 16F8F..16F92  ; Extend # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
@@ -356,10 +377,17 @@ FF9E..FF9F    ; Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
 1DA84         ; Extend # Mn       SIGNWRITING LOCATION HEAD NECK
 1DA9B..1DA9F  ; Extend # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF  ; Extend # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006  ; Extend # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; Extend # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; Extend # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; Extend # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; Extend # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E8D0..1E8D6  ; Extend # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E944..1E94A  ; Extend # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+E0020..E007F  ; Extend # Cf  [96] TAG SPACE..CANCEL TAG
 E0100..E01EF  ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 
-# Total code points: 1610
+# Total code points: 1828
 
 # ================================================
 
@@ -482,6 +510,9 @@ ABEC          ; SpacingMark # Mc       MEETEI MAYEK LUM IYEK
 11347..11348  ; SpacingMark # Mc   [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
 1134B..1134D  ; SpacingMark # Mc   [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
 11362..11363  ; SpacingMark # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11435..11437  ; SpacingMark # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11440..11441  ; SpacingMark # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11445         ; SpacingMark # Mc       NEWA SIGN VISARGA
 114B1..114B2  ; SpacingMark # Mc   [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II
 114B9         ; SpacingMark # Mc       TIRHUTA VOWEL SIGN E
 114BB..114BC  ; SpacingMark # Mc   [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O
@@ -498,11 +529,16 @@ ABEC          ; SpacingMark # Mc       MEETEI MAYEK LUM IYEK
 116B6         ; SpacingMark # Mc       TAKRI SIGN VIRAMA
 11720..11721  ; SpacingMark # Mc   [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
 11726         ; SpacingMark # Mc       AHOM VOWEL SIGN E
+11C2F         ; SpacingMark # Mc       BHAIKSUKI VOWEL SIGN AA
+11C3E         ; SpacingMark # Mc       BHAIKSUKI SIGN VISARGA
+11CA9         ; SpacingMark # Mc       MARCHEN SUBJOINED LETTER YA
+11CB1         ; SpacingMark # Mc       MARCHEN VOWEL SIGN I
+11CB4         ; SpacingMark # Mc       MARCHEN VOWEL SIGN O
 16F51..16F7E  ; SpacingMark # Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
 1D166         ; SpacingMark # Mc       MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
 1D16D         ; SpacingMark # Mc       MUSICAL SYMBOL COMBINING AUGMENTATION DOT
 
-# Total code points: 330
+# Total code points: 341
 
 # ================================================
 
@@ -1333,4 +1369,63 @@ D789..D7A3    ; LVT # Lo  [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH
 
 # Total code points: 10773
 
+# ================================================
+
+261D          ; E_Base # So       WHITE UP POINTING INDEX
+26F9          ; E_Base # So       PERSON WITH BALL
+270A..270D    ; E_Base # So   [4] RAISED FIST..WRITING HAND
+1F385         ; E_Base # So       FATHER CHRISTMAS
+1F3C3..1F3C4  ; E_Base # So   [2] RUNNER..SURFER
+1F3CA..1F3CB  ; E_Base # So   [2] SWIMMER..WEIGHT LIFTER
+1F442..1F443  ; E_Base # So   [2] EAR..NOSE
+1F446..1F450  ; E_Base # So  [11] WHITE UP POINTING BACKHAND INDEX..OPEN HANDS SIGN
+1F46E         ; E_Base # So       POLICE OFFICER
+1F470..1F478  ; E_Base # So   [9] BRIDE WITH VEIL..PRINCESS
+1F47C         ; E_Base # So       BABY ANGEL
+1F481..1F483  ; E_Base # So   [3] INFORMATION DESK PERSON..DANCER
+1F485..1F487  ; E_Base # So   [3] NAIL POLISH..HAIRCUT
+1F4AA         ; E_Base # So       FLEXED BICEPS
+1F575         ; E_Base # So       SLEUTH OR SPY
+1F57A         ; E_Base # So       MAN DANCING
+1F590         ; E_Base # So       RAISED HAND WITH FINGERS SPLAYED
+1F595..1F596  ; E_Base # So   [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
+1F645..1F647  ; E_Base # So   [3] FACE WITH NO GOOD GESTURE..PERSON BOWING DEEPLY
+1F64B..1F64F  ; E_Base # So   [5] HAPPY PERSON RAISING ONE HAND..PERSON WITH FOLDED HANDS
+1F6A3         ; E_Base # So       ROWBOAT
+1F6B4..1F6B6  ; E_Base # So   [3] BICYCLIST..PEDESTRIAN
+1F6C0         ; E_Base # So       BATH
+1F918..1F91E  ; E_Base # So   [7] SIGN OF THE HORNS..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+1F926         ; E_Base # So       FACE PALM
+1F930         ; E_Base # So       PREGNANT WOMAN
+1F933..1F939  ; E_Base # So   [7] SELFIE..JUGGLING
+1F93C..1F93E  ; E_Base # So   [3] WRESTLERS..HANDBALL
+
+# Total code points: 79
+
+# ================================================
+
+1F3FB..1F3FF  ; E_Modifier # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
+
+# Total code points: 5
+
+# ================================================
+
+200D          ; ZWJ # Cf       ZERO WIDTH JOINER
+
+# Total code points: 1
+
+# ================================================
+
+2764          ; Glue_After_Zwj # So       HEAVY BLACK HEART
+1F48B         ; Glue_After_Zwj # So       KISS MARK
+1F5E8         ; Glue_After_Zwj # So       LEFT SPEECH BUBBLE
+
+# Total code points: 3
+
+# ================================================
+
+1F466..1F469  ; E_Base_GAZ # So   [4] BOY..WOMAN
+
+# Total code points: 4
+
 # EOF
index 7f2e2cc..05efcf5 100644 (file)
@@ -1,10 +1,11 @@
-# LineBreakTest-8.0.0.txt
-# Date: 2015-04-30, 09:40:15 GMT [MD]
+# LineBreakTest-9.0.0.txt
+# Date: 2016-06-18, 00:42:06 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Default Line Break Test
 #
 #
 × 0023 × 0023 ÷     #  × [0.3] NUMBER SIGN (AL) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0023 × 0020 ÷ 0023 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0023 × 0308 × 0023 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0023 × 0308 × 0023 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0023 ÷ 2014 ÷     #  × [0.3] NUMBER SIGN (AL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 0023 × 0020 ÷ 2014 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 0023 × 0308 ÷ 2014 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 0023 × 0308 ÷ 2014 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 0023 × 0009 ÷     #  × [0.3] NUMBER SIGN (AL) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0023 × 0020 ÷ 0009 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0023 × 0308 × 0009 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0023 × 0308 × 0009 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0023 ÷ 00B4 ÷     #  × [0.3] NUMBER SIGN (AL) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0023 × 0020 ÷ 00B4 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0023 × 0308 ÷ 00B4 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0023 × 0308 ÷ 00B4 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0023 × 000B ÷     #  × [0.3] NUMBER SIGN (AL) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0023 × 0020 × 000B ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0023 × 0308 × 000B ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0023 × 0308 × 0020 × 000B ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0023 × 0308 × 000B ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0023 × 0308 × 0020 × 000B ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0023 ÷ FFFC ÷     #  × [0.3] NUMBER SIGN (AL) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0023 × 0020 ÷ FFFC ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0023 × 0308 ÷ FFFC ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0023 × 0308 ÷ FFFC ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0023 × 007D ÷     #  × [0.3] NUMBER SIGN (AL) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0023 × 0020 × 007D ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0023 × 0308 × 007D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0023 × 0308 × 0020 × 007D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0023 × 0308 × 007D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0023 × 0308 × 0020 × 007D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0023 × 0029 ÷     #  × [0.3] NUMBER SIGN (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0023 × 0020 × 0029 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0023 × 0308 × 0029 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0023 × 0308 × 0020 × 0029 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0023 × 0001 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0023 × 0020 ÷ 0001 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0023 × 0308 × 0001 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 0023 × 0308 × 0029 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0023 × 0308 × 0020 × 0029 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0023 × 000D ÷     #  × [0.3] NUMBER SIGN (AL) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0023 × 0020 × 000D ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0023 × 0308 × 000D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0023 × 0308 × 0020 × 000D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0023 × 0308 × 000D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0023 × 0308 × 0020 × 000D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0023 × 0021 ÷     #  × [0.3] NUMBER SIGN (AL) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0023 × 0020 × 0021 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0023 × 0308 × 0021 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0023 × 0308 × 0020 × 0021 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0023 × 0308 × 0021 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0023 × 0308 × 0020 × 0021 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0023 × 00A0 ÷     #  × [0.3] NUMBER SIGN (AL) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0023 × 0020 ÷ 00A0 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0023 × 0308 × 00A0 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0023 × 0308 × 00A0 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0023 ÷ AC00 ÷     #  × [0.3] NUMBER SIGN (AL) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0023 × 0020 ÷ AC00 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0023 × 0308 ÷ AC00 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0023 × 0308 ÷ AC00 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0023 ÷ AC01 ÷     #  × [0.3] NUMBER SIGN (AL) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0023 × 0020 ÷ AC01 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0023 × 0308 ÷ AC01 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0023 × 0308 ÷ AC01 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0023 × 05D0 ÷     #  × [0.3] NUMBER SIGN (AL) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0023 × 0020 ÷ 05D0 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0023 × 0308 × 05D0 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0023 × 0308 × 05D0 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0023 × 002D ÷     #  × [0.3] NUMBER SIGN (AL) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0023 × 0020 ÷ 002D ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0023 × 0308 × 002D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0023 × 0308 × 002D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0023 ÷ 231A ÷     #  × [0.3] NUMBER SIGN (AL) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 0023 × 0020 ÷ 231A ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0023 × 0308 ÷ 231A ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0023 × 0308 ÷ 231A ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 0023 × 2024 ÷     #  × [0.3] NUMBER SIGN (AL) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
 × 0023 × 0020 ÷ 2024 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0023 × 0308 × 2024 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0023 × 0308 × 2024 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0023 × 002C ÷     #  × [0.3] NUMBER SIGN (AL) × [13.02] COMMA (IS) ÷ [0.3]
 × 0023 × 0020 × 002C ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0023 × 0308 × 002C ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 0023 × 0308 × 0020 × 002C ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0023 × 0308 × 002C ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 0023 × 0308 × 0020 × 002C ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0023 ÷ 1100 ÷     #  × [0.3] NUMBER SIGN (AL) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0023 × 0020 ÷ 1100 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0023 × 0308 ÷ 1100 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0023 × 0308 ÷ 1100 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0023 ÷ 11A8 ÷     #  × [0.3] NUMBER SIGN (AL) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0023 × 0020 ÷ 11A8 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0023 × 0308 ÷ 11A8 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0023 × 0308 ÷ 11A8 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0023 ÷ 1160 ÷     #  × [0.3] NUMBER SIGN (AL) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0023 × 0020 ÷ 1160 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0023 × 0308 ÷ 1160 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0023 × 0308 ÷ 1160 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0023 × 000A ÷     #  × [0.3] NUMBER SIGN (AL) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0023 × 0020 × 000A ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0023 × 0308 × 000A ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0023 × 0308 × 0020 × 000A ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0023 × 0308 × 000A ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0023 × 0308 × 0020 × 000A ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0023 × 0085 ÷     #  × [0.3] NUMBER SIGN (AL) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0023 × 0020 × 0085 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0023 × 0308 × 0085 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0023 × 0308 × 0020 × 0085 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0023 × 0308 × 0085 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0023 × 0308 × 0020 × 0085 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0023 × 17D6 ÷     #  × [0.3] NUMBER SIGN (AL) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0023 × 0020 ÷ 17D6 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0023 × 0308 × 17D6 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0023 × 0308 × 17D6 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0023 × 0030 ÷     #  × [0.3] NUMBER SIGN (AL) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
 × 0023 × 0020 ÷ 0030 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0023 × 0308 × 0030 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0023 × 0308 × 0030 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0023 × 0028 ÷     #  × [0.3] NUMBER SIGN (AL) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0023 × 0020 ÷ 0028 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0023 × 0308 × 0028 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
\97 0023 Ã· 0025 Ã·     #  Ã\97 [0.3] NUMBER SIGN (AL) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0023 × 0308 × 0028 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
\97 0023 Ã\97 0025 Ã·     #  Ã\97 [0.3] NUMBER SIGN (AL) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
 × 0023 × 0020 ÷ 0025 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 0023 Ã\97 0308 Ã· 0025 Ã·     #  Ã\97 [0.3] NUMBER SIGN (AL) Ã\97 [9.0] COMBINING DIAERESIS (CM) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 0023 Ã· 0024 Ã·     #  Ã\97 [0.3] NUMBER SIGN (AL) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 0023 Ã\97 0308 Ã\97 0025 Ã·     #  Ã\97 [0.3] NUMBER SIGN (AL) Ã\97 [9.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 0023 Ã\97 0024 Ã·     #  Ã\97 [0.3] NUMBER SIGN (AL) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
 × 0023 × 0020 ÷ 0024 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 0023 Ã\97 0308 Ã· 0024 Ã·     #  Ã\97 [0.3] NUMBER SIGN (AL) Ã\97 [9.0] COMBINING DIAERESIS (CM) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 0023 Ã\97 0308 Ã\97 0024 Ã·     #  Ã\97 [0.3] NUMBER SIGN (AL) Ã\97 [9.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0023 × 0022 ÷     #  × [0.3] NUMBER SIGN (AL) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 0023 × 0020 ÷ 0022 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0023 × 0308 × 0022 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0023 × 0308 × 0022 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0023 × 0020 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [0.3]
 × 0023 × 0020 × 0020 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0023 × 0308 × 0020 × 0020 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0023 × 0308 × 0020 × 0020 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0023 × 002F ÷     #  × [0.3] NUMBER SIGN (AL) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0023 × 0020 × 002F ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0023 × 0308 × 002F ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 0023 × 0308 × 0020 × 002F ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0023 × 0308 × 002F ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 0023 × 0308 × 0020 × 002F ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0023 × 2060 ÷     #  × [0.3] NUMBER SIGN (AL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0023 × 0020 × 2060 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0023 × 0308 × 2060 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0023 × 0308 × 0020 × 2060 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0023 × 0308 × 2060 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0023 × 0308 × 0020 × 2060 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0023 × 200B ÷     #  × [0.3] NUMBER SIGN (AL) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0023 × 0020 × 200B ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0023 × 0308 × 200B ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0023 × 0308 × 0020 × 200B ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0023 × 0308 × 200B ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0023 × 0308 × 0020 × 200B ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0023 ÷ 1F1E6 ÷    #  × [0.3] NUMBER SIGN (AL) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 0023 × 0020 ÷ 1F1E6 ÷    #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0023 × 0308 ÷ 1F1E6 ÷    #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0023 × 0308 ÷ 1F1E6 ÷    #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0023 ÷ 261D ÷     #  × [0.3] NUMBER SIGN (AL) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0023 × 0020 ÷ 261D ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0023 × 0308 ÷ 261D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0023 ÷ 1F3FB ÷    #  × [0.3] NUMBER SIGN (AL) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0023 × 0020 ÷ 1F3FB ÷    #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0023 × 0308 ÷ 1F3FB ÷    #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0023 × 0001 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0023 × 0020 ÷ 0001 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0023 × 0308 × 0001 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0023 × 200D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0023 × 0020 ÷ 200D ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0023 × 0308 × 200D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 0023 × 00A7 ÷     #  × [0.3] NUMBER SIGN (AL) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0023 × 0020 ÷ 00A7 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0023 × 0308 × 00A7 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0023 × 0308 × 00A7 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0023 × 50005 ÷    #  × [0.3] NUMBER SIGN (AL) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0023 × 0020 ÷ 50005 ÷    #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0023 × 0308 × 50005 ÷    #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0023 × 0308 × 50005 ÷    #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0023 × 0E01 ÷     #  × [0.3] NUMBER SIGN (AL) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0023 × 0020 ÷ 0E01 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0023 × 0308 × 0E01 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0023 × 0308 × 0E01 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0023 × 3041 ÷     #  × [0.3] NUMBER SIGN (AL) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0023 × 0020 ÷ 3041 ÷     #  × [0.3] NUMBER SIGN (AL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0023 × 0308 × 3041 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0023 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0023 × 0308 × 3041 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0023 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] NUMBER SIGN (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 2014 ÷ 0023 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 2014 × 0020 ÷ 0023 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 2014 × 0308 ÷ 0023 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 2014 × 0308 ÷ 0023 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 2014 × 2014 ÷     #  × [0.3] EM DASH (B2) × [17.0] EM DASH (B2) ÷ [0.3]
 × 2014 × 0020 × 2014 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [17.0] EM DASH (B2) ÷ [0.3]
-× 2014 × 0308 × 2014 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [17.0] EM DASH (B2) ÷ [0.3]
-× 2014 × 0308 × 0020 × 2014 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [17.0] EM DASH (B2) ÷ [0.3]
+× 2014 × 0308 × 2014 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [17.0] EM DASH (B2) ÷ [0.3]
+× 2014 × 0308 × 0020 × 2014 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [17.0] EM DASH (B2) ÷ [0.3]
 × 2014 × 0009 ÷     #  × [0.3] EM DASH (B2) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 2014 × 0020 ÷ 0009 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 2014 × 0308 × 0009 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 2014 × 0308 × 0009 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 2014 ÷ 00B4 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 2014 × 0020 ÷ 00B4 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 2014 × 0308 ÷ 00B4 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 2014 × 0308 ÷ 00B4 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 2014 × 000B ÷     #  × [0.3] EM DASH (B2) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 2014 × 0020 × 000B ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 2014 × 0308 × 000B ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 2014 × 0308 × 0020 × 000B ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 2014 × 0308 × 000B ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 2014 × 0308 × 0020 × 000B ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 2014 ÷ FFFC ÷     #  × [0.3] EM DASH (B2) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 2014 × 0020 ÷ FFFC ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 2014 × 0308 ÷ FFFC ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 2014 × 0308 ÷ FFFC ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 2014 × 007D ÷     #  × [0.3] EM DASH (B2) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 2014 × 0020 × 007D ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 2014 × 0308 × 007D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 2014 × 0308 × 0020 × 007D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 2014 × 0308 × 007D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 2014 × 0308 × 0020 × 007D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 2014 × 0029 ÷     #  × [0.3] EM DASH (B2) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 2014 × 0020 × 0029 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 2014 × 0308 × 0029 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 2014 × 0308 × 0020 × 0029 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 2014 × 0001 ÷     #  × [0.3] EM DASH (B2) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 2014 × 0020 ÷ 0001 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 2014 × 0308 × 0001 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 2014 × 0308 × 0029 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 2014 × 0308 × 0020 × 0029 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 2014 × 000D ÷     #  × [0.3] EM DASH (B2) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 2014 × 0020 × 000D ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 2014 × 0308 × 000D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 2014 × 0308 × 0020 × 000D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 2014 × 0308 × 000D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 2014 × 0308 × 0020 × 000D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 2014 × 0021 ÷     #  × [0.3] EM DASH (B2) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 2014 × 0020 × 0021 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 2014 × 0308 × 0021 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 2014 × 0308 × 0020 × 0021 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 2014 × 0308 × 0021 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 2014 × 0308 × 0020 × 0021 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 2014 × 00A0 ÷     #  × [0.3] EM DASH (B2) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 2014 × 0020 ÷ 00A0 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 2014 × 0308 × 00A0 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 2014 × 0308 × 00A0 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 2014 ÷ AC00 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 2014 × 0020 ÷ AC00 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 2014 × 0308 ÷ AC00 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 2014 × 0308 ÷ AC00 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 2014 ÷ AC01 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 2014 × 0020 ÷ AC01 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 2014 × 0308 ÷ AC01 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 2014 × 0308 ÷ AC01 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 2014 ÷ 05D0 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 2014 × 0020 ÷ 05D0 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 2014 × 0308 ÷ 05D0 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 2014 × 0308 ÷ 05D0 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 2014 × 002D ÷     #  × [0.3] EM DASH (B2) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 2014 × 0020 ÷ 002D ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 2014 × 0308 × 002D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 2014 × 0308 × 002D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 2014 ÷ 231A ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 2014 × 0020 ÷ 231A ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 2014 × 0308 ÷ 231A ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 2014 × 0308 ÷ 231A ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 2014 ÷ 2024 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 2014 × 0020 ÷ 2024 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 2014 × 0308 ÷ 2024 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 2014 × 0308 ÷ 2024 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 2014 × 002C ÷     #  × [0.3] EM DASH (B2) × [13.02] COMMA (IS) ÷ [0.3]
 × 2014 × 0020 × 002C ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 2014 × 0308 × 002C ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 2014 × 0308 × 0020 × 002C ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 2014 × 0308 × 002C ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 2014 × 0308 × 0020 × 002C ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 2014 ÷ 1100 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 2014 × 0020 ÷ 1100 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 2014 × 0308 ÷ 1100 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 2014 × 0308 ÷ 1100 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 2014 ÷ 11A8 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 2014 × 0020 ÷ 11A8 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 2014 × 0308 ÷ 11A8 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 2014 × 0308 ÷ 11A8 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 2014 ÷ 1160 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 2014 × 0020 ÷ 1160 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 2014 × 0308 ÷ 1160 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 2014 × 0308 ÷ 1160 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 2014 × 000A ÷     #  × [0.3] EM DASH (B2) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 2014 × 0020 × 000A ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 2014 × 0308 × 000A ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 2014 × 0308 × 0020 × 000A ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 2014 × 0308 × 000A ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 2014 × 0308 × 0020 × 000A ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 2014 × 0085 ÷     #  × [0.3] EM DASH (B2) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 2014 × 0020 × 0085 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 2014 × 0308 × 0085 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 2014 × 0308 × 0020 × 0085 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 2014 × 0308 × 0085 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 2014 × 0308 × 0020 × 0085 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 2014 × 17D6 ÷     #  × [0.3] EM DASH (B2) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 2014 × 0020 ÷ 17D6 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 2014 × 0308 × 17D6 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 2014 × 0308 × 17D6 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 2014 ÷ 0030 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 2014 × 0020 ÷ 0030 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 2014 × 0308 ÷ 0030 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 2014 × 0308 ÷ 0030 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 2014 ÷ 0028 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 2014 × 0020 ÷ 0028 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 2014 × 0308 ÷ 0028 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 2014 × 0308 ÷ 0028 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 2014 ÷ 0025 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 2014 × 0020 ÷ 0025 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 2014 × 0308 ÷ 0025 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 2014 × 0308 ÷ 0025 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 2014 ÷ 0024 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 2014 × 0020 ÷ 0024 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 2014 × 0308 ÷ 0024 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 2014 × 0308 ÷ 0024 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 2014 × 0022 ÷     #  × [0.3] EM DASH (B2) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 2014 × 0020 ÷ 0022 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 2014 × 0308 × 0022 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 2014 × 0308 × 0022 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 2014 × 0020 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [0.3]
 × 2014 × 0020 × 0020 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 2014 × 0308 × 0020 × 0020 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 2014 × 0308 × 0020 × 0020 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 2014 × 002F ÷     #  × [0.3] EM DASH (B2) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 2014 × 0020 × 002F ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 2014 × 0308 × 002F ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 2014 × 0308 × 0020 × 002F ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 2014 × 0308 × 002F ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 2014 × 0308 × 0020 × 002F ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 2014 × 2060 ÷     #  × [0.3] EM DASH (B2) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 2014 × 0020 × 2060 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 2014 × 0308 × 2060 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 2014 × 0308 × 0020 × 2060 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 2014 × 0308 × 2060 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 2014 × 0308 × 0020 × 2060 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 2014 × 200B ÷     #  × [0.3] EM DASH (B2) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 2014 × 0020 × 200B ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 2014 × 0308 × 200B ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 2014 × 0308 × 0020 × 200B ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 2014 × 0308 × 200B ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 2014 × 0308 × 0020 × 200B ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 2014 ÷ 1F1E6 ÷    #  × [0.3] EM DASH (B2) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 2014 × 0020 ÷ 1F1E6 ÷    #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 2014 × 0308 ÷ 1F1E6 ÷    #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 2014 × 0308 ÷ 1F1E6 ÷    #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 2014 ÷ 261D ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 2014 × 0020 ÷ 261D ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 2014 × 0308 ÷ 261D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 2014 ÷ 1F3FB ÷    #  × [0.3] EM DASH (B2) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2014 × 0020 ÷ 1F3FB ÷    #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2014 × 0308 ÷ 1F3FB ÷    #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2014 × 0001 ÷     #  × [0.3] EM DASH (B2) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 2014 × 0020 ÷ 0001 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 2014 × 0308 × 0001 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 2014 × 200D ÷     #  × [0.3] EM DASH (B2) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 2014 × 0020 ÷ 200D ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 2014 × 0308 × 200D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 2014 ÷ 00A7 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 2014 × 0020 ÷ 00A7 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 2014 × 0308 ÷ 00A7 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 2014 × 0308 ÷ 00A7 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 2014 ÷ 50005 ÷    #  × [0.3] EM DASH (B2) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 2014 × 0020 ÷ 50005 ÷    #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 2014 × 0308 ÷ 50005 ÷    #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 2014 × 0308 ÷ 50005 ÷    #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 2014 ÷ 0E01 ÷     #  × [0.3] EM DASH (B2) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 2014 × 0020 ÷ 0E01 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 2014 × 0308 ÷ 0E01 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 2014 × 0308 ÷ 0E01 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 2014 × 3041 ÷     #  × [0.3] EM DASH (B2) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 2014 × 0020 ÷ 3041 ÷     #  × [0.3] EM DASH (B2) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 2014 × 0308 × 3041 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 2014 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 2014 × 0308 × 3041 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 2014 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] EM DASH (B2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0009 ÷ 0023 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0009 × 0020 ÷ 0023 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0009 × 0308 ÷ 0023 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0009 × 0308 ÷ 0023 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0009 ÷ 2014 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 0009 × 0020 ÷ 2014 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 0009 × 0308 ÷ 2014 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 0009 × 0308 ÷ 2014 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 0009 × 0009 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0009 × 0020 ÷ 0009 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0009 × 0308 × 0009 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0009 × 0308 × 0009 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0009 ÷ 00B4 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0009 × 0020 ÷ 00B4 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0009 × 0308 ÷ 00B4 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0009 × 0308 ÷ 00B4 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0009 × 000B ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0009 × 0020 × 000B ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0009 × 0308 × 000B ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0009 × 0308 × 0020 × 000B ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0009 × 0308 × 000B ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0009 × 0308 × 0020 × 000B ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0009 ÷ FFFC ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0009 × 0020 ÷ FFFC ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0009 × 0308 ÷ FFFC ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0009 × 0308 ÷ FFFC ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0009 × 007D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0009 × 0020 × 007D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0009 × 0308 × 007D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0009 × 0308 × 0020 × 007D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0009 × 0308 × 007D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0009 × 0308 × 0020 × 007D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0009 × 0029 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0009 × 0020 × 0029 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0009 × 0308 × 0029 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0009 × 0308 × 0020 × 0029 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0009 × 0001 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0009 × 0020 ÷ 0001 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0009 × 0308 × 0001 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 0009 × 0308 × 0029 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0009 × 0308 × 0020 × 0029 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0009 × 000D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0009 × 0020 × 000D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0009 × 0308 × 000D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0009 × 0308 × 0020 × 000D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0009 × 0308 × 000D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0009 × 0308 × 0020 × 000D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0009 × 0021 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0009 × 0020 × 0021 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0009 × 0308 × 0021 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0009 × 0308 × 0020 × 0021 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0009 × 0308 × 0021 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0009 × 0308 × 0020 × 0021 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0009 ÷ 00A0 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0009 × 0020 ÷ 00A0 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0009 × 0308 ÷ 00A0 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0009 × 0308 ÷ 00A0 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0009 ÷ AC00 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0009 × 0020 ÷ AC00 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0009 × 0308 ÷ AC00 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0009 × 0308 ÷ AC00 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0009 ÷ AC01 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0009 × 0020 ÷ AC01 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0009 × 0308 ÷ AC01 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0009 × 0308 ÷ AC01 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0009 ÷ 05D0 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0009 × 0020 ÷ 05D0 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0009 × 0308 ÷ 05D0 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0009 × 0308 ÷ 05D0 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0009 × 002D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0009 × 0020 ÷ 002D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0009 × 0308 × 002D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0009 × 0308 × 002D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0009 ÷ 231A ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 0009 × 0020 ÷ 231A ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0009 × 0308 ÷ 231A ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0009 × 0308 ÷ 231A ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 0009 ÷ 2024 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0009 × 0020 ÷ 2024 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0009 × 0308 ÷ 2024 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0009 × 0308 ÷ 2024 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0009 × 002C ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [13.02] COMMA (IS) ÷ [0.3]
 × 0009 × 0020 × 002C ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0009 × 0308 × 002C ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 0009 × 0308 × 0020 × 002C ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0009 × 0308 × 002C ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 0009 × 0308 × 0020 × 002C ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0009 ÷ 1100 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0009 × 0020 ÷ 1100 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0009 × 0308 ÷ 1100 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0009 × 0308 ÷ 1100 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0009 ÷ 11A8 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0009 × 0020 ÷ 11A8 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0009 × 0308 ÷ 11A8 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0009 × 0308 ÷ 11A8 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0009 ÷ 1160 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0009 × 0020 ÷ 1160 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0009 × 0308 ÷ 1160 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0009 × 0308 ÷ 1160 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0009 × 000A ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0009 × 0020 × 000A ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0009 × 0308 × 000A ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0009 × 0308 × 0020 × 000A ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0009 × 0308 × 000A ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0009 × 0308 × 0020 × 000A ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0009 × 0085 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0009 × 0020 × 0085 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0009 × 0308 × 0085 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0009 × 0308 × 0020 × 0085 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0009 × 0308 × 0085 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0009 × 0308 × 0020 × 0085 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0009 × 17D6 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0009 × 0020 ÷ 17D6 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0009 × 0308 × 17D6 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0009 × 0308 × 17D6 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0009 ÷ 0030 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0009 × 0020 ÷ 0030 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0009 × 0308 ÷ 0030 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0009 × 0308 ÷ 0030 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0009 ÷ 0028 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0009 × 0020 ÷ 0028 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0009 × 0308 ÷ 0028 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0009 × 0308 ÷ 0028 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0009 ÷ 0025 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0009 × 0020 ÷ 0025 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0009 × 0308 ÷ 0025 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0009 × 0308 ÷ 0025 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0009 ÷ 0024 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0009 × 0020 ÷ 0024 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0009 × 0308 ÷ 0024 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0009 × 0308 ÷ 0024 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0009 × 0022 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 0009 × 0020 ÷ 0022 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0009 × 0308 × 0022 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0009 × 0308 × 0022 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0009 × 0020 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [0.3]
 × 0009 × 0020 × 0020 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0009 × 0308 × 0020 × 0020 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0009 × 0308 × 0020 × 0020 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0009 × 002F ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0009 × 0020 × 002F ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0009 × 0308 × 002F ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 0009 × 0308 × 0020 × 002F ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0009 × 0308 × 002F ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 0009 × 0308 × 0020 × 002F ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0009 × 2060 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0009 × 0020 × 2060 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0009 × 0308 × 2060 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0009 × 0308 × 0020 × 2060 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0009 × 0308 × 2060 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0009 × 0308 × 0020 × 2060 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0009 × 200B ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0009 × 0020 × 200B ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0009 × 0308 × 200B ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0009 × 0308 × 0020 × 200B ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0009 × 0308 × 200B ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0009 × 0308 × 0020 × 200B ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0009 ÷ 1F1E6 ÷    #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 0009 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0009 × 0308 ÷ 1F1E6 ÷    #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0009 × 0308 ÷ 1F1E6 ÷    #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0009 ÷ 261D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0009 × 0020 ÷ 261D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0009 × 0308 ÷ 261D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0009 ÷ 1F3FB ÷    #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0009 × 0020 ÷ 1F3FB ÷    #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0009 × 0308 ÷ 1F3FB ÷    #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0009 × 0001 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0009 × 0020 ÷ 0001 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0009 × 0308 × 0001 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0009 × 200D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0009 × 0020 ÷ 200D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0009 × 0308 × 200D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 0009 ÷ 00A7 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0009 × 0020 ÷ 00A7 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0009 × 0308 ÷ 00A7 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0009 × 0308 ÷ 00A7 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0009 ÷ 50005 ÷    #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0009 × 0020 ÷ 50005 ÷    #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0009 × 0308 ÷ 50005 ÷    #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0009 × 0308 ÷ 50005 ÷    #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0009 ÷ 0E01 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0009 × 0020 ÷ 0E01 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0009 × 0308 ÷ 0E01 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0009 × 0308 ÷ 0E01 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0009 × 3041 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0009 × 0020 ÷ 3041 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0009 × 0308 × 3041 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0009 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0009 × 0308 × 3041 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0009 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] <CHARACTER TABULATION> (BA) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 00B4 × 0023 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] NUMBER SIGN (AL) ÷ [0.3]
 × 00B4 × 0020 ÷ 0023 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 00B4 × 0308 × 0023 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] NUMBER SIGN (AL) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 00B4 × 0308 × 0023 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] NUMBER SIGN (AL) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 00B4 × 2014 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] EM DASH (B2) ÷ [0.3]
 × 00B4 × 0020 ÷ 2014 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 00B4 × 0308 × 2014 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] EM DASH (B2) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 00B4 × 0308 × 2014 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] EM DASH (B2) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 00B4 × 0009 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 00B4 × 0020 ÷ 0009 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 00B4 × 0308 × 0009 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00B4 × 0308 × 0009 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 00B4 × 00B4 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] ACUTE ACCENT (BB) ÷ [0.3]
 × 00B4 × 0020 ÷ 00B4 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 00B4 × 0308 × 00B4 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] ACUTE ACCENT (BB) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 00B4 × 0308 × 00B4 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] ACUTE ACCENT (BB) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 00B4 × 000B ÷     #  × [0.3] ACUTE ACCENT (BB) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 00B4 × 0020 × 000B ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 00B4 × 0308 × 000B ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 00B4 × 0308 × 0020 × 000B ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00B4 × 0308 × 000B ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00B4 × 0308 × 0020 × 000B ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 00B4 ÷ FFFC ÷     #  × [0.3] ACUTE ACCENT (BB) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 00B4 × 0020 ÷ FFFC ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 00B4 × 0308 ÷ FFFC ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00B4 × 0308 ÷ FFFC ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 00B4 × 007D ÷     #  × [0.3] ACUTE ACCENT (BB) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 00B4 × 0020 × 007D ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 00B4 × 0308 × 007D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 00B4 × 0308 × 0020 × 007D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00B4 × 0308 × 007D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00B4 × 0308 × 0020 × 007D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 00B4 × 0029 ÷     #  × [0.3] ACUTE ACCENT (BB) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 00B4 × 0020 × 0029 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 00B4 × 0308 × 0029 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 00B4 × 0308 × 0020 × 0029 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 00B4 × 0001 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 00B4 × 0020 ÷ 0001 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 00B4 × 0308 × 0001 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 00B4 × 0308 × 0029 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 00B4 × 0308 × 0020 × 0029 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 00B4 × 000D ÷     #  × [0.3] ACUTE ACCENT (BB) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 00B4 × 0020 × 000D ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 00B4 × 0308 × 000D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 00B4 × 0308 × 0020 × 000D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00B4 × 0308 × 000D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00B4 × 0308 × 0020 × 000D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 00B4 × 0021 ÷     #  × [0.3] ACUTE ACCENT (BB) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 00B4 × 0020 × 0021 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 00B4 × 0308 × 0021 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 00B4 × 0308 × 0020 × 0021 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00B4 × 0308 × 0021 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00B4 × 0308 × 0020 × 0021 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 00B4 × 00A0 ÷     #  × [0.3] ACUTE ACCENT (BB) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 00B4 × 0020 ÷ 00A0 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 00B4 × 0308 × 00A0 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00B4 × 0308 × 00A0 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 00B4 × AC00 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 00B4 × 0020 ÷ AC00 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 00B4 × 0308 × AC00 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00B4 × 0308 × AC00 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 00B4 × AC01 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 00B4 × 0020 ÷ AC01 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 00B4 × 0308 × AC01 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00B4 × 0308 × AC01 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 00B4 × 05D0 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 00B4 × 0020 ÷ 05D0 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 00B4 × 0308 × 05D0 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00B4 × 0308 × 05D0 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 00B4 × 002D ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 00B4 × 0020 ÷ 002D ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 00B4 × 0308 × 002D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00B4 × 0308 × 002D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 00B4 × 231A ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] WATCH (ID) ÷ [0.3]
 × 00B4 × 0020 ÷ 231A ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 00B4 × 0308 × 231A ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] WATCH (ID) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 00B4 × 0308 × 231A ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] WATCH (ID) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 00B4 × 2024 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] ONE DOT LEADER (IN) ÷ [0.3]
 × 00B4 × 0020 ÷ 2024 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 00B4 × 0308 × 2024 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] ONE DOT LEADER (IN) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 00B4 × 0308 × 2024 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] ONE DOT LEADER (IN) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 00B4 × 002C ÷     #  × [0.3] ACUTE ACCENT (BB) × [13.02] COMMA (IS) ÷ [0.3]
 × 00B4 × 0020 × 002C ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 00B4 × 0308 × 002C ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 00B4 × 0308 × 0020 × 002C ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 00B4 × 0308 × 002C ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 00B4 × 0308 × 0020 × 002C ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 00B4 × 1100 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 00B4 × 0020 ÷ 1100 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 00B4 × 0308 × 1100 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00B4 × 0308 × 1100 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 00B4 × 11A8 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 00B4 × 0020 ÷ 11A8 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 00B4 × 0308 × 11A8 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00B4 × 0308 × 11A8 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 00B4 × 1160 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 00B4 × 0020 ÷ 1160 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 00B4 × 0308 × 1160 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00B4 × 0308 × 1160 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 00B4 × 000A ÷     #  × [0.3] ACUTE ACCENT (BB) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 00B4 × 0020 × 000A ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 00B4 × 0308 × 000A ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 00B4 × 0308 × 0020 × 000A ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00B4 × 0308 × 000A ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00B4 × 0308 × 0020 × 000A ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 00B4 × 0085 ÷     #  × [0.3] ACUTE ACCENT (BB) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 00B4 × 0020 × 0085 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 00B4 × 0308 × 0085 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 00B4 × 0308 × 0020 × 0085 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00B4 × 0308 × 0085 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00B4 × 0308 × 0020 × 0085 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 00B4 × 17D6 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 00B4 × 0020 ÷ 17D6 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 00B4 × 0308 × 17D6 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00B4 × 0308 × 17D6 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 00B4 × 0030 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] DIGIT ZERO (NU) ÷ [0.3]
 × 00B4 × 0020 ÷ 0030 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 00B4 × 0308 × 0030 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] DIGIT ZERO (NU) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 00B4 × 0308 × 0030 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] DIGIT ZERO (NU) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 00B4 × 0028 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 00B4 × 0020 ÷ 0028 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 00B4 × 0308 × 0028 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 00B4 × 0308 × 0028 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 00B4 × 0025 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] PERCENT SIGN (PO) ÷ [0.3]
 × 00B4 × 0020 ÷ 0025 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 00B4 × 0308 × 0025 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] PERCENT SIGN (PO) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 00B4 × 0308 × 0025 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] PERCENT SIGN (PO) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 00B4 × 0024 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] DOLLAR SIGN (PR) ÷ [0.3]
 × 00B4 × 0020 ÷ 0024 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 00B4 × 0308 × 0024 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] DOLLAR SIGN (PR) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 00B4 × 0308 × 0024 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] DOLLAR SIGN (PR) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 00B4 × 0022 ÷     #  × [0.3] ACUTE ACCENT (BB) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 00B4 × 0020 ÷ 0022 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 00B4 × 0308 × 0022 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 00B4 × 0308 × 0022 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 00B4 × 0020 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [0.3]
 × 00B4 × 0020 × 0020 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 00B4 × 0308 × 0020 × 0020 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 00B4 × 0308 × 0020 × 0020 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 00B4 × 002F ÷     #  × [0.3] ACUTE ACCENT (BB) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 00B4 × 0020 × 002F ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 00B4 × 0308 × 002F ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 00B4 × 0308 × 0020 × 002F ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 00B4 × 0308 × 002F ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 00B4 × 0308 × 0020 × 002F ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 00B4 × 2060 ÷     #  × [0.3] ACUTE ACCENT (BB) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 00B4 × 0020 × 2060 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 00B4 × 0308 × 2060 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 00B4 × 0308 × 0020 × 2060 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00B4 × 0308 × 2060 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00B4 × 0308 × 0020 × 2060 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 00B4 × 200B ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 00B4 × 0020 × 200B ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 00B4 × 0308 × 200B ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 00B4 × 0308 × 0020 × 200B ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00B4 × 0308 × 200B ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00B4 × 0308 × 0020 × 200B ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 00B4 × 1F1E6 ÷    #  × [0.3] ACUTE ACCENT (BB) × [21.04] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 00B4 × 0020 ÷ 1F1E6 ÷    #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 00B4 × 0308 × 1F1E6 ÷    #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00B4 × 0308 × 1F1E6 ÷    #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00B4 × 261D ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00B4 × 0020 ÷ 261D ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00B4 × 0308 × 261D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00B4 × 1F3FB ÷    #  × [0.3] ACUTE ACCENT (BB) × [21.04] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00B4 × 0020 ÷ 1F3FB ÷    #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00B4 × 0308 × 1F3FB ÷    #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00B4 × 0001 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00B4 × 0020 ÷ 0001 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00B4 × 0308 × 0001 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00B4 × 200D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00B4 × 0020 ÷ 200D ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00B4 × 0308 × 200D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 00B4 × 00A7 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] SECTION SIGN (AI_AL) ÷ [0.3]
 × 00B4 × 0020 ÷ 00A7 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 00B4 × 0308 × 00A7 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] SECTION SIGN (AI_AL) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00B4 × 0308 × 00A7 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 00B4 × 50005 ÷    #  × [0.3] ACUTE ACCENT (BB) × [21.04] <reserved-50005> (XX_AL) ÷ [0.3]
 × 00B4 × 0020 ÷ 50005 ÷    #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 00B4 × 0308 × 50005 ÷    #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] <reserved-50005> (XX_AL) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00B4 × 0308 × 50005 ÷    #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 00B4 × 0E01 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.04] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 00B4 × 0020 ÷ 0E01 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 00B4 × 0308 × 0E01 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.04] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00B4 × 0308 × 0E01 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.04] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 00B4 × 3041 ÷     #  × [0.3] ACUTE ACCENT (BB) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 00B4 × 0020 ÷ 3041 ÷     #  × [0.3] ACUTE ACCENT (BB) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 00B4 × 0308 × 3041 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 00B4 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00B4 × 0308 × 3041 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00B4 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] ACUTE ACCENT (BB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 000B ÷ 0023 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] NUMBER SIGN (AL) ÷ [0.3]
 × 000B ÷ 0020 ÷ 0023 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 000B ÷ 0308 × 0023 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 0023 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 000B ÷ 0308 × 0023 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 0023 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 000B ÷ 2014 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] EM DASH (B2) ÷ [0.3]
 × 000B ÷ 0020 ÷ 2014 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 000B ÷ 0308 ÷ 2014 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 2014 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 000B ÷ 0308 ÷ 2014 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 2014 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 000B ÷ 0009 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 000B ÷ 0020 ÷ 0009 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 000B ÷ 0308 × 0009 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 0009 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 000B ÷ 0308 × 0009 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 0009 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 000B ÷ 00B4 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 000B ÷ 0020 ÷ 00B4 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 000B ÷ 0308 ÷ 00B4 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 000B ÷ 0308 ÷ 00B4 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 000B ÷ 000B ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 000B ÷ 0020 × 000B ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 000B ÷ 0308 × 000B ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 000B ÷ 0308 × 0020 × 000B ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 000B ÷ 0308 × 000B ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 000B ÷ 0308 × 0020 × 000B ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 000B ÷ FFFC ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 000B ÷ 0020 ÷ FFFC ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 000B ÷ 0308 ÷ FFFC ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ FFFC ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 000B ÷ 0308 ÷ FFFC ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ FFFC ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 000B ÷ 007D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 000B ÷ 0020 × 007D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 000B ÷ 0308 × 007D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 000B ÷ 0308 × 0020 × 007D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 000B ÷ 0308 × 007D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 000B ÷ 0308 × 0020 × 007D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 000B ÷ 0029 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 000B ÷ 0020 × 0029 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 000B ÷ 0308 × 0029 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 000B ÷ 0308 × 0020 × 0029 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 000B ÷ 0001 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] <START OF HEADING> (CM) ÷ [0.3]
-× 000B ÷ 0020 ÷ 0001 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 000B ÷ 0308 × 0001 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 0001 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 000B ÷ 0308 × 0029 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 000B ÷ 0308 × 0020 × 0029 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 000B ÷ 000D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 000B ÷ 0020 × 000D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 000B ÷ 0308 × 000D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 000B ÷ 0308 × 0020 × 000D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 000B ÷ 0308 × 000D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 000B ÷ 0308 × 0020 × 000D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 000B ÷ 0021 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] EXCLAMATION MARK (EX) ÷ [0.3]
 × 000B ÷ 0020 × 0021 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 000B ÷ 0308 × 0021 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 000B ÷ 0308 × 0020 × 0021 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 000B ÷ 0308 × 0021 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 000B ÷ 0308 × 0020 × 0021 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 000B ÷ 00A0 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 000B ÷ 0020 ÷ 00A0 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 000B ÷ 0308 × 00A0 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 000B ÷ 0308 × 00A0 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 000B ÷ AC00 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 000B ÷ 0020 ÷ AC00 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 000B ÷ 0308 ÷ AC00 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ AC00 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 000B ÷ 0308 ÷ AC00 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ AC00 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 000B ÷ AC01 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 000B ÷ 0020 ÷ AC01 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 000B ÷ 0308 ÷ AC01 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ AC01 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 000B ÷ 0308 ÷ AC01 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ AC01 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 000B ÷ 05D0 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 000B ÷ 0020 ÷ 05D0 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 000B ÷ 0308 × 05D0 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 000B ÷ 0308 × 05D0 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 000B ÷ 002D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 000B ÷ 0020 ÷ 002D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 000B ÷ 0308 × 002D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 002D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 000B ÷ 0308 × 002D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 002D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 000B ÷ 231A ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] WATCH (ID) ÷ [0.3]
 × 000B ÷ 0020 ÷ 231A ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 000B ÷ 0308 ÷ 231A ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 231A ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 000B ÷ 0308 ÷ 231A ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 231A ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 000B ÷ 2024 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 000B ÷ 0020 ÷ 2024 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 000B ÷ 0308 × 2024 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 2024 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 000B ÷ 0308 × 2024 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 2024 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 000B ÷ 002C ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMMA (IS) ÷ [0.3]
 × 000B ÷ 0020 × 002C ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 000B ÷ 0308 × 002C ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 000B ÷ 0308 × 0020 × 002C ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 000B ÷ 0308 × 002C ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 000B ÷ 0308 × 0020 × 002C ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 000B ÷ 1100 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 000B ÷ 0020 ÷ 1100 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 000B ÷ 0308 ÷ 1100 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 1100 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 000B ÷ 0308 ÷ 1100 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 1100 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 000B ÷ 11A8 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 000B ÷ 0020 ÷ 11A8 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 000B ÷ 0308 ÷ 11A8 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 000B ÷ 0308 ÷ 11A8 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 000B ÷ 1160 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 000B ÷ 0020 ÷ 1160 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 000B ÷ 0308 ÷ 1160 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 1160 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 000B ÷ 0308 ÷ 1160 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 1160 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 000B ÷ 000A ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 000B ÷ 0020 × 000A ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 000B ÷ 0308 × 000A ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 000B ÷ 0308 × 0020 × 000A ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 000B ÷ 0308 × 000A ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 000B ÷ 0308 × 0020 × 000A ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 000B ÷ 0085 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 000B ÷ 0020 × 0085 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 000B ÷ 0308 × 0085 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 000B ÷ 0308 × 0020 × 0085 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 000B ÷ 0308 × 0085 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 000B ÷ 0308 × 0020 × 0085 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 000B ÷ 17D6 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 000B ÷ 0020 ÷ 17D6 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 000B ÷ 0308 × 17D6 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 000B ÷ 0308 × 17D6 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 000B ÷ 0030 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] DIGIT ZERO (NU) ÷ [0.3]
 × 000B ÷ 0020 ÷ 0030 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 000B ÷ 0308 × 0030 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 0030 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 000B ÷ 0308 × 0030 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 0030 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 000B ÷ 0028 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 000B ÷ 0020 ÷ 0028 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 000B ÷ 0308 × 0028 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 0028 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 000B ÷ 0308 × 0028 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 0028 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 000B ÷ 0025 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] PERCENT SIGN (PO) ÷ [0.3]
 × 000B ÷ 0020 ÷ 0025 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 000B Ã· 0308 Ã· 0025 Ã·     #  Ã\97 [0.3] <LINE TABULATION> (BK) Ã· [4.0] COMBINING DIAERESIS (CM) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 0025 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 000B Ã· 0308 Ã\97 0025 Ã·     #  Ã\97 [0.3] <LINE TABULATION> (BK) Ã· [4.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 0025 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 000B ÷ 0024 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 000B ÷ 0020 ÷ 0024 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 000B Ã· 0308 Ã· 0024 Ã·     #  Ã\97 [0.3] <LINE TABULATION> (BK) Ã· [4.0] COMBINING DIAERESIS (CM) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 0024 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 000B Ã· 0308 Ã\97 0024 Ã·     #  Ã\97 [0.3] <LINE TABULATION> (BK) Ã· [4.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 0024 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 000B ÷ 0022 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] QUOTATION MARK (QU) ÷ [0.3]
 × 000B ÷ 0020 ÷ 0022 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 000B ÷ 0308 × 0022 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 0022 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 000B ÷ 0308 × 0022 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 0022 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 000B ÷ 0020 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [0.3]
 × 000B ÷ 0020 × 0020 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 000B ÷ 0308 × 0020 × 0020 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 000B ÷ 0308 × 0020 × 0020 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 000B ÷ 002F ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SOLIDUS (SY) ÷ [0.3]
 × 000B ÷ 0020 × 002F ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 000B ÷ 0308 × 002F ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 000B ÷ 0308 × 0020 × 002F ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 000B ÷ 0308 × 002F ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 000B ÷ 0308 × 0020 × 002F ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 000B ÷ 2060 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] WORD JOINER (WJ) ÷ [0.3]
 × 000B ÷ 0020 × 2060 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 000B ÷ 0308 × 2060 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 000B ÷ 0308 × 0020 × 2060 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 000B ÷ 0308 × 2060 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 000B ÷ 0308 × 0020 × 2060 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 000B ÷ 200B ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 000B ÷ 0020 × 200B ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 000B ÷ 0308 × 200B ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 000B ÷ 0308 × 0020 × 200B ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 000B ÷ 0308 × 200B ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 000B ÷ 0308 × 0020 × 200B ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 000B ÷ 1F1E6 ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 000B ÷ 0020 ÷ 1F1E6 ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 000B ÷ 0308 ÷ 1F1E6 ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 000B ÷ 0308 ÷ 1F1E6 ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 000B ÷ 261D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 000B ÷ 0020 ÷ 261D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 000B ÷ 0308 ÷ 261D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 261D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 000B ÷ 1F3FB ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000B ÷ 0020 ÷ 1F3FB ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000B ÷ 0308 ÷ 1F3FB ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000B ÷ 0001 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 000B ÷ 0020 ÷ 0001 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 000B ÷ 0308 × 0001 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 0001 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 000B ÷ 200D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 000B ÷ 0020 ÷ 200D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 000B ÷ 0308 × 200D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 200D ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 000B ÷ 00A7 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 000B ÷ 0020 ÷ 00A7 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 000B ÷ 0308 × 00A7 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 000B ÷ 0308 × 00A7 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 000B ÷ 50005 ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 000B ÷ 0020 ÷ 50005 ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 000B ÷ 0308 × 50005 ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 50005 ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 000B ÷ 0308 × 50005 ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 50005 ÷    #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 000B ÷ 0E01 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 000B ÷ 0020 ÷ 0E01 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 000B ÷ 0308 × 0E01 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 000B ÷ 0308 × 0E01 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 000B ÷ 3041 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 000B ÷ 0020 ÷ 3041 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 000B ÷ 0308 × 3041 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 000B ÷ 0308 × 0020 ÷ 3041 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 000B ÷ 0308 × 3041 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 000B ÷ 0308 × 0020 ÷ 3041 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × FFFC ÷ 0023 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] NUMBER SIGN (AL) ÷ [0.3]
 × FFFC × 0020 ÷ 0023 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× FFFC × 0308 ÷ 0023 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] NUMBER SIGN (AL) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× FFFC × 0308 ÷ 0023 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] NUMBER SIGN (AL) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × FFFC ÷ 2014 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] EM DASH (B2) ÷ [0.3]
 × FFFC × 0020 ÷ 2014 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× FFFC × 0308 ÷ 2014 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] EM DASH (B2) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× FFFC × 0308 ÷ 2014 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] EM DASH (B2) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × FFFC ÷ 0009 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × FFFC × 0020 ÷ 0009 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× FFFC × 0308 ÷ 0009 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× FFFC × 0308 ÷ 0009 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × FFFC ÷ 00B4 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] ACUTE ACCENT (BB) ÷ [0.3]
 × FFFC × 0020 ÷ 00B4 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× FFFC × 0308 ÷ 00B4 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] ACUTE ACCENT (BB) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× FFFC × 0308 ÷ 00B4 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] ACUTE ACCENT (BB) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × FFFC × 000B ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × FFFC × 0020 × 000B ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× FFFC × 0308 × 000B ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× FFFC × 0308 × 0020 × 000B ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× FFFC × 0308 × 000B ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× FFFC × 0308 × 0020 × 000B ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × FFFC ÷ FFFC ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × FFFC × 0020 ÷ FFFC ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× FFFC × 0308 ÷ FFFC ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× FFFC × 0308 ÷ FFFC ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × FFFC × 007D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × FFFC × 0020 × 007D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× FFFC × 0308 × 007D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× FFFC × 0308 × 0020 × 007D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× FFFC × 0308 × 007D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× FFFC × 0308 × 0020 × 007D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × FFFC × 0029 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × FFFC × 0020 × 0029 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× FFFC × 0308 × 0029 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× FFFC × 0308 × 0020 × 0029 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× FFFC × 0001 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× FFFC × 0020 ÷ 0001 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× FFFC × 0308 × 0001 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× FFFC × 0308 × 0029 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× FFFC × 0308 × 0020 × 0029 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × FFFC × 000D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × FFFC × 0020 × 000D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× FFFC × 0308 × 000D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× FFFC × 0308 × 0020 × 000D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× FFFC × 0308 × 000D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× FFFC × 0308 × 0020 × 000D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × FFFC × 0021 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × FFFC × 0020 × 0021 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× FFFC × 0308 × 0021 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× FFFC × 0308 × 0020 × 0021 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× FFFC × 0308 × 0021 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× FFFC × 0308 × 0020 × 0021 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × FFFC × 00A0 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × FFFC × 0020 ÷ 00A0 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× FFFC × 0308 × 00A0 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× FFFC × 0308 × 00A0 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × FFFC ÷ AC00 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × FFFC × 0020 ÷ AC00 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× FFFC × 0308 ÷ AC00 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× FFFC × 0308 ÷ AC00 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × FFFC ÷ AC01 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × FFFC × 0020 ÷ AC01 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× FFFC × 0308 ÷ AC01 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× FFFC × 0308 ÷ AC01 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × FFFC ÷ 05D0 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × FFFC × 0020 ÷ 05D0 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× FFFC × 0308 ÷ 05D0 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× FFFC × 0308 ÷ 05D0 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × FFFC ÷ 002D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × FFFC × 0020 ÷ 002D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× FFFC × 0308 ÷ 002D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 002D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× FFFC × 0308 ÷ 002D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 002D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × FFFC ÷ 231A ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] WATCH (ID) ÷ [0.3]
 × FFFC × 0020 ÷ 231A ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× FFFC × 0308 ÷ 231A ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] WATCH (ID) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 231A ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× FFFC × 0308 ÷ 231A ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] WATCH (ID) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 231A ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × FFFC ÷ 2024 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] ONE DOT LEADER (IN) ÷ [0.3]
 × FFFC × 0020 ÷ 2024 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× FFFC × 0308 ÷ 2024 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] ONE DOT LEADER (IN) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× FFFC × 0308 ÷ 2024 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] ONE DOT LEADER (IN) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × FFFC × 002C ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [13.02] COMMA (IS) ÷ [0.3]
 × FFFC × 0020 × 002C ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× FFFC × 0308 × 002C ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× FFFC × 0308 × 0020 × 002C ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× FFFC × 0308 × 002C ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× FFFC × 0308 × 0020 × 002C ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × FFFC ÷ 1100 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × FFFC × 0020 ÷ 1100 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× FFFC × 0308 ÷ 1100 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× FFFC × 0308 ÷ 1100 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × FFFC ÷ 11A8 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × FFFC × 0020 ÷ 11A8 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× FFFC × 0308 ÷ 11A8 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× FFFC × 0308 ÷ 11A8 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × FFFC ÷ 1160 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × FFFC × 0020 ÷ 1160 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× FFFC × 0308 ÷ 1160 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× FFFC × 0308 ÷ 1160 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × FFFC × 000A ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × FFFC × 0020 × 000A ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× FFFC × 0308 × 000A ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× FFFC × 0308 × 0020 × 000A ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× FFFC × 0308 × 000A ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× FFFC × 0308 × 0020 × 000A ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × FFFC × 0085 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × FFFC × 0020 × 0085 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× FFFC × 0308 × 0085 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× FFFC × 0308 × 0020 × 0085 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× FFFC × 0308 × 0085 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× FFFC × 0308 × 0020 × 0085 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × FFFC ÷ 17D6 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × FFFC × 0020 ÷ 17D6 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× FFFC × 0308 ÷ 17D6 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× FFFC × 0308 ÷ 17D6 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × FFFC ÷ 0030 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] DIGIT ZERO (NU) ÷ [0.3]
 × FFFC × 0020 ÷ 0030 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× FFFC × 0308 ÷ 0030 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] DIGIT ZERO (NU) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× FFFC × 0308 ÷ 0030 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] DIGIT ZERO (NU) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × FFFC ÷ 0028 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] LEFT PARENTHESIS (OP) ÷ [0.3]
 × FFFC × 0020 ÷ 0028 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× FFFC × 0308 ÷ 0028 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] LEFT PARENTHESIS (OP) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× FFFC × 0308 ÷ 0028 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] LEFT PARENTHESIS (OP) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × FFFC ÷ 0025 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] PERCENT SIGN (PO) ÷ [0.3]
 × FFFC × 0020 ÷ 0025 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× FFFC × 0308 ÷ 0025 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] PERCENT SIGN (PO) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× FFFC × 0308 ÷ 0025 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] PERCENT SIGN (PO) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × FFFC ÷ 0024 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] DOLLAR SIGN (PR) ÷ [0.3]
 × FFFC × 0020 ÷ 0024 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× FFFC × 0308 ÷ 0024 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] DOLLAR SIGN (PR) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× FFFC × 0308 ÷ 0024 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] DOLLAR SIGN (PR) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × FFFC × 0022 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × FFFC × 0020 ÷ 0022 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× FFFC × 0308 × 0022 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× FFFC × 0308 × 0022 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × FFFC × 0020 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [0.3]
 × FFFC × 0020 × 0020 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× FFFC × 0308 × 0020 × 0020 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× FFFC × 0308 × 0020 × 0020 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × FFFC × 002F ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × FFFC × 0020 × 002F ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× FFFC × 0308 × 002F ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× FFFC × 0308 × 0020 × 002F ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× FFFC × 0308 × 002F ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× FFFC × 0308 × 0020 × 002F ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × FFFC × 2060 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × FFFC × 0020 × 2060 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× FFFC × 0308 × 2060 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× FFFC × 0308 × 0020 × 2060 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× FFFC × 0308 × 2060 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× FFFC × 0308 × 0020 × 2060 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × FFFC × 200B ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × FFFC × 0020 × 200B ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× FFFC × 0308 × 200B ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× FFFC × 0308 × 0020 × 200B ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× FFFC × 0308 × 200B ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× FFFC × 0308 × 0020 × 200B ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × FFFC ÷ 1F1E6 ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × FFFC × 0020 ÷ 1F1E6 ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× FFFC × 0308 ÷ 1F1E6 ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× FFFC × 0308 ÷ 1F1E6 ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× FFFC ÷ 261D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× FFFC × 0020 ÷ 261D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× FFFC × 0308 ÷ 261D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 261D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× FFFC ÷ 1F3FB ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× FFFC × 0020 ÷ 1F3FB ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× FFFC × 0308 ÷ 1F3FB ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× FFFC × 0001 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× FFFC × 0020 ÷ 0001 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× FFFC × 0308 × 0001 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× FFFC × 200D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× FFFC × 0020 ÷ 200D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× FFFC × 0308 × 200D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 200D ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × FFFC ÷ 00A7 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] SECTION SIGN (AI_AL) ÷ [0.3]
 × FFFC × 0020 ÷ 00A7 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× FFFC × 0308 ÷ 00A7 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] SECTION SIGN (AI_AL) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× FFFC × 0308 ÷ 00A7 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] SECTION SIGN (AI_AL) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × FFFC ÷ 50005 ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] <reserved-50005> (XX_AL) ÷ [0.3]
 × FFFC × 0020 ÷ 50005 ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× FFFC × 0308 ÷ 50005 ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] <reserved-50005> (XX_AL) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× FFFC × 0308 ÷ 50005 ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] <reserved-50005> (XX_AL) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × FFFC ÷ 0E01 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × FFFC × 0020 ÷ 0E01 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× FFFC × 0308 ÷ 0E01 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× FFFC × 0308 ÷ 0E01 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × FFFC ÷ 3041 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × FFFC × 0020 ÷ 3041 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× FFFC × 0308 ÷ 3041 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× FFFC × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× FFFC × 0308 ÷ 3041 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× FFFC × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 007D ÷ 0023 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 007D × 0020 ÷ 0023 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 007D × 0308 ÷ 0023 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 007D × 0308 ÷ 0023 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 007D ÷ 2014 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 007D × 0020 ÷ 2014 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 007D × 0308 ÷ 2014 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 007D × 0308 ÷ 2014 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 007D × 0009 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 007D × 0020 ÷ 0009 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 007D × 0308 × 0009 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 007D × 0308 × 0009 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 007D ÷ 00B4 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 007D × 0020 ÷ 00B4 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 007D × 0308 ÷ 00B4 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 007D × 0308 ÷ 00B4 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 007D × 000B ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 007D × 0020 × 000B ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 007D × 0308 × 000B ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 007D × 0308 × 0020 × 000B ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 007D × 0308 × 000B ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 007D × 0308 × 0020 × 000B ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 007D ÷ FFFC ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 007D × 0020 ÷ FFFC ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 007D × 0308 ÷ FFFC ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 007D × 0308 ÷ FFFC ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 007D × 007D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 007D × 0020 × 007D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 007D × 0308 × 007D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 007D × 0308 × 0020 × 007D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 007D × 0308 × 007D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 007D × 0308 × 0020 × 007D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 007D × 0029 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 007D × 0020 × 0029 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 007D × 0308 × 0029 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 007D × 0308 × 0020 × 0029 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 007D × 0001 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 007D × 0020 ÷ 0001 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 007D × 0308 × 0001 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 007D × 0308 × 0029 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 007D × 0308 × 0020 × 0029 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 007D × 000D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 007D × 0020 × 000D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 007D × 0308 × 000D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 007D × 0308 × 0020 × 000D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 007D × 0308 × 000D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 007D × 0308 × 0020 × 000D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 007D × 0021 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 007D × 0020 × 0021 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 007D × 0308 × 0021 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 007D × 0308 × 0020 × 0021 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 007D × 0308 × 0021 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 007D × 0308 × 0020 × 0021 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 007D × 00A0 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 007D × 0020 ÷ 00A0 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 007D × 0308 × 00A0 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 007D × 0308 × 00A0 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 007D ÷ AC00 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 007D × 0020 ÷ AC00 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 007D × 0308 ÷ AC00 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 007D × 0308 ÷ AC00 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 007D ÷ AC01 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 007D × 0020 ÷ AC01 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 007D × 0308 ÷ AC01 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 007D × 0308 ÷ AC01 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 007D ÷ 05D0 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 007D × 0020 ÷ 05D0 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 007D × 0308 ÷ 05D0 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 007D × 0308 ÷ 05D0 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 007D × 002D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 007D × 0020 ÷ 002D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 007D × 0308 × 002D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 002D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 007D × 0308 × 002D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 002D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 007D ÷ 231A ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 007D × 0020 ÷ 231A ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 007D × 0308 ÷ 231A ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 231A ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 007D × 0308 ÷ 231A ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 231A ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 007D ÷ 2024 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 007D × 0020 ÷ 2024 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 007D × 0308 ÷ 2024 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 007D × 0308 ÷ 2024 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 007D × 002C ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [13.02] COMMA (IS) ÷ [0.3]
 × 007D × 0020 × 002C ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 007D × 0308 × 002C ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 007D × 0308 × 0020 × 002C ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 007D × 0308 × 002C ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 007D × 0308 × 0020 × 002C ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 007D ÷ 1100 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 007D × 0020 ÷ 1100 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 007D × 0308 ÷ 1100 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 007D × 0308 ÷ 1100 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 007D ÷ 11A8 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 007D × 0020 ÷ 11A8 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 007D × 0308 ÷ 11A8 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 007D × 0308 ÷ 11A8 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 007D ÷ 1160 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 007D × 0020 ÷ 1160 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 007D × 0308 ÷ 1160 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 007D × 0308 ÷ 1160 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 007D × 000A ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 007D × 0020 × 000A ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 007D × 0308 × 000A ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 007D × 0308 × 0020 × 000A ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 007D × 0308 × 000A ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 007D × 0308 × 0020 × 000A ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 007D × 0085 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 007D × 0020 × 0085 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 007D × 0308 × 0085 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 007D × 0308 × 0020 × 0085 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 007D × 0308 × 0085 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 007D × 0308 × 0020 × 0085 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 007D × 17D6 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [16.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 007D × 0020 × 17D6 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [16.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 007D × 0308 × 17D6 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [16.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 007D × 0308 × 0020 × 17D6 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [16.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 007D × 0308 × 17D6 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [16.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 007D × 0308 × 0020 × 17D6 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [16.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 007D ÷ 0030 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 007D × 0020 ÷ 0030 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 007D × 0308 ÷ 0030 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 007D × 0308 ÷ 0030 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 007D ÷ 0028 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 007D × 0020 ÷ 0028 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 007D × 0308 ÷ 0028 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 007D × 0308 ÷ 0028 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 007D ÷ 0025 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 007D × 0020 ÷ 0025 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 007D × 0308 ÷ 0025 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 007D × 0308 ÷ 0025 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 007D ÷ 0024 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 007D × 0020 ÷ 0024 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 007D × 0308 ÷ 0024 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 007D × 0308 ÷ 0024 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 007D × 0022 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 007D × 0020 ÷ 0022 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 007D × 0308 × 0022 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 007D × 0308 × 0022 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 007D × 0020 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [0.3]
 × 007D × 0020 × 0020 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 007D × 0308 × 0020 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 007D × 0308 × 0020 × 0020 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 007D × 0308 × 0020 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 007D × 0308 × 0020 × 0020 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 007D × 002F ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 007D × 0020 × 002F ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 007D × 0308 × 002F ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 007D × 0308 × 0020 × 002F ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 007D × 0308 × 002F ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 007D × 0308 × 0020 × 002F ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 007D × 2060 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 007D × 0020 × 2060 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 007D × 0308 × 2060 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 007D × 0308 × 0020 × 2060 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 007D × 0308 × 2060 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 007D × 0308 × 0020 × 2060 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 007D × 200B ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 007D × 0020 × 200B ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 007D × 0308 × 200B ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 007D × 0308 × 0020 × 200B ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 007D × 0308 × 200B ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 007D × 0308 × 0020 × 200B ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 007D ÷ 1F1E6 ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 007D × 0020 ÷ 1F1E6 ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 007D × 0308 ÷ 1F1E6 ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 007D × 0308 ÷ 1F1E6 ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 007D ÷ 261D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 007D × 0020 ÷ 261D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 007D × 0308 ÷ 261D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 261D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 007D ÷ 1F3FB ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 007D × 0020 ÷ 1F3FB ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 007D × 0308 ÷ 1F3FB ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 007D × 0001 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 007D × 0020 ÷ 0001 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 007D × 0308 × 0001 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 007D × 200D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 007D × 0020 ÷ 200D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 007D × 0308 × 200D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 200D ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 007D ÷ 00A7 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 007D × 0020 ÷ 00A7 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 007D × 0308 ÷ 00A7 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 007D × 0308 ÷ 00A7 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 007D ÷ 50005 ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 007D × 0020 ÷ 50005 ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 007D × 0308 ÷ 50005 ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 007D × 0308 ÷ 50005 ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 007D ÷ 0E01 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 007D × 0020 ÷ 0E01 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 007D × 0308 ÷ 0E01 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 007D × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 007D × 0308 ÷ 0E01 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 007D × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 007D × 3041 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 007D × 0020 × 3041 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 007D × 0308 × 3041 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 007D × 0308 × 0020 × 3041 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 007D × 0308 × 3041 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 007D × 0308 × 0020 × 3041 ÷     #  × [0.3] RIGHT CURLY BRACKET (CL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0029 × 0023 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [30.02] NUMBER SIGN (AL) ÷ [0.3]
 × 0029 × 0020 ÷ 0023 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0029 × 0308 × 0023 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [30.02] NUMBER SIGN (AL) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0029 × 0308 × 0023 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.02] NUMBER SIGN (AL) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0029 ÷ 2014 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 0029 × 0020 ÷ 2014 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 0029 × 0308 ÷ 2014 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 0029 × 0308 ÷ 2014 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 0029 × 0009 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0029 × 0020 ÷ 0009 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0029 × 0308 × 0009 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0029 × 0308 × 0009 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0029 ÷ 00B4 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0029 × 0020 ÷ 00B4 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0029 × 0308 ÷ 00B4 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0029 × 0308 ÷ 00B4 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0029 × 000B ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0029 × 0020 × 000B ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0029 × 0308 × 000B ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0029 × 0308 × 0020 × 000B ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0029 × 0308 × 000B ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0029 × 0308 × 0020 × 000B ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0029 ÷ FFFC ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0029 × 0020 ÷ FFFC ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0029 × 0308 ÷ FFFC ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0029 × 0308 ÷ FFFC ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0029 × 007D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0029 × 0020 × 007D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0029 × 0308 × 007D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0029 × 0308 × 0020 × 007D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0029 × 0308 × 007D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0029 × 0308 × 0020 × 007D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0029 × 0029 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0029 × 0020 × 0029 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0029 × 0308 × 0029 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0029 × 0308 × 0020 × 0029 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0029 × 0001 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0029 × 0020 ÷ 0001 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0029 × 0308 × 0001 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 0029 × 0308 × 0029 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0029 × 0308 × 0020 × 0029 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0029 × 000D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0029 × 0020 × 000D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0029 × 0308 × 000D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0029 × 0308 × 0020 × 000D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0029 × 0308 × 000D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0029 × 0308 × 0020 × 000D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0029 × 0021 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0029 × 0020 × 0021 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0029 × 0308 × 0021 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0029 × 0308 × 0020 × 0021 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0029 × 0308 × 0021 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0029 × 0308 × 0020 × 0021 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0029 × 00A0 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0029 × 0020 ÷ 00A0 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0029 × 0308 × 00A0 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0029 × 0308 × 00A0 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0029 ÷ AC00 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0029 × 0020 ÷ AC00 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0029 × 0308 ÷ AC00 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0029 × 0308 ÷ AC00 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0029 ÷ AC01 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0029 × 0020 ÷ AC01 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0029 × 0308 ÷ AC01 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0029 × 0308 ÷ AC01 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0029 × 05D0 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [30.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0029 × 0020 ÷ 05D0 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0029 × 0308 × 05D0 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [30.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0029 × 0308 × 05D0 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0029 × 002D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0029 × 0020 ÷ 002D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0029 × 0308 × 002D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0029 × 0308 × 002D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0029 ÷ 231A ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 0029 × 0020 ÷ 231A ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0029 × 0308 ÷ 231A ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0029 × 0308 ÷ 231A ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 0029 ÷ 2024 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0029 × 0020 ÷ 2024 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0029 × 0308 ÷ 2024 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0029 × 0308 ÷ 2024 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0029 × 002C ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0029 × 0020 × 002C ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0029 × 0308 × 002C ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 0029 × 0308 × 0020 × 002C ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0029 × 0308 × 002C ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 0029 × 0308 × 0020 × 002C ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0029 ÷ 1100 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0029 × 0020 ÷ 1100 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0029 × 0308 ÷ 1100 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0029 × 0308 ÷ 1100 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0029 ÷ 11A8 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0029 × 0020 ÷ 11A8 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0029 × 0308 ÷ 11A8 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0029 × 0308 ÷ 11A8 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0029 ÷ 1160 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0029 × 0020 ÷ 1160 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0029 × 0308 ÷ 1160 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0029 × 0308 ÷ 1160 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0029 × 000A ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0029 × 0020 × 000A ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0029 × 0308 × 000A ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0029 × 0308 × 0020 × 000A ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0029 × 0308 × 000A ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0029 × 0308 × 0020 × 000A ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0029 × 0085 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0029 × 0020 × 0085 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0029 × 0308 × 0085 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0029 × 0308 × 0020 × 0085 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0029 × 0308 × 0085 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0029 × 0308 × 0020 × 0085 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0029 × 17D6 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [16.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0029 × 0020 × 17D6 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [16.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0029 × 0308 × 17D6 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [16.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0029 × 0308 × 0020 × 17D6 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [16.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0029 × 0308 × 17D6 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [16.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0029 × 0308 × 0020 × 17D6 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [16.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0029 × 0030 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [30.02] DIGIT ZERO (NU) ÷ [0.3]
 × 0029 × 0020 ÷ 0030 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0029 × 0308 × 0030 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [30.02] DIGIT ZERO (NU) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0029 × 0308 × 0030 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.02] DIGIT ZERO (NU) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0029 ÷ 0028 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0029 × 0020 ÷ 0028 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0029 × 0308 ÷ 0028 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0029 × 0308 ÷ 0028 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0029 ÷ 0025 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0029 × 0020 ÷ 0025 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0029 × 0308 ÷ 0025 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0029 × 0308 ÷ 0025 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0029 ÷ 0024 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0029 × 0020 ÷ 0024 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0029 × 0308 ÷ 0024 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0029 × 0308 ÷ 0024 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0029 × 0022 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 0029 × 0020 ÷ 0022 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0029 × 0308 × 0022 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0029 × 0308 × 0022 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0029 × 0020 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0029 × 0020 × 0020 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0029 × 0308 × 0020 × 0020 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0029 × 0308 × 0020 × 0020 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0029 × 002F ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0029 × 0020 × 002F ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0029 × 0308 × 002F ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 0029 × 0308 × 0020 × 002F ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0029 × 0308 × 002F ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 0029 × 0308 × 0020 × 002F ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0029 × 2060 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0029 × 0020 × 2060 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0029 × 0308 × 2060 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0029 × 0308 × 0020 × 2060 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0029 × 0308 × 2060 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0029 × 0308 × 0020 × 2060 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0029 × 200B ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0029 × 0020 × 200B ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0029 × 0308 × 200B ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0029 × 0308 × 0020 × 200B ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0029 × 0308 × 200B ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0029 × 0308 × 0020 × 200B ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0029 ÷ 1F1E6 ÷    #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 0029 × 0020 ÷ 1F1E6 ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0029 × 0308 ÷ 1F1E6 ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0029 × 0308 ÷ 1F1E6 ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0029 ÷ 261D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0029 × 0020 ÷ 261D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0029 × 0308 ÷ 261D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0029 ÷ 1F3FB ÷    #  × [0.3] RIGHT PARENTHESIS (CP) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0029 × 0020 ÷ 1F3FB ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0029 × 0308 ÷ 1F3FB ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0029 × 0001 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0029 × 0020 ÷ 0001 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0029 × 0308 × 0001 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0029 × 200D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0029 × 0020 ÷ 200D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0029 × 0308 × 200D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 0029 × 00A7 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [30.02] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0029 × 0020 ÷ 00A7 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0029 × 0308 × 00A7 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [30.02] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0029 × 0308 × 00A7 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.02] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0029 × 50005 ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [30.02] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0029 × 0020 ÷ 50005 ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0029 × 0308 × 50005 ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [30.02] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0029 × 0308 × 50005 ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.02] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0029 × 0E01 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [30.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0029 × 0020 ÷ 0E01 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0029 × 0308 × 0E01 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [30.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0029 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0029 × 0308 × 0E01 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0029 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0029 × 3041 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0029 × 0020 × 3041 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0029 × 0308 × 3041 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0029 × 0308 × 0020 × 3041 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0001 × 0023 ÷     #  × [0.3] <START OF HEADING> (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0001 × 0020 ÷ 0023 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0001 × 0308 × 0023 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0001 ÷ 2014 ÷     #  × [0.3] <START OF HEADING> (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 0001 × 0020 ÷ 2014 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 0001 × 0308 ÷ 2014 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 0001 × 0009 ÷     #  × [0.3] <START OF HEADING> (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0001 × 0020 ÷ 0009 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0001 × 0308 × 0009 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0001 ÷ 00B4 ÷     #  × [0.3] <START OF HEADING> (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0001 × 0020 ÷ 00B4 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0001 × 0308 ÷ 00B4 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0001 × 000B ÷     #  × [0.3] <START OF HEADING> (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0001 × 0020 × 000B ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0001 × 0308 × 000B ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0001 × 0308 × 0020 × 000B ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0001 ÷ FFFC ÷     #  × [0.3] <START OF HEADING> (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0001 × 0020 ÷ FFFC ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0001 × 0308 ÷ FFFC ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0001 × 007D ÷     #  × [0.3] <START OF HEADING> (CM) × [13.04] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0001 × 0020 × 007D ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0001 × 0308 × 007D ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [13.04] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0001 × 0308 × 0020 × 007D ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0001 × 0029 ÷     #  × [0.3] <START OF HEADING> (CM) × [13.04] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0001 × 0020 × 0029 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0001 × 0308 × 0029 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [13.04] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0001 × 0308 × 0020 × 0029 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0001 × 0001 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0001 × 0020 ÷ 0001 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0001 × 0308 × 0001 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0001 × 000D ÷     #  × [0.3] <START OF HEADING> (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0001 × 0020 × 000D ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0001 × 0308 × 000D ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0001 × 0308 × 0020 × 000D ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0001 × 0021 ÷     #  × [0.3] <START OF HEADING> (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0001 × 0020 × 0021 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0001 × 0308 × 0021 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0001 × 0308 × 0020 × 0021 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0001 × 00A0 ÷     #  × [0.3] <START OF HEADING> (CM) × [12.3] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0001 × 0020 ÷ 00A0 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0001 × 0308 × 00A0 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [12.3] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0001 ÷ AC00 ÷     #  × [0.3] <START OF HEADING> (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0001 × 0020 ÷ AC00 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0001 × 0308 ÷ AC00 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0001 ÷ AC01 ÷     #  × [0.3] <START OF HEADING> (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0001 × 0020 ÷ AC01 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0001 × 0308 ÷ AC01 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0001 × 05D0 ÷     #  × [0.3] <START OF HEADING> (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0001 × 0020 ÷ 05D0 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0001 × 0308 × 05D0 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0001 × 002D ÷     #  × [0.3] <START OF HEADING> (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0001 × 0020 ÷ 002D ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0001 × 0308 × 002D ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0001 ÷ 231A ÷     #  × [0.3] <START OF HEADING> (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0001 × 0020 ÷ 231A ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0001 × 0308 ÷ 231A ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0001 × 2024 ÷     #  × [0.3] <START OF HEADING> (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 0001 × 0020 ÷ 2024 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0001 × 0308 × 2024 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0001 × 002C ÷     #  × [0.3] <START OF HEADING> (CM) × [13.04] COMMA (IS) ÷ [0.3]
-× 0001 × 0020 × 002C ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0001 × 0308 × 002C ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [13.04] COMMA (IS) ÷ [0.3]
-× 0001 × 0308 × 0020 × 002C ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0001 ÷ 1100 ÷     #  × [0.3] <START OF HEADING> (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0001 × 0020 ÷ 1100 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0001 × 0308 ÷ 1100 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0001 ÷ 11A8 ÷     #  × [0.3] <START OF HEADING> (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0001 × 0020 ÷ 11A8 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0001 × 0308 ÷ 11A8 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0001 ÷ 1160 ÷     #  × [0.3] <START OF HEADING> (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0001 × 0020 ÷ 1160 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0001 × 0308 ÷ 1160 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0001 × 000A ÷     #  × [0.3] <START OF HEADING> (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0001 × 0020 × 000A ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0001 × 0308 × 000A ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0001 × 0308 × 0020 × 000A ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0001 × 0085 ÷     #  × [0.3] <START OF HEADING> (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0001 × 0020 × 0085 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0001 × 0308 × 0085 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0001 × 0308 × 0020 × 0085 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0001 × 17D6 ÷     #  × [0.3] <START OF HEADING> (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0001 × 0020 ÷ 17D6 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0001 × 0308 × 17D6 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0001 × 0030 ÷     #  × [0.3] <START OF HEADING> (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
-× 0001 × 0020 ÷ 0030 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0001 × 0308 × 0030 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0001 × 0028 ÷     #  × [0.3] <START OF HEADING> (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0001 × 0020 ÷ 0028 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0001 × 0308 × 0028 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0001 ÷ 0025 ÷     #  × [0.3] <START OF HEADING> (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0001 × 0020 ÷ 0025 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0001 × 0308 ÷ 0025 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0001 ÷ 0024 ÷     #  × [0.3] <START OF HEADING> (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0001 × 0020 ÷ 0024 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0001 × 0308 ÷ 0024 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0001 × 0022 ÷     #  × [0.3] <START OF HEADING> (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 0001 × 0020 ÷ 0022 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0001 × 0308 × 0022 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0001 × 0020 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0001 × 0020 × 0020 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0001 × 0308 × 0020 × 0020 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0001 × 002F ÷     #  × [0.3] <START OF HEADING> (CM) × [13.04] SOLIDUS (SY) ÷ [0.3]
-× 0001 × 0020 × 002F ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0001 × 0308 × 002F ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [13.04] SOLIDUS (SY) ÷ [0.3]
-× 0001 × 0308 × 0020 × 002F ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0001 × 2060 ÷     #  × [0.3] <START OF HEADING> (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0001 × 0020 × 2060 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0001 × 0308 × 2060 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0001 × 0308 × 0020 × 2060 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0001 × 200B ÷     #  × [0.3] <START OF HEADING> (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0001 × 0020 × 200B ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0001 × 0308 × 200B ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0001 × 0308 × 0020 × 200B ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0001 ÷ 1F1E6 ÷    #  × [0.3] <START OF HEADING> (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0001 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0001 × 0308 ÷ 1F1E6 ÷    #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0001 × 00A7 ÷     #  × [0.3] <START OF HEADING> (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0001 × 0020 ÷ 00A7 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0001 × 0308 × 00A7 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0001 × 50005 ÷    #  × [0.3] <START OF HEADING> (CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0001 × 0020 ÷ 50005 ÷    #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0001 × 0308 × 50005 ÷    #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0001 × 0E01 ÷     #  × [0.3] <START OF HEADING> (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0001 × 0020 ÷ 0E01 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0001 × 0308 × 0E01 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0001 × 3041 ÷     #  × [0.3] <START OF HEADING> (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0001 × 0020 ÷ 3041 ÷     #  × [0.3] <START OF HEADING> (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0001 × 0308 × 3041 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0001 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] <START OF HEADING> (CM) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0029 × 0308 × 3041 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0029 × 0308 × 0020 × 3041 ÷     #  × [0.3] RIGHT PARENTHESIS (CP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [16.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 000D ÷ 0023 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] NUMBER SIGN (AL) ÷ [0.3]
 × 000D ÷ 0020 ÷ 0023 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 000D ÷ 0308 × 0023 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 0023 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 000D ÷ 0308 × 0023 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 0023 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 000D ÷ 2014 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] EM DASH (B2) ÷ [0.3]
 × 000D ÷ 0020 ÷ 2014 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 000D ÷ 0308 ÷ 2014 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 2014 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 000D ÷ 0308 ÷ 2014 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 2014 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 000D ÷ 0009 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 000D ÷ 0020 ÷ 0009 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 000D ÷ 0308 × 0009 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 0009 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 000D ÷ 0308 × 0009 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 0009 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 000D ÷ 00B4 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] ACUTE ACCENT (BB) ÷ [0.3]
 × 000D ÷ 0020 ÷ 00B4 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 000D ÷ 0308 ÷ 00B4 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 000D ÷ 0308 ÷ 00B4 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 000D ÷ 000B ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] <LINE TABULATION> (BK) ÷ [0.3]
 × 000D ÷ 0020 × 000B ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 000D ÷ 0308 × 000B ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 000D ÷ 0308 × 0020 × 000B ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 000D ÷ 0308 × 000B ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 000D ÷ 0308 × 0020 × 000B ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 000D ÷ FFFC ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 000D ÷ 0020 ÷ FFFC ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 000D ÷ 0308 ÷ FFFC ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ FFFC ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 000D ÷ 0308 ÷ FFFC ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ FFFC ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 000D ÷ 007D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 000D ÷ 0020 × 007D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 000D ÷ 0308 × 007D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 000D ÷ 0308 × 0020 × 007D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 000D ÷ 0308 × 007D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 000D ÷ 0308 × 0020 × 007D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 000D ÷ 0029 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 000D ÷ 0020 × 0029 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 000D ÷ 0308 × 0029 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 000D ÷ 0308 × 0020 × 0029 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 000D ÷ 0001 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] <START OF HEADING> (CM) ÷ [0.3]
-× 000D ÷ 0020 ÷ 0001 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 000D ÷ 0308 × 0001 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 0001 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 000D ÷ 0308 × 0029 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 000D ÷ 0308 × 0020 × 0029 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 000D ÷ 000D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 000D ÷ 0020 × 000D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 000D ÷ 0308 × 000D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 000D ÷ 0308 × 0020 × 000D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 000D ÷ 0308 × 000D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 000D ÷ 0308 × 0020 × 000D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 000D ÷ 0021 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] EXCLAMATION MARK (EX) ÷ [0.3]
 × 000D ÷ 0020 × 0021 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 000D ÷ 0308 × 0021 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 000D ÷ 0308 × 0020 × 0021 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 000D ÷ 0308 × 0021 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 000D ÷ 0308 × 0020 × 0021 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 000D ÷ 00A0 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] NO-BREAK SPACE (GL) ÷ [0.3]
 × 000D ÷ 0020 ÷ 00A0 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 000D ÷ 0308 × 00A0 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 000D ÷ 0308 × 00A0 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 000D ÷ AC00 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 000D ÷ 0020 ÷ AC00 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 000D ÷ 0308 ÷ AC00 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ AC00 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 000D ÷ 0308 ÷ AC00 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ AC00 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 000D ÷ AC01 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 000D ÷ 0020 ÷ AC01 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 000D ÷ 0308 ÷ AC01 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ AC01 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 000D ÷ 0308 ÷ AC01 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ AC01 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 000D ÷ 05D0 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 000D ÷ 0020 ÷ 05D0 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 000D ÷ 0308 × 05D0 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 000D ÷ 0308 × 05D0 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 000D ÷ 002D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 000D ÷ 0020 ÷ 002D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 000D ÷ 0308 × 002D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 002D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 000D ÷ 0308 × 002D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 002D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 000D ÷ 231A ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] WATCH (ID) ÷ [0.3]
 × 000D ÷ 0020 ÷ 231A ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 000D ÷ 0308 ÷ 231A ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 231A ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 000D ÷ 0308 ÷ 231A ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 231A ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 000D ÷ 2024 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] ONE DOT LEADER (IN) ÷ [0.3]
 × 000D ÷ 0020 ÷ 2024 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 000D ÷ 0308 × 2024 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 2024 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 000D ÷ 0308 × 2024 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 2024 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 000D ÷ 002C ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMMA (IS) ÷ [0.3]
 × 000D ÷ 0020 × 002C ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 000D ÷ 0308 × 002C ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 000D ÷ 0308 × 0020 × 002C ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 000D ÷ 0308 × 002C ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 000D ÷ 0308 × 0020 × 002C ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 000D ÷ 1100 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 000D ÷ 0020 ÷ 1100 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 000D ÷ 0308 ÷ 1100 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 1100 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 000D ÷ 0308 ÷ 1100 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 1100 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 000D ÷ 11A8 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 000D ÷ 0020 ÷ 11A8 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 000D ÷ 0308 ÷ 11A8 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 000D ÷ 0308 ÷ 11A8 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 000D ÷ 1160 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 000D ÷ 0020 ÷ 1160 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 000D ÷ 0308 ÷ 1160 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 1160 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 000D ÷ 0308 ÷ 1160 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 1160 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 000D × 000A ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) × [5.01] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 000D ÷ 0020 × 000A ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 000D ÷ 0308 × 000A ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 000D ÷ 0308 × 0020 × 000A ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 000D ÷ 0308 × 000A ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 000D ÷ 0308 × 0020 × 000A ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 000D ÷ 0085 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 000D ÷ 0020 × 0085 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 000D ÷ 0308 × 0085 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 000D ÷ 0308 × 0020 × 0085 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 000D ÷ 0308 × 0085 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 000D ÷ 0308 × 0020 × 0085 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 000D ÷ 17D6 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 000D ÷ 0020 ÷ 17D6 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 000D ÷ 0308 × 17D6 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 000D ÷ 0308 × 17D6 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 000D ÷ 0030 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] DIGIT ZERO (NU) ÷ [0.3]
 × 000D ÷ 0020 ÷ 0030 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 000D ÷ 0308 × 0030 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 0030 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 000D ÷ 0308 × 0030 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 0030 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 000D ÷ 0028 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 000D ÷ 0020 ÷ 0028 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 000D ÷ 0308 × 0028 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 0028 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 000D ÷ 0308 × 0028 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 0028 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 000D ÷ 0025 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] PERCENT SIGN (PO) ÷ [0.3]
 × 000D ÷ 0020 ÷ 0025 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 000D Ã· 0308 Ã· 0025 Ã·     #  Ã\97 [0.3] <CARRIAGE RETURN (CR)> (CR) Ã· [5.02] COMBINING DIAERESIS (CM) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 0025 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 000D Ã· 0308 Ã\97 0025 Ã·     #  Ã\97 [0.3] <CARRIAGE RETURN (CR)> (CR) Ã· [5.02] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 0025 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 000D ÷ 0024 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] DOLLAR SIGN (PR) ÷ [0.3]
 × 000D ÷ 0020 ÷ 0024 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 000D Ã· 0308 Ã· 0024 Ã·     #  Ã\97 [0.3] <CARRIAGE RETURN (CR)> (CR) Ã· [5.02] COMBINING DIAERESIS (CM) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 0024 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 000D Ã· 0308 Ã\97 0024 Ã·     #  Ã\97 [0.3] <CARRIAGE RETURN (CR)> (CR) Ã· [5.02] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 0024 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 000D ÷ 0022 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] QUOTATION MARK (QU) ÷ [0.3]
 × 000D ÷ 0020 ÷ 0022 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 000D ÷ 0308 × 0022 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 0022 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 000D ÷ 0308 × 0022 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 0022 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 000D ÷ 0020 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [0.3]
 × 000D ÷ 0020 × 0020 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 000D ÷ 0308 × 0020 × 0020 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 000D ÷ 0308 × 0020 × 0020 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 000D ÷ 002F ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SOLIDUS (SY) ÷ [0.3]
 × 000D ÷ 0020 × 002F ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 000D ÷ 0308 × 002F ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 000D ÷ 0308 × 0020 × 002F ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 000D ÷ 0308 × 002F ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 000D ÷ 0308 × 0020 × 002F ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 000D ÷ 2060 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] WORD JOINER (WJ) ÷ [0.3]
 × 000D ÷ 0020 × 2060 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 000D ÷ 0308 × 2060 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 000D ÷ 0308 × 0020 × 2060 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 000D ÷ 0308 × 2060 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 000D ÷ 0308 × 0020 × 2060 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 000D ÷ 200B ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 000D ÷ 0020 × 200B ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 000D ÷ 0308 × 200B ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 000D ÷ 0308 × 0020 × 200B ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 000D ÷ 0308 × 200B ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 000D ÷ 0308 × 0020 × 200B ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 000D ÷ 1F1E6 ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 000D ÷ 0020 ÷ 1F1E6 ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 000D ÷ 0308 ÷ 1F1E6 ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 000D ÷ 0308 ÷ 1F1E6 ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 000D ÷ 261D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 000D ÷ 0020 ÷ 261D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 000D ÷ 0308 ÷ 261D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 261D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 000D ÷ 1F3FB ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000D ÷ 0020 ÷ 1F3FB ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000D ÷ 0308 ÷ 1F3FB ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000D ÷ 0001 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 000D ÷ 0020 ÷ 0001 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 000D ÷ 0308 × 0001 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 0001 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 000D ÷ 200D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 000D ÷ 0020 ÷ 200D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 000D ÷ 0308 × 200D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 200D ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 000D ÷ 00A7 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SECTION SIGN (AI_AL) ÷ [0.3]
 × 000D ÷ 0020 ÷ 00A7 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 000D ÷ 0308 × 00A7 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 000D ÷ 0308 × 00A7 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 000D ÷ 50005 ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] <reserved-50005> (XX_AL) ÷ [0.3]
 × 000D ÷ 0020 ÷ 50005 ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 000D ÷ 0308 × 50005 ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 50005 ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 000D ÷ 0308 × 50005 ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 50005 ÷    #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 000D ÷ 0E01 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 000D ÷ 0020 ÷ 0E01 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 000D ÷ 0308 × 0E01 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 000D ÷ 0308 × 0E01 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 000D ÷ 3041 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 000D ÷ 0020 ÷ 3041 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 000D ÷ 0308 × 3041 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 000D ÷ 0308 × 0020 ÷ 3041 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 000D ÷ 0308 × 3041 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 000D ÷ 0308 × 0020 ÷ 3041 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0021 ÷ 0023 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0021 × 0020 ÷ 0023 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0021 × 0308 ÷ 0023 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0021 × 0308 ÷ 0023 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0021 ÷ 2014 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 0021 × 0020 ÷ 2014 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 0021 × 0308 ÷ 2014 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 0021 × 0308 ÷ 2014 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 0021 × 0009 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0021 × 0020 ÷ 0009 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0021 × 0308 × 0009 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0021 × 0308 × 0009 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0021 ÷ 00B4 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0021 × 0020 ÷ 00B4 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0021 × 0308 ÷ 00B4 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0021 × 0308 ÷ 00B4 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0021 × 000B ÷     #  × [0.3] EXCLAMATION MARK (EX) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0021 × 0020 × 000B ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0021 × 0308 × 000B ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0021 × 0308 × 0020 × 000B ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0021 × 0308 × 000B ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0021 × 0308 × 0020 × 000B ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0021 ÷ FFFC ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0021 × 0020 ÷ FFFC ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0021 × 0308 ÷ FFFC ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0021 × 0308 ÷ FFFC ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0021 × 007D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0021 × 0020 × 007D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0021 × 0308 × 007D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0021 × 0308 × 0020 × 007D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0021 × 0308 × 007D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0021 × 0308 × 0020 × 007D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0021 × 0029 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0021 × 0020 × 0029 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0021 × 0308 × 0029 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0021 × 0308 × 0020 × 0029 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0021 × 0001 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0021 × 0020 ÷ 0001 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0021 × 0308 × 0001 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 0021 × 0308 × 0029 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0021 × 0308 × 0020 × 0029 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0021 × 000D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0021 × 0020 × 000D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0021 × 0308 × 000D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0021 × 0308 × 0020 × 000D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0021 × 0308 × 000D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0021 × 0308 × 0020 × 000D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0021 × 0021 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0021 × 0020 × 0021 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0021 × 0308 × 0021 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0021 × 0308 × 0020 × 0021 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0021 × 0308 × 0021 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0021 × 0308 × 0020 × 0021 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0021 × 00A0 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0021 × 0020 ÷ 00A0 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0021 × 0308 × 00A0 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0021 × 0308 × 00A0 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0021 ÷ AC00 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0021 × 0020 ÷ AC00 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0021 × 0308 ÷ AC00 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0021 × 0308 ÷ AC00 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0021 ÷ AC01 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0021 × 0020 ÷ AC01 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0021 × 0308 ÷ AC01 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0021 × 0308 ÷ AC01 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0021 ÷ 05D0 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0021 × 0020 ÷ 05D0 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0021 × 0308 ÷ 05D0 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0021 × 0308 ÷ 05D0 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0021 × 002D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0021 × 0020 ÷ 002D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0021 × 0308 × 002D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0021 × 0308 × 002D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0021 ÷ 231A ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 0021 × 0020 ÷ 231A ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0021 × 0308 ÷ 231A ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0021 × 0308 ÷ 231A ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 0021 × 2024 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [22.02] ONE DOT LEADER (IN) ÷ [0.3]
 × 0021 × 0020 ÷ 2024 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0021 × 0308 × 2024 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [22.02] ONE DOT LEADER (IN) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0021 × 0308 × 2024 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.02] ONE DOT LEADER (IN) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0021 × 002C ÷     #  × [0.3] EXCLAMATION MARK (EX) × [13.02] COMMA (IS) ÷ [0.3]
 × 0021 × 0020 × 002C ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0021 × 0308 × 002C ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 0021 × 0308 × 0020 × 002C ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0021 × 0308 × 002C ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 0021 × 0308 × 0020 × 002C ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0021 ÷ 1100 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0021 × 0020 ÷ 1100 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0021 × 0308 ÷ 1100 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0021 × 0308 ÷ 1100 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0021 ÷ 11A8 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0021 × 0020 ÷ 11A8 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0021 × 0308 ÷ 11A8 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0021 × 0308 ÷ 11A8 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0021 ÷ 1160 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0021 × 0020 ÷ 1160 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0021 × 0308 ÷ 1160 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0021 × 0308 ÷ 1160 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0021 × 000A ÷     #  × [0.3] EXCLAMATION MARK (EX) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0021 × 0020 × 000A ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0021 × 0308 × 000A ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0021 × 0308 × 0020 × 000A ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0021 × 0308 × 000A ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0021 × 0308 × 0020 × 000A ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0021 × 0085 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0021 × 0020 × 0085 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0021 × 0308 × 0085 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0021 × 0308 × 0020 × 0085 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0021 × 0308 × 0085 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0021 × 0308 × 0020 × 0085 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0021 × 17D6 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0021 × 0020 ÷ 17D6 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0021 × 0308 × 17D6 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0021 × 0308 × 17D6 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0021 ÷ 0030 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0021 × 0020 ÷ 0030 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0021 × 0308 ÷ 0030 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0021 × 0308 ÷ 0030 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0021 ÷ 0028 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0021 × 0020 ÷ 0028 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0021 × 0308 ÷ 0028 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0021 × 0308 ÷ 0028 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0021 ÷ 0025 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0021 × 0020 ÷ 0025 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0021 × 0308 ÷ 0025 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0021 × 0308 ÷ 0025 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0021 ÷ 0024 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0021 × 0020 ÷ 0024 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0021 × 0308 ÷ 0024 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0021 × 0308 ÷ 0024 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0021 × 0022 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 0021 × 0020 ÷ 0022 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0021 × 0308 × 0022 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0021 × 0308 × 0022 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0021 × 0020 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [0.3]
 × 0021 × 0020 × 0020 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0021 × 0308 × 0020 × 0020 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0021 × 0308 × 0020 × 0020 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0021 × 002F ÷     #  × [0.3] EXCLAMATION MARK (EX) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0021 × 0020 × 002F ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0021 × 0308 × 002F ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 0021 × 0308 × 0020 × 002F ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0021 × 0308 × 002F ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 0021 × 0308 × 0020 × 002F ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0021 × 2060 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0021 × 0020 × 2060 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0021 × 0308 × 2060 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0021 × 0308 × 0020 × 2060 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0021 × 0308 × 2060 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0021 × 0308 × 0020 × 2060 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0021 × 200B ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0021 × 0020 × 200B ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0021 × 0308 × 200B ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0021 × 0308 × 0020 × 200B ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0021 × 0308 × 200B ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0021 × 0308 × 0020 × 200B ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0021 ÷ 1F1E6 ÷    #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 0021 × 0020 ÷ 1F1E6 ÷    #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0021 × 0308 ÷ 1F1E6 ÷    #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0021 × 0308 ÷ 1F1E6 ÷    #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0021 ÷ 261D ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0021 × 0020 ÷ 261D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0021 × 0308 ÷ 261D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0021 ÷ 1F3FB ÷    #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0021 × 0020 ÷ 1F3FB ÷    #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0021 × 0308 ÷ 1F3FB ÷    #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0021 × 0001 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0021 × 0020 ÷ 0001 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0021 × 0308 × 0001 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0021 × 200D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0021 × 0020 ÷ 200D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0021 × 0308 × 200D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 0021 ÷ 00A7 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0021 × 0020 ÷ 00A7 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0021 × 0308 ÷ 00A7 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0021 × 0308 ÷ 00A7 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0021 ÷ 50005 ÷    #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0021 × 0020 ÷ 50005 ÷    #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0021 × 0308 ÷ 50005 ÷    #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0021 × 0308 ÷ 50005 ÷    #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0021 ÷ 0E01 ÷     #  × [0.3] EXCLAMATION MARK (EX) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0021 × 0020 ÷ 0E01 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0021 × 0308 ÷ 0E01 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0021 × 0308 ÷ 0E01 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0021 × 3041 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0021 × 0020 ÷ 3041 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0021 × 0308 × 3041 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0021 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0021 × 0308 × 3041 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0021 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 00A0 × 0023 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] NUMBER SIGN (AL) ÷ [0.3]
 × 00A0 × 0020 ÷ 0023 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 00A0 × 0308 × 0023 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] NUMBER SIGN (AL) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 00A0 × 0308 × 0023 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] NUMBER SIGN (AL) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 00A0 × 2014 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] EM DASH (B2) ÷ [0.3]
 × 00A0 × 0020 ÷ 2014 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 00A0 × 0308 × 2014 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] EM DASH (B2) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 00A0 × 0308 × 2014 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] EM DASH (B2) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 00A0 × 0009 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 00A0 × 0020 ÷ 0009 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 00A0 × 0308 × 0009 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00A0 × 0308 × 0009 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 00A0 × 00B4 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 00A0 × 0020 ÷ 00B4 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 00A0 × 0308 × 00B4 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 00A0 × 0308 × 00B4 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 00A0 × 000B ÷     #  × [0.3] NO-BREAK SPACE (GL) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 00A0 × 0020 × 000B ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 00A0 × 0308 × 000B ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 00A0 × 0308 × 0020 × 000B ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00A0 × 0308 × 000B ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00A0 × 0308 × 0020 × 000B ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 00A0 × FFFC ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 00A0 × 0020 ÷ FFFC ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 00A0 × 0308 × FFFC ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00A0 × 0308 × FFFC ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 00A0 × 007D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 00A0 × 0020 × 007D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 00A0 × 0308 × 007D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 00A0 × 0308 × 0020 × 007D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00A0 × 0308 × 007D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00A0 × 0308 × 0020 × 007D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 00A0 × 0029 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 00A0 × 0020 × 0029 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 00A0 × 0308 × 0029 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 00A0 × 0308 × 0020 × 0029 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 00A0 × 0001 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 00A0 × 0020 ÷ 0001 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 00A0 × 0308 × 0001 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 00A0 × 0308 × 0029 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 00A0 × 0308 × 0020 × 0029 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 00A0 × 000D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 00A0 × 0020 × 000D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 00A0 × 0308 × 000D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 00A0 × 0308 × 0020 × 000D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00A0 × 0308 × 000D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00A0 × 0308 × 0020 × 000D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 00A0 × 0021 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] EXCLAMATION MARK (EX) ÷ [0.3]
 × 00A0 × 0020 × 0021 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 00A0 × 0308 × 0021 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] EXCLAMATION MARK (EX) ÷ [0.3]
-× 00A0 × 0308 × 0020 × 0021 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00A0 × 0308 × 0021 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00A0 × 0308 × 0020 × 0021 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 00A0 × 00A0 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 00A0 × 0020 ÷ 00A0 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 00A0 × 0308 × 00A0 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00A0 × 0308 × 00A0 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 00A0 × AC00 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 00A0 × 0020 ÷ AC00 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 00A0 × 0308 × AC00 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00A0 × 0308 × AC00 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 00A0 × AC01 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 00A0 × 0020 ÷ AC01 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 00A0 × 0308 × AC01 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00A0 × 0308 × AC01 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 00A0 × 05D0 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 00A0 × 0020 ÷ 05D0 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 00A0 × 0308 × 05D0 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00A0 × 0308 × 05D0 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 00A0 × 002D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 00A0 × 0020 ÷ 002D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 00A0 × 0308 × 002D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00A0 × 0308 × 002D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 00A0 × 231A ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] WATCH (ID) ÷ [0.3]
 × 00A0 × 0020 ÷ 231A ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 00A0 × 0308 × 231A ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] WATCH (ID) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 00A0 × 0308 × 231A ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] WATCH (ID) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 00A0 × 2024 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 00A0 × 0020 ÷ 2024 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 00A0 × 0308 × 2024 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 00A0 × 0308 × 2024 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 00A0 × 002C ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] COMMA (IS) ÷ [0.3]
 × 00A0 × 0020 × 002C ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 00A0 × 0308 × 002C ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] COMMA (IS) ÷ [0.3]
-× 00A0 × 0308 × 0020 × 002C ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 00A0 × 0308 × 002C ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] COMMA (IS) ÷ [0.3]
+× 00A0 × 0308 × 0020 × 002C ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 00A0 × 1100 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 00A0 × 0020 ÷ 1100 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 00A0 × 0308 × 1100 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00A0 × 0308 × 1100 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 00A0 × 11A8 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 00A0 × 0020 ÷ 11A8 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 00A0 × 0308 × 11A8 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00A0 × 0308 × 11A8 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 00A0 × 1160 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 00A0 × 0020 ÷ 1160 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 00A0 × 0308 × 1160 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00A0 × 0308 × 1160 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 00A0 × 000A ÷     #  × [0.3] NO-BREAK SPACE (GL) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 00A0 × 0020 × 000A ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 00A0 × 0308 × 000A ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 00A0 × 0308 × 0020 × 000A ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00A0 × 0308 × 000A ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00A0 × 0308 × 0020 × 000A ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 00A0 × 0085 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 00A0 × 0020 × 0085 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 00A0 × 0308 × 0085 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 00A0 × 0308 × 0020 × 0085 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00A0 × 0308 × 0085 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00A0 × 0308 × 0020 × 0085 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 00A0 × 17D6 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 00A0 × 0020 ÷ 17D6 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 00A0 × 0308 × 17D6 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00A0 × 0308 × 17D6 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 00A0 × 0030 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] DIGIT ZERO (NU) ÷ [0.3]
 × 00A0 × 0020 ÷ 0030 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 00A0 × 0308 × 0030 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] DIGIT ZERO (NU) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 00A0 × 0308 × 0030 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] DIGIT ZERO (NU) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 00A0 × 0028 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 00A0 × 0020 ÷ 0028 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 00A0 × 0308 × 0028 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 00A0 × 0308 × 0028 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 00A0 × 0025 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] PERCENT SIGN (PO) ÷ [0.3]
 × 00A0 × 0020 ÷ 0025 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 00A0 × 0308 × 0025 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] PERCENT SIGN (PO) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 00A0 × 0308 × 0025 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] PERCENT SIGN (PO) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 00A0 × 0024 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 00A0 × 0020 ÷ 0024 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 00A0 × 0308 × 0024 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 00A0 × 0308 × 0024 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 00A0 × 0022 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] QUOTATION MARK (QU) ÷ [0.3]
 × 00A0 × 0020 ÷ 0022 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 00A0 × 0308 × 0022 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] QUOTATION MARK (QU) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 00A0 × 0308 × 0022 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] QUOTATION MARK (QU) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 00A0 × 0020 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [0.3]
 × 00A0 × 0020 × 0020 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 00A0 × 0308 × 0020 × 0020 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 00A0 × 0308 × 0020 × 0020 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 00A0 × 002F ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] SOLIDUS (SY) ÷ [0.3]
 × 00A0 × 0020 × 002F ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 00A0 × 0308 × 002F ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] SOLIDUS (SY) ÷ [0.3]
-× 00A0 × 0308 × 0020 × 002F ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 00A0 × 0308 × 002F ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] SOLIDUS (SY) ÷ [0.3]
+× 00A0 × 0308 × 0020 × 002F ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 00A0 × 2060 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 00A0 × 0020 × 2060 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 00A0 × 0308 × 2060 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 00A0 × 0308 × 0020 × 2060 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00A0 × 0308 × 2060 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00A0 × 0308 × 0020 × 2060 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 00A0 × 200B ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 00A0 × 0020 × 200B ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 00A0 × 0308 × 200B ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 00A0 × 0308 × 0020 × 200B ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00A0 × 0308 × 200B ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00A0 × 0308 × 0020 × 200B ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 00A0 × 1F1E6 ÷    #  × [0.3] NO-BREAK SPACE (GL) × [12.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 00A0 × 0020 ÷ 1F1E6 ÷    #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 00A0 × 0308 × 1F1E6 ÷    #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00A0 × 0308 × 1F1E6 ÷    #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00A0 × 261D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00A0 × 0020 ÷ 261D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00A0 × 0308 × 261D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00A0 × 1F3FB ÷    #  × [0.3] NO-BREAK SPACE (GL) × [12.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00A0 × 0020 ÷ 1F3FB ÷    #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00A0 × 0308 × 1F3FB ÷    #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00A0 × 0001 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00A0 × 0020 ÷ 0001 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00A0 × 0308 × 0001 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00A0 × 200D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00A0 × 0020 ÷ 200D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00A0 × 0308 × 200D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 00A0 × 00A7 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 00A0 × 0020 ÷ 00A7 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 00A0 × 0308 × 00A7 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00A0 × 0308 × 00A7 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 00A0 × 50005 ÷    #  × [0.3] NO-BREAK SPACE (GL) × [12.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 00A0 × 0020 ÷ 50005 ÷    #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 00A0 × 0308 × 50005 ÷    #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00A0 × 0308 × 50005 ÷    #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 00A0 × 0E01 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 00A0 × 0020 ÷ 0E01 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 00A0 × 0308 × 0E01 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00A0 × 0308 × 0E01 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 00A0 × 3041 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [12.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 00A0 × 0020 ÷ 3041 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 00A0 × 0308 × 3041 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [12.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 00A0 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00A0 × 0308 × 3041 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00A0 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] NO-BREAK SPACE (GL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × AC00 ÷ 0023 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × AC00 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× AC00 × 0308 ÷ 0023 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× AC00 × 0308 ÷ 0023 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × AC00 ÷ 2014 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × AC00 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× AC00 × 0308 ÷ 2014 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× AC00 × 0308 ÷ 2014 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × AC00 × 0009 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × AC00 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× AC00 × 0308 × 0009 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× AC00 × 0308 × 0009 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × AC00 ÷ 00B4 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × AC00 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× AC00 × 0308 ÷ 00B4 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× AC00 × 0308 ÷ 00B4 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × AC00 × 000B ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × AC00 × 0020 × 000B ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× AC00 × 0308 × 000B ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× AC00 × 0308 × 0020 × 000B ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× AC00 × 0308 × 000B ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× AC00 × 0308 × 0020 × 000B ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × AC00 ÷ FFFC ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × AC00 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× AC00 × 0308 ÷ FFFC ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× AC00 × 0308 ÷ FFFC ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × AC00 × 007D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × AC00 × 0020 × 007D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× AC00 × 0308 × 007D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× AC00 × 0308 × 0020 × 007D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× AC00 × 0308 × 007D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× AC00 × 0308 × 0020 × 007D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × AC00 × 0029 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × AC00 × 0020 × 0029 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× AC00 × 0308 × 0029 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× AC00 × 0308 × 0020 × 0029 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× AC00 × 0001 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× AC00 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× AC00 × 0308 × 0001 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× AC00 × 0308 × 0029 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× AC00 × 0308 × 0020 × 0029 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × AC00 × 000D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × AC00 × 0020 × 000D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× AC00 × 0308 × 000D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× AC00 × 0308 × 0020 × 000D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× AC00 × 0308 × 000D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× AC00 × 0308 × 0020 × 000D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × AC00 × 0021 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × AC00 × 0020 × 0021 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× AC00 × 0308 × 0021 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× AC00 × 0308 × 0020 × 0021 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× AC00 × 0308 × 0021 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× AC00 × 0308 × 0020 × 0021 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × AC00 × 00A0 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × AC00 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× AC00 × 0308 × 00A0 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× AC00 × 0308 × 00A0 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × AC00 ÷ AC00 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × AC00 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× AC00 × 0308 ÷ AC00 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× AC00 × 0308 ÷ AC00 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × AC00 ÷ AC01 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × AC00 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× AC00 × 0308 ÷ AC01 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× AC00 × 0308 ÷ AC01 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × AC00 ÷ 05D0 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × AC00 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× AC00 × 0308 ÷ 05D0 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× AC00 × 0308 ÷ 05D0 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × AC00 × 002D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × AC00 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× AC00 × 0308 × 002D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× AC00 × 0308 × 002D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × AC00 ÷ 231A ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × AC00 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× AC00 × 0308 ÷ 231A ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× AC00 × 0308 ÷ 231A ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × AC00 × 2024 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
 × AC00 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× AC00 × 0308 × 2024 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× AC00 × 0308 × 2024 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × AC00 × 002C ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [13.02] COMMA (IS) ÷ [0.3]
 × AC00 × 0020 × 002C ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× AC00 × 0308 × 002C ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× AC00 × 0308 × 0020 × 002C ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× AC00 × 0308 × 002C ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× AC00 × 0308 × 0020 × 002C ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × AC00 ÷ 1100 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × AC00 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× AC00 × 0308 ÷ 1100 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× AC00 × 0308 ÷ 1100 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × AC00 × 11A8 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [26.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × AC00 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× AC00 × 0308 × 11A8 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [26.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× AC00 × 0308 × 11A8 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [26.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × AC00 × 1160 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [26.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × AC00 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× AC00 × 0308 × 1160 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [26.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× AC00 × 0308 × 1160 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [26.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × AC00 × 000A ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × AC00 × 0020 × 000A ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× AC00 × 0308 × 000A ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× AC00 × 0308 × 0020 × 000A ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× AC00 × 0308 × 000A ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× AC00 × 0308 × 0020 × 000A ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × AC00 × 0085 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × AC00 × 0020 × 0085 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× AC00 × 0308 × 0085 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× AC00 × 0308 × 0020 × 0085 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× AC00 × 0308 × 0085 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× AC00 × 0308 × 0020 × 0085 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × AC00 × 17D6 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × AC00 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× AC00 × 0308 × 17D6 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× AC00 × 0308 × 17D6 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × AC00 ÷ 0030 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × AC00 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× AC00 × 0308 ÷ 0030 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× AC00 × 0308 ÷ 0030 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × AC00 ÷ 0028 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × AC00 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× AC00 × 0308 ÷ 0028 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× AC00 × 0308 ÷ 0028 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × AC00 × 0025 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
 × AC00 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× AC00 × 0308 × 0025 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× AC00 × 0308 × 0025 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × AC00 ÷ 0024 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × AC00 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× AC00 × 0308 ÷ 0024 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× AC00 × 0308 ÷ 0024 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × AC00 × 0022 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × AC00 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× AC00 × 0308 × 0022 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× AC00 × 0308 × 0022 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × AC00 × 0020 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [0.3]
 × AC00 × 0020 × 0020 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× AC00 × 0308 × 0020 × 0020 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× AC00 × 0308 × 0020 × 0020 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × AC00 × 002F ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × AC00 × 0020 × 002F ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× AC00 × 0308 × 002F ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× AC00 × 0308 × 0020 × 002F ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× AC00 × 0308 × 002F ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× AC00 × 0308 × 0020 × 002F ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × AC00 × 2060 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × AC00 × 0020 × 2060 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× AC00 × 0308 × 2060 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× AC00 × 0308 × 0020 × 2060 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× AC00 × 0308 × 2060 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× AC00 × 0308 × 0020 × 2060 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × AC00 × 200B ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × AC00 × 0020 × 200B ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× AC00 × 0308 × 200B ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× AC00 × 0308 × 0020 × 200B ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× AC00 × 0308 × 200B ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× AC00 × 0308 × 0020 × 200B ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × AC00 ÷ 1F1E6 ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × AC00 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× AC00 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× AC00 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× AC00 ÷ 261D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× AC00 × 0020 ÷ 261D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× AC00 × 0308 ÷ 261D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× AC00 ÷ 1F3FB ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× AC00 × 0020 ÷ 1F3FB ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× AC00 × 0308 ÷ 1F3FB ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× AC00 × 0001 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× AC00 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× AC00 × 0308 × 0001 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× AC00 × 200D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× AC00 × 0020 ÷ 200D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× AC00 × 0308 × 200D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × AC00 ÷ 00A7 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × AC00 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× AC00 × 0308 ÷ 00A7 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× AC00 × 0308 ÷ 00A7 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × AC00 ÷ 50005 ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × AC00 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× AC00 × 0308 ÷ 50005 ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× AC00 × 0308 ÷ 50005 ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × AC00 ÷ 0E01 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × AC00 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× AC00 × 0308 ÷ 0E01 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× AC00 × 0308 ÷ 0E01 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × AC00 × 3041 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × AC00 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× AC00 × 0308 × 3041 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× AC00 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× AC00 × 0308 × 3041 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× AC00 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL SYLLABLE GA (H2) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × AC01 ÷ 0023 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × AC01 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× AC01 × 0308 ÷ 0023 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× AC01 × 0308 ÷ 0023 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × AC01 ÷ 2014 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × AC01 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× AC01 × 0308 ÷ 2014 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× AC01 × 0308 ÷ 2014 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × AC01 × 0009 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × AC01 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× AC01 × 0308 × 0009 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× AC01 × 0308 × 0009 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × AC01 ÷ 00B4 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × AC01 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× AC01 × 0308 ÷ 00B4 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× AC01 × 0308 ÷ 00B4 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × AC01 × 000B ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × AC01 × 0020 × 000B ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× AC01 × 0308 × 000B ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× AC01 × 0308 × 0020 × 000B ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× AC01 × 0308 × 000B ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× AC01 × 0308 × 0020 × 000B ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × AC01 ÷ FFFC ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × AC01 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× AC01 × 0308 ÷ FFFC ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× AC01 × 0308 ÷ FFFC ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × AC01 × 007D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × AC01 × 0020 × 007D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× AC01 × 0308 × 007D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× AC01 × 0308 × 0020 × 007D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× AC01 × 0308 × 007D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× AC01 × 0308 × 0020 × 007D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × AC01 × 0029 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × AC01 × 0020 × 0029 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× AC01 × 0308 × 0029 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× AC01 × 0308 × 0020 × 0029 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× AC01 × 0001 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× AC01 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× AC01 × 0308 × 0001 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× AC01 × 0308 × 0029 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× AC01 × 0308 × 0020 × 0029 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × AC01 × 000D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × AC01 × 0020 × 000D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× AC01 × 0308 × 000D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× AC01 × 0308 × 0020 × 000D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× AC01 × 0308 × 000D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× AC01 × 0308 × 0020 × 000D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × AC01 × 0021 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × AC01 × 0020 × 0021 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× AC01 × 0308 × 0021 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× AC01 × 0308 × 0020 × 0021 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× AC01 × 0308 × 0021 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× AC01 × 0308 × 0020 × 0021 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × AC01 × 00A0 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × AC01 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× AC01 × 0308 × 00A0 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× AC01 × 0308 × 00A0 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × AC01 ÷ AC00 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × AC01 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× AC01 × 0308 ÷ AC00 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× AC01 × 0308 ÷ AC00 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × AC01 ÷ AC01 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × AC01 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× AC01 × 0308 ÷ AC01 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× AC01 × 0308 ÷ AC01 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × AC01 ÷ 05D0 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × AC01 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× AC01 × 0308 ÷ 05D0 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× AC01 × 0308 ÷ 05D0 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × AC01 × 002D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × AC01 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× AC01 × 0308 × 002D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× AC01 × 0308 × 002D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × AC01 ÷ 231A ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × AC01 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× AC01 × 0308 ÷ 231A ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× AC01 × 0308 ÷ 231A ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × AC01 × 2024 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
 × AC01 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× AC01 × 0308 × 2024 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× AC01 × 0308 × 2024 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × AC01 × 002C ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [13.02] COMMA (IS) ÷ [0.3]
 × AC01 × 0020 × 002C ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× AC01 × 0308 × 002C ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× AC01 × 0308 × 0020 × 002C ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× AC01 × 0308 × 002C ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× AC01 × 0308 × 0020 × 002C ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × AC01 ÷ 1100 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × AC01 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× AC01 × 0308 ÷ 1100 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× AC01 × 0308 ÷ 1100 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × AC01 × 11A8 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [26.03] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × AC01 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× AC01 × 0308 × 11A8 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [26.03] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× AC01 × 0308 × 11A8 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [26.03] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × AC01 ÷ 1160 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × AC01 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× AC01 × 0308 ÷ 1160 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× AC01 × 0308 ÷ 1160 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × AC01 × 000A ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × AC01 × 0020 × 000A ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× AC01 × 0308 × 000A ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× AC01 × 0308 × 0020 × 000A ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× AC01 × 0308 × 000A ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× AC01 × 0308 × 0020 × 000A ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × AC01 × 0085 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × AC01 × 0020 × 0085 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× AC01 × 0308 × 0085 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× AC01 × 0308 × 0020 × 0085 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× AC01 × 0308 × 0085 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× AC01 × 0308 × 0020 × 0085 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × AC01 × 17D6 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × AC01 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× AC01 × 0308 × 17D6 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× AC01 × 0308 × 17D6 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × AC01 ÷ 0030 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × AC01 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× AC01 × 0308 ÷ 0030 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× AC01 × 0308 ÷ 0030 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × AC01 ÷ 0028 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × AC01 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× AC01 × 0308 ÷ 0028 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× AC01 × 0308 ÷ 0028 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × AC01 × 0025 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
 × AC01 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× AC01 × 0308 × 0025 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× AC01 × 0308 × 0025 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × AC01 ÷ 0024 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × AC01 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× AC01 × 0308 ÷ 0024 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× AC01 × 0308 ÷ 0024 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × AC01 × 0022 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × AC01 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× AC01 × 0308 × 0022 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× AC01 × 0308 × 0022 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × AC01 × 0020 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [0.3]
 × AC01 × 0020 × 0020 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× AC01 × 0308 × 0020 × 0020 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× AC01 × 0308 × 0020 × 0020 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × AC01 × 002F ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × AC01 × 0020 × 002F ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× AC01 × 0308 × 002F ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× AC01 × 0308 × 0020 × 002F ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× AC01 × 0308 × 002F ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× AC01 × 0308 × 0020 × 002F ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × AC01 × 2060 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × AC01 × 0020 × 2060 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× AC01 × 0308 × 2060 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× AC01 × 0308 × 0020 × 2060 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× AC01 × 0308 × 2060 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× AC01 × 0308 × 0020 × 2060 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × AC01 × 200B ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × AC01 × 0020 × 200B ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× AC01 × 0308 × 200B ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× AC01 × 0308 × 0020 × 200B ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× AC01 × 0308 × 200B ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× AC01 × 0308 × 0020 × 200B ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × AC01 ÷ 1F1E6 ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × AC01 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× AC01 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× AC01 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× AC01 ÷ 261D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× AC01 × 0020 ÷ 261D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× AC01 × 0308 ÷ 261D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× AC01 ÷ 1F3FB ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× AC01 × 0020 ÷ 1F3FB ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× AC01 × 0308 ÷ 1F3FB ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× AC01 × 0001 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× AC01 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× AC01 × 0308 × 0001 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× AC01 × 200D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× AC01 × 0020 ÷ 200D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× AC01 × 0308 × 200D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × AC01 ÷ 00A7 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × AC01 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× AC01 × 0308 ÷ 00A7 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× AC01 × 0308 ÷ 00A7 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × AC01 ÷ 50005 ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × AC01 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× AC01 × 0308 ÷ 50005 ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× AC01 × 0308 ÷ 50005 ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × AC01 ÷ 0E01 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × AC01 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× AC01 × 0308 ÷ 0E01 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× AC01 × 0308 ÷ 0E01 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × AC01 × 3041 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × AC01 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× AC01 × 0308 × 3041 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× AC01 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× AC01 × 0308 × 3041 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× AC01 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL SYLLABLE GAG (H3) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 05D0 × 0023 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
 × 05D0 × 0020 ÷ 0023 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 05D0 × 0308 × 0023 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 05D0 × 0308 × 0023 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 05D0 ÷ 2014 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 05D0 × 0020 ÷ 2014 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 05D0 × 0308 ÷ 2014 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 05D0 × 0308 ÷ 2014 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 05D0 × 0009 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 05D0 × 0020 ÷ 0009 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 05D0 × 0308 × 0009 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 05D0 × 0308 × 0009 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 05D0 ÷ 00B4 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 05D0 × 0020 ÷ 00B4 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 05D0 × 0308 ÷ 00B4 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 05D0 × 0308 ÷ 00B4 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 05D0 × 000B ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 05D0 × 0020 × 000B ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 05D0 × 0308 × 000B ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 05D0 × 0308 × 0020 × 000B ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 05D0 × 0308 × 000B ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 05D0 × 0308 × 0020 × 000B ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 05D0 ÷ FFFC ÷     #  × [0.3] HEBREW LETTER ALEF (HL) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 05D0 × 0020 ÷ FFFC ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 05D0 × 0308 ÷ FFFC ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 05D0 × 0308 ÷ FFFC ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 05D0 × 007D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 05D0 × 0020 × 007D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 05D0 × 0308 × 007D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 05D0 × 0308 × 0020 × 007D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 05D0 × 0308 × 007D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 05D0 × 0308 × 0020 × 007D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 05D0 × 0029 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 05D0 × 0020 × 0029 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 05D0 × 0308 × 0029 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 05D0 × 0308 × 0020 × 0029 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 05D0 × 0001 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 05D0 × 0020 ÷ 0001 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 05D0 × 0308 × 0001 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 05D0 × 0308 × 0029 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 05D0 × 0308 × 0020 × 0029 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 05D0 × 000D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 05D0 × 0020 × 000D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 05D0 × 0308 × 000D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 05D0 × 0308 × 0020 × 000D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 05D0 × 0308 × 000D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 05D0 × 0308 × 0020 × 000D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 05D0 × 0021 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 05D0 × 0020 × 0021 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 05D0 × 0308 × 0021 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 05D0 × 0308 × 0020 × 0021 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 05D0 × 0308 × 0021 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 05D0 × 0308 × 0020 × 0021 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 05D0 × 00A0 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 05D0 × 0020 ÷ 00A0 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 05D0 × 0308 × 00A0 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 05D0 × 0308 × 00A0 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 05D0 ÷ AC00 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 05D0 × 0020 ÷ AC00 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 05D0 × 0308 ÷ AC00 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 05D0 × 0308 ÷ AC00 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 05D0 ÷ AC01 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 05D0 × 0020 ÷ AC01 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 05D0 × 0308 ÷ AC01 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 05D0 × 0308 ÷ AC01 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 05D0 × 05D0 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 05D0 × 0020 ÷ 05D0 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 05D0 × 0308 × 05D0 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 05D0 × 0308 × 05D0 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 05D0 × 002D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 05D0 × 0020 ÷ 002D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 05D0 × 0308 × 002D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 05D0 × 0308 × 002D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 05D0 ÷ 231A ÷     #  × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 05D0 × 0020 ÷ 231A ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 05D0 × 0308 ÷ 231A ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 05D0 × 0308 ÷ 231A ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 05D0 × 2024 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
 × 05D0 × 0020 ÷ 2024 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 05D0 × 0308 × 2024 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 05D0 × 0308 × 2024 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 05D0 × 002C ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [13.02] COMMA (IS) ÷ [0.3]
 × 05D0 × 0020 × 002C ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 05D0 × 0308 × 002C ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 05D0 × 0308 × 0020 × 002C ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 05D0 × 0308 × 002C ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 05D0 × 0308 × 0020 × 002C ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 05D0 ÷ 1100 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 05D0 × 0020 ÷ 1100 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 05D0 × 0308 ÷ 1100 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 05D0 × 0308 ÷ 1100 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 05D0 ÷ 11A8 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 05D0 × 0020 ÷ 11A8 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 05D0 × 0308 ÷ 11A8 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 05D0 × 0308 ÷ 11A8 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 05D0 ÷ 1160 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 05D0 × 0020 ÷ 1160 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 05D0 × 0308 ÷ 1160 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 05D0 × 0308 ÷ 1160 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 05D0 × 000A ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 05D0 × 0020 × 000A ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 05D0 × 0308 × 000A ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 05D0 × 0308 × 0020 × 000A ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 05D0 × 0308 × 000A ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 05D0 × 0308 × 0020 × 000A ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 05D0 × 0085 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 05D0 × 0020 × 0085 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 05D0 × 0308 × 0085 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 05D0 × 0308 × 0020 × 0085 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 05D0 × 0308 × 0085 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 05D0 × 0308 × 0020 × 0085 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 05D0 × 17D6 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 05D0 × 0020 ÷ 17D6 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 05D0 × 0308 × 17D6 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 05D0 × 0308 × 17D6 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 05D0 × 0030 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
 × 05D0 × 0020 ÷ 0030 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 05D0 × 0308 × 0030 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 05D0 × 0308 × 0030 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 05D0 × 0028 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 05D0 × 0020 ÷ 0028 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 05D0 × 0308 × 0028 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
\97 05D0 Ã· 0025 Ã·     #  Ã\97 [0.3] HEBREW LETTER ALEF (HL) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 05D0 × 0308 × 0028 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
\97 05D0 Ã\97 0025 Ã·     #  Ã\97 [0.3] HEBREW LETTER ALEF (HL) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
 × 05D0 × 0020 ÷ 0025 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 05D0 Ã\97 0308 Ã· 0025 Ã·     #  Ã\97 [0.3] HEBREW LETTER ALEF (HL) Ã\97 [9.0] COMBINING DIAERESIS (CM) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 05D0 Ã· 0024 Ã·     #  Ã\97 [0.3] HEBREW LETTER ALEF (HL) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 05D0 Ã\97 0308 Ã\97 0025 Ã·     #  Ã\97 [0.3] HEBREW LETTER ALEF (HL) Ã\97 [9.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 05D0 Ã\97 0024 Ã·     #  Ã\97 [0.3] HEBREW LETTER ALEF (HL) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
 × 05D0 × 0020 ÷ 0024 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 05D0 Ã\97 0308 Ã· 0024 Ã·     #  Ã\97 [0.3] HEBREW LETTER ALEF (HL) Ã\97 [9.0] COMBINING DIAERESIS (CM) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 05D0 Ã\97 0308 Ã\97 0024 Ã·     #  Ã\97 [0.3] HEBREW LETTER ALEF (HL) Ã\97 [9.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 05D0 × 0022 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 05D0 × 0020 ÷ 0022 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 05D0 × 0308 × 0022 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 05D0 × 0308 × 0022 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 05D0 × 0020 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [0.3]
 × 05D0 × 0020 × 0020 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 05D0 × 0308 × 0020 × 0020 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 05D0 × 0308 × 0020 × 0020 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 05D0 × 002F ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 05D0 × 0020 × 002F ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 05D0 × 0308 × 002F ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 05D0 × 0308 × 0020 × 002F ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 05D0 × 0308 × 002F ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 05D0 × 0308 × 0020 × 002F ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 05D0 × 2060 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 05D0 × 0020 × 2060 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 05D0 × 0308 × 2060 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 05D0 × 0308 × 0020 × 2060 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 05D0 × 0308 × 2060 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 05D0 × 0308 × 0020 × 2060 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 05D0 × 200B ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 05D0 × 0020 × 200B ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 05D0 × 0308 × 200B ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 05D0 × 0308 × 0020 × 200B ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 05D0 × 0308 × 200B ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 05D0 × 0308 × 0020 × 200B ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 05D0 ÷ 1F1E6 ÷    #  × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 05D0 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 05D0 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 05D0 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 05D0 ÷ 261D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 05D0 × 0020 ÷ 261D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 05D0 × 0308 ÷ 261D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 05D0 ÷ 1F3FB ÷    #  × [0.3] HEBREW LETTER ALEF (HL) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 05D0 × 0020 ÷ 1F3FB ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 05D0 × 0308 ÷ 1F3FB ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 05D0 × 0001 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 05D0 × 0020 ÷ 0001 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 05D0 × 0308 × 0001 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 05D0 × 200D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 05D0 × 0020 ÷ 200D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 05D0 × 0308 × 200D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 05D0 × 00A7 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 05D0 × 0020 ÷ 00A7 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 05D0 × 0308 × 00A7 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 05D0 × 0308 × 00A7 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 05D0 × 50005 ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 05D0 × 0020 ÷ 50005 ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 05D0 × 0308 × 50005 ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 05D0 × 0308 × 50005 ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 05D0 × 0E01 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 05D0 × 0020 ÷ 0E01 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 05D0 × 0308 × 0E01 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 05D0 × 0308 × 0E01 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 05D0 × 3041 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 05D0 × 0020 ÷ 3041 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 05D0 × 0308 × 3041 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 05D0 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 05D0 × 0308 × 3041 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 05D0 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 002D ÷ 0023 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 002D × 0020 ÷ 0023 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 002D × 0308 ÷ 0023 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 002D × 0308 ÷ 0023 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 002D ÷ 2014 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 002D × 0020 ÷ 2014 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 002D × 0308 ÷ 2014 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 002D × 0308 ÷ 2014 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 002D × 0009 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 002D × 0020 ÷ 0009 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 002D × 0308 × 0009 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 002D × 0308 × 0009 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 002D ÷ 00B4 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 002D × 0020 ÷ 00B4 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 002D × 0308 ÷ 00B4 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 002D × 0308 ÷ 00B4 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 002D × 000B ÷     #  × [0.3] HYPHEN-MINUS (HY) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 002D × 0020 × 000B ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 002D × 0308 × 000B ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 002D × 0308 × 0020 × 000B ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 002D × 0308 × 000B ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 002D × 0308 × 0020 × 000B ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 002D ÷ FFFC ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 002D × 0020 ÷ FFFC ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 002D × 0308 ÷ FFFC ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 002D × 0308 ÷ FFFC ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 002D × 007D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 002D × 0020 × 007D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 002D × 0308 × 007D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 002D × 0308 × 0020 × 007D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 002D × 0308 × 007D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 002D × 0308 × 0020 × 007D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 002D × 0029 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 002D × 0020 × 0029 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 002D × 0308 × 0029 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 002D × 0308 × 0020 × 0029 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 002D × 0001 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 002D × 0020 ÷ 0001 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 002D × 0308 × 0001 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 002D × 0308 × 0029 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 002D × 0308 × 0020 × 0029 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 002D × 000D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 002D × 0020 × 000D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 002D × 0308 × 000D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 002D × 0308 × 0020 × 000D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 002D × 0308 × 000D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 002D × 0308 × 0020 × 000D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 002D × 0021 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 002D × 0020 × 0021 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 002D × 0308 × 0021 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 002D × 0308 × 0020 × 0021 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 002D × 0308 × 0021 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 002D × 0308 × 0020 × 0021 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 002D ÷ 00A0 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 002D × 0020 ÷ 00A0 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 002D × 0308 ÷ 00A0 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 002D × 0308 ÷ 00A0 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 002D ÷ AC00 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 002D × 0020 ÷ AC00 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 002D × 0308 ÷ AC00 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 002D × 0308 ÷ AC00 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 002D ÷ AC01 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 002D × 0020 ÷ AC01 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 002D × 0308 ÷ AC01 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 002D × 0308 ÷ AC01 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 002D ÷ 05D0 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 002D × 0020 ÷ 05D0 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 002D × 0308 ÷ 05D0 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 002D × 0308 ÷ 05D0 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 002D × 002D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 002D × 0020 ÷ 002D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 002D × 0308 × 002D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 002D × 0308 × 002D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 002D ÷ 231A ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 002D × 0020 ÷ 231A ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 002D × 0308 ÷ 231A ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 002D × 0308 ÷ 231A ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 002D ÷ 2024 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 002D × 0020 ÷ 2024 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 002D × 0308 ÷ 2024 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 002D × 0308 ÷ 2024 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 002D × 002C ÷     #  × [0.3] HYPHEN-MINUS (HY) × [13.02] COMMA (IS) ÷ [0.3]
 × 002D × 0020 × 002C ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 002D × 0308 × 002C ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 002D × 0308 × 0020 × 002C ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 002D × 0308 × 002C ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 002D × 0308 × 0020 × 002C ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 002D ÷ 1100 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 002D × 0020 ÷ 1100 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 002D × 0308 ÷ 1100 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 002D × 0308 ÷ 1100 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 002D ÷ 11A8 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 002D × 0020 ÷ 11A8 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 002D × 0308 ÷ 11A8 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 002D × 0308 ÷ 11A8 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 002D ÷ 1160 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 002D × 0020 ÷ 1160 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 002D × 0308 ÷ 1160 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 002D × 0308 ÷ 1160 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 002D × 000A ÷     #  × [0.3] HYPHEN-MINUS (HY) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 002D × 0020 × 000A ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 002D × 0308 × 000A ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 002D × 0308 × 0020 × 000A ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 002D × 0308 × 000A ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 002D × 0308 × 0020 × 000A ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 002D × 0085 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 002D × 0020 × 0085 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 002D × 0308 × 0085 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 002D × 0308 × 0020 × 0085 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 002D × 0308 × 0085 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 002D × 0308 × 0020 × 0085 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 002D × 17D6 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 002D × 0020 ÷ 17D6 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 002D × 0308 × 17D6 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 002D × 0308 × 17D6 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 002D × 0030 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [25.02] DIGIT ZERO (NU) ÷ [0.3]
 × 002D × 0020 ÷ 0030 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 002D × 0308 × 0030 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [25.02] DIGIT ZERO (NU) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 002D × 0308 × 0030 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [25.02] DIGIT ZERO (NU) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 002D ÷ 0028 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 002D × 0020 ÷ 0028 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 002D × 0308 ÷ 0028 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 002D × 0308 ÷ 0028 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 002D ÷ 0025 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 002D × 0020 ÷ 0025 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 002D × 0308 ÷ 0025 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 002D × 0308 ÷ 0025 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 002D ÷ 0024 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 002D × 0020 ÷ 0024 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 002D × 0308 ÷ 0024 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 002D × 0308 ÷ 0024 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 002D × 0022 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 002D × 0020 ÷ 0022 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 002D × 0308 × 0022 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 002D × 0308 × 0022 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 002D × 0020 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [0.3]
 × 002D × 0020 × 0020 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 002D × 0308 × 0020 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 002D × 0308 × 0020 × 0020 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 002D × 0308 × 0020 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 002D × 0308 × 0020 × 0020 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 002D × 002F ÷     #  × [0.3] HYPHEN-MINUS (HY) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 002D × 0020 × 002F ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 002D × 0308 × 002F ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 002D × 0308 × 0020 × 002F ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 002D × 0308 × 002F ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 002D × 0308 × 0020 × 002F ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 002D × 2060 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 002D × 0020 × 2060 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 002D × 0308 × 2060 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 002D × 0308 × 0020 × 2060 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 002D × 0308 × 2060 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 002D × 0308 × 0020 × 2060 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 002D × 200B ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 002D × 0020 × 200B ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 002D × 0308 × 200B ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 002D × 0308 × 0020 × 200B ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 002D × 0308 × 200B ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 002D × 0308 × 0020 × 200B ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 002D ÷ 1F1E6 ÷    #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 002D × 0020 ÷ 1F1E6 ÷    #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 002D × 0308 ÷ 1F1E6 ÷    #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 002D × 0308 ÷ 1F1E6 ÷    #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 002D ÷ 261D ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 002D × 0020 ÷ 261D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 002D × 0308 ÷ 261D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 261D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 002D ÷ 1F3FB ÷    #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002D × 0020 ÷ 1F3FB ÷    #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002D × 0308 ÷ 1F3FB ÷    #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002D × 0001 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 002D × 0020 ÷ 0001 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 002D × 0308 × 0001 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 002D × 200D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 002D × 0020 ÷ 200D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 002D × 0308 × 200D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 200D ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 002D ÷ 00A7 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 002D × 0020 ÷ 00A7 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 002D × 0308 ÷ 00A7 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 002D × 0308 ÷ 00A7 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 002D ÷ 50005 ÷    #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 002D × 0020 ÷ 50005 ÷    #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 002D × 0308 ÷ 50005 ÷    #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 002D × 0308 ÷ 50005 ÷    #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 002D ÷ 0E01 ÷     #  × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 002D × 0020 ÷ 0E01 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 002D × 0308 ÷ 0E01 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 002D × 0308 ÷ 0E01 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 002D × 3041 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 002D × 0020 ÷ 3041 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 002D × 0308 × 3041 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 002D × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 002D × 0308 × 3041 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 002D × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HYPHEN-MINUS (HY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 231A ÷ 0023 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 231A × 0020 ÷ 0023 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 231A × 0308 ÷ 0023 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 231A × 0308 ÷ 0023 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 231A ÷ 2014 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 231A × 0020 ÷ 2014 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 231A × 0308 ÷ 2014 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 231A × 0308 ÷ 2014 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 231A × 0009 ÷     #  × [0.3] WATCH (ID) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 231A × 0020 ÷ 0009 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 231A × 0308 × 0009 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 231A × 0308 × 0009 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 231A ÷ 00B4 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 231A × 0020 ÷ 00B4 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 231A × 0308 ÷ 00B4 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 231A × 0308 ÷ 00B4 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 231A × 000B ÷     #  × [0.3] WATCH (ID) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 231A × 0020 × 000B ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 231A × 0308 × 000B ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 231A × 0308 × 0020 × 000B ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 231A × 0308 × 000B ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 231A × 0308 × 0020 × 000B ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 231A ÷ FFFC ÷     #  × [0.3] WATCH (ID) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 231A × 0020 ÷ FFFC ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 231A × 0308 ÷ FFFC ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 231A × 0308 ÷ FFFC ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 231A × 007D ÷     #  × [0.3] WATCH (ID) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 231A × 0020 × 007D ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 231A × 0308 × 007D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 231A × 0308 × 0020 × 007D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 231A × 0308 × 007D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 231A × 0308 × 0020 × 007D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 231A × 0029 ÷     #  × [0.3] WATCH (ID) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 231A × 0020 × 0029 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 231A × 0308 × 0029 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 231A × 0308 × 0020 × 0029 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 231A × 0001 ÷     #  × [0.3] WATCH (ID) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 231A × 0020 ÷ 0001 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 231A × 0308 × 0001 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 231A × 0308 × 0029 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 231A × 0308 × 0020 × 0029 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 231A × 000D ÷     #  × [0.3] WATCH (ID) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 231A × 0020 × 000D ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 231A × 0308 × 000D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 231A × 0308 × 0020 × 000D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 231A × 0308 × 000D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 231A × 0308 × 0020 × 000D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 231A × 0021 ÷     #  × [0.3] WATCH (ID) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 231A × 0020 × 0021 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 231A × 0308 × 0021 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 231A × 0308 × 0020 × 0021 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 231A × 0308 × 0021 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 231A × 0308 × 0020 × 0021 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 231A × 00A0 ÷     #  × [0.3] WATCH (ID) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 231A × 0020 ÷ 00A0 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 231A × 0308 × 00A0 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 231A × 0308 × 00A0 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 231A ÷ AC00 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 231A × 0020 ÷ AC00 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 231A × 0308 ÷ AC00 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 231A × 0308 ÷ AC00 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 231A ÷ AC01 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 231A × 0020 ÷ AC01 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 231A × 0308 ÷ AC01 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 231A × 0308 ÷ AC01 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 231A ÷ 05D0 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 231A × 0020 ÷ 05D0 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 231A × 0308 ÷ 05D0 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 231A × 0308 ÷ 05D0 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 231A × 002D ÷     #  × [0.3] WATCH (ID) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 231A × 0020 ÷ 002D ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 231A × 0308 × 002D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 002D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 231A × 0308 × 002D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 002D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 231A ÷ 231A ÷     #  × [0.3] WATCH (ID) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 231A × 0020 ÷ 231A ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 231A × 0308 ÷ 231A ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 231A ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 231A × 0308 ÷ 231A ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 231A ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 231A × 2024 ÷     #  × [0.3] WATCH (ID) × [22.03] ONE DOT LEADER (IN) ÷ [0.3]
 × 231A × 0020 ÷ 2024 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 231A × 0308 × 2024 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [22.03] ONE DOT LEADER (IN) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 231A × 0308 × 2024 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.03] ONE DOT LEADER (IN) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 231A × 002C ÷     #  × [0.3] WATCH (ID) × [13.02] COMMA (IS) ÷ [0.3]
 × 231A × 0020 × 002C ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 231A × 0308 × 002C ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 231A × 0308 × 0020 × 002C ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 231A × 0308 × 002C ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 231A × 0308 × 0020 × 002C ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 231A ÷ 1100 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 231A × 0020 ÷ 1100 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 231A × 0308 ÷ 1100 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 231A × 0308 ÷ 1100 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 231A ÷ 11A8 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 231A × 0020 ÷ 11A8 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 231A × 0308 ÷ 11A8 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 231A × 0308 ÷ 11A8 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 231A ÷ 1160 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 231A × 0020 ÷ 1160 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 231A × 0308 ÷ 1160 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 231A × 0308 ÷ 1160 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 231A × 000A ÷     #  × [0.3] WATCH (ID) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 231A × 0020 × 000A ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 231A × 0308 × 000A ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 231A × 0308 × 0020 × 000A ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 231A × 0308 × 000A ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 231A × 0308 × 0020 × 000A ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 231A × 0085 ÷     #  × [0.3] WATCH (ID) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 231A × 0020 × 0085 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 231A × 0308 × 0085 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 231A × 0308 × 0020 × 0085 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 231A × 0308 × 0085 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 231A × 0308 × 0020 × 0085 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 231A × 17D6 ÷     #  × [0.3] WATCH (ID) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 231A × 0020 ÷ 17D6 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 231A × 0308 × 17D6 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 231A × 0308 × 17D6 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 231A ÷ 0030 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 231A × 0020 ÷ 0030 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 231A × 0308 ÷ 0030 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 231A × 0308 ÷ 0030 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 231A ÷ 0028 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 231A × 0020 ÷ 0028 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 231A × 0308 ÷ 0028 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 231A × 0025 ÷     #  × [0.3] WATCH (ID) × [23.01] PERCENT SIGN (PO) ÷ [0.3]
+× 231A × 0308 ÷ 0028 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 231A × 0025 ÷     #  × [0.3] WATCH (ID) × [23.13] PERCENT SIGN (PO) ÷ [0.3]
 × 231A × 0020 ÷ 0025 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 231A × 0308 × 0025 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [23.01] PERCENT SIGN (PO) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 231A × 0308 × 0025 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.13] PERCENT SIGN (PO) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 231A ÷ 0024 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 231A × 0020 ÷ 0024 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 231A × 0308 ÷ 0024 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 231A × 0308 ÷ 0024 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 231A × 0022 ÷     #  × [0.3] WATCH (ID) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 231A × 0020 ÷ 0022 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 231A × 0308 × 0022 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 231A × 0308 × 0022 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 231A × 0020 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [0.3]
 × 231A × 0020 × 0020 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 231A × 0308 × 0020 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 231A × 0308 × 0020 × 0020 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 231A × 0308 × 0020 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 231A × 0308 × 0020 × 0020 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 231A × 002F ÷     #  × [0.3] WATCH (ID) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 231A × 0020 × 002F ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 231A × 0308 × 002F ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 231A × 0308 × 0020 × 002F ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 231A × 0308 × 002F ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 231A × 0308 × 0020 × 002F ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 231A × 2060 ÷     #  × [0.3] WATCH (ID) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 231A × 0020 × 2060 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 231A × 0308 × 2060 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 231A × 0308 × 0020 × 2060 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 231A × 0308 × 2060 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 231A × 0308 × 0020 × 2060 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 231A × 200B ÷     #  × [0.3] WATCH (ID) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 231A × 0020 × 200B ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 231A × 0308 × 200B ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 231A × 0308 × 0020 × 200B ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 231A × 0308 × 200B ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 231A × 0308 × 0020 × 200B ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 231A ÷ 1F1E6 ÷    #  × [0.3] WATCH (ID) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 231A × 0020 ÷ 1F1E6 ÷    #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 231A × 0308 ÷ 1F1E6 ÷    #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 231A × 0308 ÷ 1F1E6 ÷    #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 231A ÷ 261D ÷     #  × [0.3] WATCH (ID) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 231A × 0020 ÷ 261D ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 231A × 0308 ÷ 261D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 261D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 231A ÷ 1F3FB ÷    #  × [0.3] WATCH (ID) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 231A × 0020 ÷ 1F3FB ÷    #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 231A × 0308 ÷ 1F3FB ÷    #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 231A × 0001 ÷     #  × [0.3] WATCH (ID) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 231A × 0020 ÷ 0001 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 231A × 0308 × 0001 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 231A × 200D ÷     #  × [0.3] WATCH (ID) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 231A × 0020 ÷ 200D ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 231A × 0308 × 200D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 200D ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 231A ÷ 00A7 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 231A × 0020 ÷ 00A7 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 231A × 0308 ÷ 00A7 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 231A × 0308 ÷ 00A7 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 231A ÷ 50005 ÷    #  × [0.3] WATCH (ID) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 231A × 0020 ÷ 50005 ÷    #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 231A × 0308 ÷ 50005 ÷    #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 231A × 0308 ÷ 50005 ÷    #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 231A ÷ 0E01 ÷     #  × [0.3] WATCH (ID) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 231A × 0020 ÷ 0E01 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 231A × 0308 ÷ 0E01 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 231A × 0308 ÷ 0E01 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 231A × 3041 ÷     #  × [0.3] WATCH (ID) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 231A × 0020 ÷ 3041 ÷     #  × [0.3] WATCH (ID) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 231A × 0308 × 3041 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 231A × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 231A × 0308 × 3041 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 231A × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] WATCH (ID) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 2024 ÷ 0023 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 2024 × 0020 ÷ 0023 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 2024 × 0308 ÷ 0023 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 2024 × 0308 ÷ 0023 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 2024 ÷ 2014 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 2024 × 0020 ÷ 2014 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 2024 × 0308 ÷ 2014 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 2024 × 0308 ÷ 2014 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 2024 × 0009 ÷     #  × [0.3] ONE DOT LEADER (IN) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 2024 × 0020 ÷ 0009 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 2024 × 0308 × 0009 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 2024 × 0308 × 0009 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 2024 ÷ 00B4 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 2024 × 0020 ÷ 00B4 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 2024 × 0308 ÷ 00B4 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 2024 × 0308 ÷ 00B4 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 2024 × 000B ÷     #  × [0.3] ONE DOT LEADER (IN) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 2024 × 0020 × 000B ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 2024 × 0308 × 000B ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 2024 × 0308 × 0020 × 000B ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 2024 × 0308 × 000B ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 2024 × 0308 × 0020 × 000B ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 2024 ÷ FFFC ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 2024 × 0020 ÷ FFFC ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 2024 × 0308 ÷ FFFC ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 2024 × 0308 ÷ FFFC ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 2024 × 007D ÷     #  × [0.3] ONE DOT LEADER (IN) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 2024 × 0020 × 007D ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 2024 × 0308 × 007D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 2024 × 0308 × 0020 × 007D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 2024 × 0308 × 007D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 2024 × 0308 × 0020 × 007D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 2024 × 0029 ÷     #  × [0.3] ONE DOT LEADER (IN) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 2024 × 0020 × 0029 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 2024 × 0308 × 0029 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 2024 × 0308 × 0020 × 0029 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 2024 × 0001 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 2024 × 0020 ÷ 0001 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 2024 × 0308 × 0001 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 2024 × 0308 × 0029 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 2024 × 0308 × 0020 × 0029 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 2024 × 000D ÷     #  × [0.3] ONE DOT LEADER (IN) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 2024 × 0020 × 000D ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 2024 × 0308 × 000D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 2024 × 0308 × 0020 × 000D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 2024 × 0308 × 000D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 2024 × 0308 × 0020 × 000D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 2024 × 0021 ÷     #  × [0.3] ONE DOT LEADER (IN) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 2024 × 0020 × 0021 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 2024 × 0308 × 0021 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 2024 × 0308 × 0020 × 0021 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 2024 × 0308 × 0021 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 2024 × 0308 × 0020 × 0021 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 2024 × 00A0 ÷     #  × [0.3] ONE DOT LEADER (IN) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 2024 × 0020 ÷ 00A0 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 2024 × 0308 × 00A0 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 2024 × 0308 × 00A0 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 2024 ÷ AC00 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 2024 × 0020 ÷ AC00 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 2024 × 0308 ÷ AC00 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 2024 × 0308 ÷ AC00 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 2024 ÷ AC01 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 2024 × 0020 ÷ AC01 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 2024 × 0308 ÷ AC01 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 2024 × 0308 ÷ AC01 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 2024 ÷ 05D0 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 2024 × 0020 ÷ 05D0 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 2024 × 0308 ÷ 05D0 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 2024 × 0308 ÷ 05D0 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 2024 × 002D ÷     #  × [0.3] ONE DOT LEADER (IN) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 2024 × 0020 ÷ 002D ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 2024 × 0308 × 002D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 2024 × 0308 × 002D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 2024 ÷ 231A ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 2024 × 0020 ÷ 231A ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 2024 × 0308 ÷ 231A ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 2024 × 0308 ÷ 231A ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 2024 × 2024 ÷     #  × [0.3] ONE DOT LEADER (IN) × [22.04] ONE DOT LEADER (IN) ÷ [0.3]
 × 2024 × 0020 ÷ 2024 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 2024 × 0308 × 2024 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [22.04] ONE DOT LEADER (IN) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 2024 × 0308 × 2024 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.04] ONE DOT LEADER (IN) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 2024 × 002C ÷     #  × [0.3] ONE DOT LEADER (IN) × [13.02] COMMA (IS) ÷ [0.3]
 × 2024 × 0020 × 002C ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 2024 × 0308 × 002C ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 2024 × 0308 × 0020 × 002C ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 2024 × 0308 × 002C ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 2024 × 0308 × 0020 × 002C ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 2024 ÷ 1100 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 2024 × 0020 ÷ 1100 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 2024 × 0308 ÷ 1100 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 2024 × 0308 ÷ 1100 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 2024 ÷ 11A8 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 2024 × 0020 ÷ 11A8 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 2024 × 0308 ÷ 11A8 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 2024 × 0308 ÷ 11A8 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 2024 ÷ 1160 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 2024 × 0020 ÷ 1160 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 2024 × 0308 ÷ 1160 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 2024 × 0308 ÷ 1160 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 2024 × 000A ÷     #  × [0.3] ONE DOT LEADER (IN) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 2024 × 0020 × 000A ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 2024 × 0308 × 000A ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 2024 × 0308 × 0020 × 000A ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 2024 × 0308 × 000A ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 2024 × 0308 × 0020 × 000A ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 2024 × 0085 ÷     #  × [0.3] ONE DOT LEADER (IN) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 2024 × 0020 × 0085 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 2024 × 0308 × 0085 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 2024 × 0308 × 0020 × 0085 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 2024 × 0308 × 0085 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 2024 × 0308 × 0020 × 0085 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 2024 × 17D6 ÷     #  × [0.3] ONE DOT LEADER (IN) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 2024 × 0020 ÷ 17D6 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 2024 × 0308 × 17D6 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 2024 × 0308 × 17D6 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 2024 ÷ 0030 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 2024 × 0020 ÷ 0030 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 2024 × 0308 ÷ 0030 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 2024 × 0308 ÷ 0030 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 2024 ÷ 0028 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 2024 × 0020 ÷ 0028 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 2024 × 0308 ÷ 0028 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 2024 × 0308 ÷ 0028 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 2024 ÷ 0025 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 2024 × 0020 ÷ 0025 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 2024 × 0308 ÷ 0025 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 2024 × 0308 ÷ 0025 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 2024 ÷ 0024 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 2024 × 0020 ÷ 0024 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 2024 × 0308 ÷ 0024 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 2024 × 0308 ÷ 0024 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 2024 × 0022 ÷     #  × [0.3] ONE DOT LEADER (IN) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 2024 × 0020 ÷ 0022 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 2024 × 0308 × 0022 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 2024 × 0308 × 0022 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 2024 × 0020 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [0.3]
 × 2024 × 0020 × 0020 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 2024 × 0308 × 0020 × 0020 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 2024 × 0308 × 0020 × 0020 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 2024 × 002F ÷     #  × [0.3] ONE DOT LEADER (IN) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 2024 × 0020 × 002F ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 2024 × 0308 × 002F ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 2024 × 0308 × 0020 × 002F ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 2024 × 0308 × 002F ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 2024 × 0308 × 0020 × 002F ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 2024 × 2060 ÷     #  × [0.3] ONE DOT LEADER (IN) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 2024 × 0020 × 2060 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 2024 × 0308 × 2060 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 2024 × 0308 × 0020 × 2060 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 2024 × 0308 × 2060 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 2024 × 0308 × 0020 × 2060 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 2024 × 200B ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 2024 × 0020 × 200B ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 2024 × 0308 × 200B ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 2024 × 0308 × 0020 × 200B ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 2024 × 0308 × 200B ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 2024 × 0308 × 0020 × 200B ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 2024 ÷ 1F1E6 ÷    #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 2024 × 0020 ÷ 1F1E6 ÷    #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 2024 × 0308 ÷ 1F1E6 ÷    #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 2024 × 0308 ÷ 1F1E6 ÷    #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 2024 ÷ 261D ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 2024 × 0020 ÷ 261D ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 2024 × 0308 ÷ 261D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 2024 ÷ 1F3FB ÷    #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2024 × 0020 ÷ 1F3FB ÷    #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2024 × 0308 ÷ 1F3FB ÷    #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2024 × 0001 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 2024 × 0020 ÷ 0001 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 2024 × 0308 × 0001 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 2024 × 200D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 2024 × 0020 ÷ 200D ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 2024 × 0308 × 200D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 2024 ÷ 00A7 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 2024 × 0020 ÷ 00A7 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 2024 × 0308 ÷ 00A7 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 2024 × 0308 ÷ 00A7 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 2024 ÷ 50005 ÷    #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 2024 × 0020 ÷ 50005 ÷    #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 2024 × 0308 ÷ 50005 ÷    #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 2024 × 0308 ÷ 50005 ÷    #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 2024 ÷ 0E01 ÷     #  × [0.3] ONE DOT LEADER (IN) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 2024 × 0020 ÷ 0E01 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 2024 × 0308 ÷ 0E01 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 2024 × 0308 ÷ 0E01 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 2024 × 3041 ÷     #  × [0.3] ONE DOT LEADER (IN) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 2024 × 0020 ÷ 3041 ÷     #  × [0.3] ONE DOT LEADER (IN) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 2024 × 0308 × 3041 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 2024 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 2024 × 0308 × 3041 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 2024 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] ONE DOT LEADER (IN) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 002C × 0023 ÷     #  × [0.3] COMMA (IS) × [29.0] NUMBER SIGN (AL) ÷ [0.3]
 × 002C × 0020 ÷ 0023 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 002C × 0308 × 0023 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [29.0] NUMBER SIGN (AL) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 002C × 0308 × 0023 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [29.0] NUMBER SIGN (AL) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 002C ÷ 2014 ÷     #  × [0.3] COMMA (IS) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 002C × 0020 ÷ 2014 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 002C × 0308 ÷ 2014 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 002C × 0308 ÷ 2014 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 002C × 0009 ÷     #  × [0.3] COMMA (IS) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 002C × 0020 ÷ 0009 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 002C × 0308 × 0009 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 002C × 0308 × 0009 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 002C ÷ 00B4 ÷     #  × [0.3] COMMA (IS) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 002C × 0020 ÷ 00B4 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 002C × 0308 ÷ 00B4 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 002C × 0308 ÷ 00B4 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 002C × 000B ÷     #  × [0.3] COMMA (IS) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 002C × 0020 × 000B ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 002C × 0308 × 000B ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 002C × 0308 × 0020 × 000B ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 002C × 0308 × 000B ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 002C × 0308 × 0020 × 000B ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 002C ÷ FFFC ÷     #  × [0.3] COMMA (IS) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 002C × 0020 ÷ FFFC ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 002C × 0308 ÷ FFFC ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 002C × 0308 ÷ FFFC ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 002C × 007D ÷     #  × [0.3] COMMA (IS) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 002C × 0020 × 007D ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 002C × 0308 × 007D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 002C × 0308 × 0020 × 007D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 002C × 0308 × 007D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 002C × 0308 × 0020 × 007D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 002C × 0029 ÷     #  × [0.3] COMMA (IS) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 002C × 0020 × 0029 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 002C × 0308 × 0029 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 002C × 0308 × 0020 × 0029 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 002C × 0001 ÷     #  × [0.3] COMMA (IS) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 002C × 0020 ÷ 0001 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 002C × 0308 × 0001 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 002C × 0308 × 0029 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 002C × 0308 × 0020 × 0029 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 002C × 000D ÷     #  × [0.3] COMMA (IS) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 002C × 0020 × 000D ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 002C × 0308 × 000D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 002C × 0308 × 0020 × 000D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 002C × 0308 × 000D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 002C × 0308 × 0020 × 000D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 002C × 0021 ÷     #  × [0.3] COMMA (IS) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 002C × 0020 × 0021 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 002C × 0308 × 0021 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 002C × 0308 × 0020 × 0021 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 002C × 0308 × 0021 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 002C × 0308 × 0020 × 0021 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 002C × 00A0 ÷     #  × [0.3] COMMA (IS) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 002C × 0020 ÷ 00A0 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 002C × 0308 × 00A0 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 002C × 0308 × 00A0 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 002C ÷ AC00 ÷     #  × [0.3] COMMA (IS) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 002C × 0020 ÷ AC00 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 002C × 0308 ÷ AC00 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 002C × 0308 ÷ AC00 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 002C ÷ AC01 ÷     #  × [0.3] COMMA (IS) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 002C × 0020 ÷ AC01 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 002C × 0308 ÷ AC01 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 002C × 0308 ÷ AC01 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 002C × 05D0 ÷     #  × [0.3] COMMA (IS) × [29.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 002C × 0020 ÷ 05D0 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 002C × 0308 × 05D0 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [29.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 002C × 0308 × 05D0 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [29.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 002C × 002D ÷     #  × [0.3] COMMA (IS) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 002C × 0020 ÷ 002D ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 002C × 0308 × 002D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 002D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 002C × 0308 × 002D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 002D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 002C ÷ 231A ÷     #  × [0.3] COMMA (IS) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 002C × 0020 ÷ 231A ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 002C × 0308 ÷ 231A ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 231A ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 002C × 0308 ÷ 231A ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 231A ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 002C ÷ 2024 ÷     #  × [0.3] COMMA (IS) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 002C × 0020 ÷ 2024 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 002C × 0308 ÷ 2024 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 002C × 0308 ÷ 2024 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 002C × 002C ÷     #  × [0.3] COMMA (IS) × [13.02] COMMA (IS) ÷ [0.3]
 × 002C × 0020 × 002C ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 002C × 0308 × 002C ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 002C × 0308 × 0020 × 002C ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 002C × 0308 × 002C ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 002C × 0308 × 0020 × 002C ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 002C ÷ 1100 ÷     #  × [0.3] COMMA (IS) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 002C × 0020 ÷ 1100 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 002C × 0308 ÷ 1100 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 002C × 0308 ÷ 1100 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 002C ÷ 11A8 ÷     #  × [0.3] COMMA (IS) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 002C × 0020 ÷ 11A8 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 002C × 0308 ÷ 11A8 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 002C × 0308 ÷ 11A8 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 002C ÷ 1160 ÷     #  × [0.3] COMMA (IS) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 002C × 0020 ÷ 1160 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 002C × 0308 ÷ 1160 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 002C × 0308 ÷ 1160 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 002C × 000A ÷     #  × [0.3] COMMA (IS) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 002C × 0020 × 000A ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 002C × 0308 × 000A ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 002C × 0308 × 0020 × 000A ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 002C × 0308 × 000A ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 002C × 0308 × 0020 × 000A ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 002C × 0085 ÷     #  × [0.3] COMMA (IS) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 002C × 0020 × 0085 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 002C × 0308 × 0085 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 002C × 0308 × 0020 × 0085 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 002C × 0308 × 0085 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 002C × 0308 × 0020 × 0085 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 002C × 17D6 ÷     #  × [0.3] COMMA (IS) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 002C × 0020 ÷ 17D6 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 002C × 0308 × 17D6 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 002C × 0308 × 17D6 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 002C ÷ 0030 ÷     #  × [0.3] COMMA (IS) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 002C × 0020 ÷ 0030 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 002C × 0308 ÷ 0030 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 002C × 0308 ÷ 0030 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 002C ÷ 0028 ÷     #  × [0.3] COMMA (IS) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 002C × 0020 ÷ 0028 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 002C × 0308 ÷ 0028 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 002C × 0308 ÷ 0028 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 002C ÷ 0025 ÷     #  × [0.3] COMMA (IS) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 002C × 0020 ÷ 0025 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 002C × 0308 ÷ 0025 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 002C × 0308 ÷ 0025 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 002C ÷ 0024 ÷     #  × [0.3] COMMA (IS) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 002C × 0020 ÷ 0024 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 002C × 0308 ÷ 0024 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 002C × 0308 ÷ 0024 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 002C × 0022 ÷     #  × [0.3] COMMA (IS) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 002C × 0020 ÷ 0022 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 002C × 0308 × 0022 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 002C × 0308 × 0022 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 002C × 0020 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [0.3]
 × 002C × 0020 × 0020 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 002C × 0308 × 0020 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 002C × 0308 × 0020 × 0020 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 002C × 0308 × 0020 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 002C × 0308 × 0020 × 0020 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 002C × 002F ÷     #  × [0.3] COMMA (IS) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 002C × 0020 × 002F ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 002C × 0308 × 002F ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 002C × 0308 × 0020 × 002F ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 002C × 0308 × 002F ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 002C × 0308 × 0020 × 002F ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 002C × 2060 ÷     #  × [0.3] COMMA (IS) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 002C × 0020 × 2060 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 002C × 0308 × 2060 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 002C × 0308 × 0020 × 2060 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 002C × 0308 × 2060 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 002C × 0308 × 0020 × 2060 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 002C × 200B ÷     #  × [0.3] COMMA (IS) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 002C × 0020 × 200B ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 002C × 0308 × 200B ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 002C × 0308 × 0020 × 200B ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 002C × 0308 × 200B ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 002C × 0308 × 0020 × 200B ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 002C ÷ 1F1E6 ÷    #  × [0.3] COMMA (IS) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 002C × 0020 ÷ 1F1E6 ÷    #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 002C × 0308 ÷ 1F1E6 ÷    #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 002C × 0308 ÷ 1F1E6 ÷    #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 002C ÷ 261D ÷     #  × [0.3] COMMA (IS) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 002C × 0020 ÷ 261D ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 002C × 0308 ÷ 261D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 261D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 002C ÷ 1F3FB ÷    #  × [0.3] COMMA (IS) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002C × 0020 ÷ 1F3FB ÷    #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002C × 0308 ÷ 1F3FB ÷    #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002C × 0001 ÷     #  × [0.3] COMMA (IS) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 002C × 0020 ÷ 0001 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 002C × 0308 × 0001 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 002C × 200D ÷     #  × [0.3] COMMA (IS) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 002C × 0020 ÷ 200D ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 002C × 0308 × 200D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 200D ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 002C × 00A7 ÷     #  × [0.3] COMMA (IS) × [29.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 002C × 0020 ÷ 00A7 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 002C × 0308 × 00A7 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [29.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 002C × 0308 × 00A7 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [29.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 002C × 50005 ÷    #  × [0.3] COMMA (IS) × [29.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 002C × 0020 ÷ 50005 ÷    #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 002C × 0308 × 50005 ÷    #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [29.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 002C × 0308 × 50005 ÷    #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [29.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 002C × 0E01 ÷     #  × [0.3] COMMA (IS) × [29.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 002C × 0020 ÷ 0E01 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 002C × 0308 × 0E01 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [29.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 002C × 0308 × 0E01 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [29.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 002C × 3041 ÷     #  × [0.3] COMMA (IS) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 002C × 0020 ÷ 3041 ÷     #  × [0.3] COMMA (IS) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 002C × 0308 × 3041 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 002C × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 002C × 0308 × 3041 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 002C × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] COMMA (IS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 1100 ÷ 0023 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 1100 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 1100 × 0308 ÷ 0023 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1100 × 0308 ÷ 0023 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 1100 ÷ 2014 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 1100 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 1100 × 0308 ÷ 2014 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1100 × 0308 ÷ 2014 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 1100 × 0009 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 1100 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 1100 × 0308 × 0009 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1100 × 0308 × 0009 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 1100 ÷ 00B4 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 1100 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 1100 × 0308 ÷ 00B4 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1100 × 0308 ÷ 00B4 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 1100 × 000B ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 1100 × 0020 × 000B ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 1100 × 0308 × 000B ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 1100 × 0308 × 0020 × 000B ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1100 × 0308 × 000B ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1100 × 0308 × 0020 × 000B ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 1100 ÷ FFFC ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 1100 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 1100 × 0308 ÷ FFFC ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1100 × 0308 ÷ FFFC ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 1100 × 007D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 1100 × 0020 × 007D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 1100 × 0308 × 007D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 1100 × 0308 × 0020 × 007D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1100 × 0308 × 007D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1100 × 0308 × 0020 × 007D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 1100 × 0029 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 1100 × 0020 × 0029 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 1100 × 0308 × 0029 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 1100 × 0308 × 0020 × 0029 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 1100 × 0001 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 1100 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 1100 × 0308 × 0001 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 1100 × 0308 × 0029 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 1100 × 0308 × 0020 × 0029 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 1100 × 000D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 1100 × 0020 × 000D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 1100 × 0308 × 000D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 1100 × 0308 × 0020 × 000D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1100 × 0308 × 000D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1100 × 0308 × 0020 × 000D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 1100 × 0021 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 1100 × 0020 × 0021 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 1100 × 0308 × 0021 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 1100 × 0308 × 0020 × 0021 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1100 × 0308 × 0021 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1100 × 0308 × 0020 × 0021 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 1100 × 00A0 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 1100 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 1100 × 0308 × 00A0 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1100 × 0308 × 00A0 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 1100 × AC00 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [26.01] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 1100 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 1100 × 0308 × AC00 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [26.01] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1100 × 0308 × AC00 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [26.01] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 1100 × AC01 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [26.01] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 1100 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 1100 × 0308 × AC01 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [26.01] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1100 × 0308 × AC01 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [26.01] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 1100 ÷ 05D0 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 1100 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 1100 × 0308 ÷ 05D0 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1100 × 0308 ÷ 05D0 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 1100 × 002D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 1100 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 1100 × 0308 × 002D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1100 × 0308 × 002D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 1100 ÷ 231A ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 1100 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 1100 × 0308 ÷ 231A ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 1100 × 0308 ÷ 231A ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 1100 × 2024 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
 × 1100 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 1100 × 0308 × 2024 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1100 × 0308 × 2024 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 1100 × 002C ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [13.02] COMMA (IS) ÷ [0.3]
 × 1100 × 0020 × 002C ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 1100 × 0308 × 002C ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 1100 × 0308 × 0020 × 002C ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1100 × 0308 × 002C ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 1100 × 0308 × 0020 × 002C ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 1100 × 1100 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [26.01] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 1100 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 1100 × 0308 × 1100 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [26.01] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1100 × 0308 × 1100 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [26.01] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 1100 ÷ 11A8 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 1100 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 1100 × 0308 ÷ 11A8 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1100 × 0308 ÷ 11A8 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 1100 × 1160 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [26.01] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 1100 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 1100 × 0308 × 1160 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [26.01] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1100 × 0308 × 1160 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [26.01] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 1100 × 000A ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 1100 × 0020 × 000A ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 1100 × 0308 × 000A ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 1100 × 0308 × 0020 × 000A ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1100 × 0308 × 000A ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1100 × 0308 × 0020 × 000A ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 1100 × 0085 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 1100 × 0020 × 0085 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 1100 × 0308 × 0085 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 1100 × 0308 × 0020 × 0085 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1100 × 0308 × 0085 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1100 × 0308 × 0020 × 0085 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 1100 × 17D6 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 1100 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 1100 × 0308 × 17D6 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1100 × 0308 × 17D6 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 1100 ÷ 0030 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 1100 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 1100 × 0308 ÷ 0030 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1100 × 0308 ÷ 0030 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 1100 ÷ 0028 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 1100 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 1100 × 0308 ÷ 0028 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 1100 × 0308 ÷ 0028 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 1100 × 0025 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
 × 1100 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 1100 × 0308 × 0025 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1100 × 0308 × 0025 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 1100 ÷ 0024 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 1100 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 1100 × 0308 ÷ 0024 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1100 × 0308 ÷ 0024 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 1100 × 0022 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 1100 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 1100 × 0308 × 0022 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1100 × 0308 × 0022 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 1100 × 0020 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [0.3]
 × 1100 × 0020 × 0020 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 1100 × 0308 × 0020 × 0020 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 1100 × 0308 × 0020 × 0020 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 1100 × 002F ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 1100 × 0020 × 002F ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 1100 × 0308 × 002F ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 1100 × 0308 × 0020 × 002F ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1100 × 0308 × 002F ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 1100 × 0308 × 0020 × 002F ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 1100 × 2060 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 1100 × 0020 × 2060 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 1100 × 0308 × 2060 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 1100 × 0308 × 0020 × 2060 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1100 × 0308 × 2060 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1100 × 0308 × 0020 × 2060 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 1100 × 200B ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 1100 × 0020 × 200B ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 1100 × 0308 × 200B ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 1100 × 0308 × 0020 × 200B ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1100 × 0308 × 200B ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1100 × 0308 × 0020 × 200B ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 1100 ÷ 1F1E6 ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 1100 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 1100 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1100 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1100 ÷ 261D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1100 × 0020 ÷ 261D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1100 × 0308 ÷ 261D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1100 ÷ 1F3FB ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1100 × 0020 ÷ 1F3FB ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1100 × 0308 ÷ 1F3FB ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1100 × 0001 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1100 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1100 × 0308 × 0001 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1100 × 200D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1100 × 0020 ÷ 200D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1100 × 0308 × 200D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 1100 ÷ 00A7 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 1100 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 1100 × 0308 ÷ 00A7 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1100 × 0308 ÷ 00A7 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 1100 ÷ 50005 ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 1100 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 1100 × 0308 ÷ 50005 ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1100 × 0308 ÷ 50005 ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 1100 ÷ 0E01 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 1100 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 1100 × 0308 ÷ 0E01 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1100 × 0308 ÷ 0E01 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 1100 × 3041 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 1100 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 1100 × 0308 × 3041 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 1100 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1100 × 0308 × 3041 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1100 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 11A8 ÷ 0023 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 11A8 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 11A8 × 0308 ÷ 0023 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 11A8 × 0308 ÷ 0023 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 11A8 ÷ 2014 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 11A8 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 11A8 × 0308 ÷ 2014 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 11A8 × 0308 ÷ 2014 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 11A8 × 0009 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 11A8 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 11A8 × 0308 × 0009 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 11A8 × 0308 × 0009 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 11A8 ÷ 00B4 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 11A8 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 11A8 × 0308 ÷ 00B4 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 11A8 × 0308 ÷ 00B4 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 11A8 × 000B ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 11A8 × 0020 × 000B ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 11A8 × 0308 × 000B ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 11A8 × 0308 × 0020 × 000B ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 11A8 × 0308 × 000B ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 11A8 × 0308 × 0020 × 000B ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 11A8 ÷ FFFC ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 11A8 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 11A8 × 0308 ÷ FFFC ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 11A8 × 0308 ÷ FFFC ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 11A8 × 007D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 11A8 × 0020 × 007D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 11A8 × 0308 × 007D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 11A8 × 0308 × 0020 × 007D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 11A8 × 0308 × 007D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 11A8 × 0308 × 0020 × 007D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 11A8 × 0029 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 11A8 × 0020 × 0029 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 11A8 × 0308 × 0029 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 11A8 × 0308 × 0020 × 0029 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 11A8 × 0001 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 11A8 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 11A8 × 0308 × 0001 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 11A8 × 0308 × 0029 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 11A8 × 0308 × 0020 × 0029 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 11A8 × 000D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 11A8 × 0020 × 000D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 11A8 × 0308 × 000D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 11A8 × 0308 × 0020 × 000D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 11A8 × 0308 × 000D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 11A8 × 0308 × 0020 × 000D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 11A8 × 0021 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 11A8 × 0020 × 0021 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 11A8 × 0308 × 0021 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 11A8 × 0308 × 0020 × 0021 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 11A8 × 0308 × 0021 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 11A8 × 0308 × 0020 × 0021 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 11A8 × 00A0 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 11A8 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 11A8 × 0308 × 00A0 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 11A8 × 0308 × 00A0 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 11A8 ÷ AC00 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 11A8 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 11A8 × 0308 ÷ AC00 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 11A8 × 0308 ÷ AC00 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 11A8 ÷ AC01 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 11A8 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 11A8 × 0308 ÷ AC01 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 11A8 × 0308 ÷ AC01 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 11A8 ÷ 05D0 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 11A8 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 11A8 × 0308 ÷ 05D0 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 11A8 × 0308 ÷ 05D0 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 11A8 × 002D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 11A8 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 11A8 × 0308 × 002D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 11A8 × 0308 × 002D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 11A8 ÷ 231A ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 11A8 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 11A8 × 0308 ÷ 231A ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 11A8 × 0308 ÷ 231A ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 11A8 × 2024 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
 × 11A8 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 11A8 × 0308 × 2024 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 11A8 × 0308 × 2024 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 11A8 × 002C ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [13.02] COMMA (IS) ÷ [0.3]
 × 11A8 × 0020 × 002C ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 11A8 × 0308 × 002C ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 11A8 × 0308 × 0020 × 002C ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 11A8 × 0308 × 002C ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 11A8 × 0308 × 0020 × 002C ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 11A8 ÷ 1100 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 11A8 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 11A8 × 0308 ÷ 1100 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 11A8 × 0308 ÷ 1100 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 11A8 × 11A8 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [26.03] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 11A8 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 11A8 × 0308 × 11A8 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [26.03] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 11A8 × 0308 × 11A8 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [26.03] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 11A8 ÷ 1160 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 11A8 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 11A8 × 0308 ÷ 1160 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 11A8 × 0308 ÷ 1160 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 11A8 × 000A ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 11A8 × 0020 × 000A ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 11A8 × 0308 × 000A ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 11A8 × 0308 × 0020 × 000A ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 11A8 × 0308 × 000A ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 11A8 × 0308 × 0020 × 000A ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 11A8 × 0085 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 11A8 × 0020 × 0085 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 11A8 × 0308 × 0085 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 11A8 × 0308 × 0020 × 0085 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 11A8 × 0308 × 0085 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 11A8 × 0308 × 0020 × 0085 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 11A8 × 17D6 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 11A8 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 11A8 × 0308 × 17D6 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 11A8 × 0308 × 17D6 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 11A8 ÷ 0030 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 11A8 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 11A8 × 0308 ÷ 0030 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 11A8 × 0308 ÷ 0030 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 11A8 ÷ 0028 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 11A8 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 11A8 × 0308 ÷ 0028 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 11A8 × 0308 ÷ 0028 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 11A8 × 0025 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
 × 11A8 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 11A8 × 0308 × 0025 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 11A8 × 0308 × 0025 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 11A8 ÷ 0024 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 11A8 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 11A8 × 0308 ÷ 0024 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 11A8 × 0308 ÷ 0024 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 11A8 × 0022 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 11A8 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 11A8 × 0308 × 0022 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 11A8 × 0308 × 0022 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 11A8 × 0020 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [0.3]
 × 11A8 × 0020 × 0020 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 11A8 × 0308 × 0020 × 0020 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 11A8 × 0308 × 0020 × 0020 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 11A8 × 002F ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 11A8 × 0020 × 002F ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 11A8 × 0308 × 002F ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 11A8 × 0308 × 0020 × 002F ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 11A8 × 0308 × 002F ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 11A8 × 0308 × 0020 × 002F ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 11A8 × 2060 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 11A8 × 0020 × 2060 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 11A8 × 0308 × 2060 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 11A8 × 0308 × 0020 × 2060 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 11A8 × 0308 × 2060 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 11A8 × 0308 × 0020 × 2060 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 11A8 × 200B ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 11A8 × 0020 × 200B ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 11A8 × 0308 × 200B ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 11A8 × 0308 × 0020 × 200B ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 11A8 × 0308 × 200B ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 11A8 × 0308 × 0020 × 200B ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 11A8 ÷ 1F1E6 ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 11A8 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 11A8 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 11A8 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 11A8 ÷ 261D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 11A8 × 0020 ÷ 261D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 11A8 × 0308 ÷ 261D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 11A8 ÷ 1F3FB ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 11A8 × 0020 ÷ 1F3FB ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 11A8 × 0308 ÷ 1F3FB ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 11A8 × 0001 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 11A8 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 11A8 × 0308 × 0001 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 11A8 × 200D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 11A8 × 0020 ÷ 200D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 11A8 × 0308 × 200D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 11A8 ÷ 00A7 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 11A8 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 11A8 × 0308 ÷ 00A7 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 11A8 × 0308 ÷ 00A7 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 11A8 ÷ 50005 ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 11A8 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 11A8 × 0308 ÷ 50005 ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 11A8 × 0308 ÷ 50005 ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 11A8 ÷ 0E01 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 11A8 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 11A8 × 0308 ÷ 0E01 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 11A8 × 0308 ÷ 0E01 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 11A8 × 3041 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 11A8 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 11A8 × 0308 × 3041 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 11A8 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 11A8 × 0308 × 3041 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 11A8 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 1160 ÷ 0023 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 1160 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 1160 × 0308 ÷ 0023 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1160 × 0308 ÷ 0023 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 1160 ÷ 2014 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 1160 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 1160 × 0308 ÷ 2014 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1160 × 0308 ÷ 2014 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 1160 × 0009 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 1160 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 1160 × 0308 × 0009 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1160 × 0308 × 0009 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 1160 ÷ 00B4 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 1160 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 1160 × 0308 ÷ 00B4 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1160 × 0308 ÷ 00B4 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 1160 × 000B ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 1160 × 0020 × 000B ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 1160 × 0308 × 000B ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 1160 × 0308 × 0020 × 000B ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1160 × 0308 × 000B ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1160 × 0308 × 0020 × 000B ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 1160 ÷ FFFC ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 1160 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 1160 × 0308 ÷ FFFC ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1160 × 0308 ÷ FFFC ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 1160 × 007D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 1160 × 0020 × 007D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 1160 × 0308 × 007D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 1160 × 0308 × 0020 × 007D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1160 × 0308 × 007D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1160 × 0308 × 0020 × 007D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 1160 × 0029 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 1160 × 0020 × 0029 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 1160 × 0308 × 0029 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 1160 × 0308 × 0020 × 0029 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 1160 × 0001 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 1160 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 1160 × 0308 × 0001 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 1160 × 0308 × 0029 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 1160 × 0308 × 0020 × 0029 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 1160 × 000D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 1160 × 0020 × 000D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 1160 × 0308 × 000D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 1160 × 0308 × 0020 × 000D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1160 × 0308 × 000D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1160 × 0308 × 0020 × 000D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 1160 × 0021 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 1160 × 0020 × 0021 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 1160 × 0308 × 0021 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 1160 × 0308 × 0020 × 0021 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1160 × 0308 × 0021 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1160 × 0308 × 0020 × 0021 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 1160 × 00A0 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 1160 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 1160 × 0308 × 00A0 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1160 × 0308 × 00A0 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 1160 ÷ AC00 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 1160 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 1160 × 0308 ÷ AC00 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1160 × 0308 ÷ AC00 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 1160 ÷ AC01 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 1160 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 1160 × 0308 ÷ AC01 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1160 × 0308 ÷ AC01 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 1160 ÷ 05D0 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 1160 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 1160 × 0308 ÷ 05D0 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1160 × 0308 ÷ 05D0 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 1160 × 002D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 1160 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 1160 × 0308 × 002D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1160 × 0308 × 002D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 1160 ÷ 231A ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 1160 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 1160 × 0308 ÷ 231A ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 1160 × 0308 ÷ 231A ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 1160 × 2024 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
 × 1160 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 1160 × 0308 × 2024 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1160 × 0308 × 2024 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 1160 × 002C ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [13.02] COMMA (IS) ÷ [0.3]
 × 1160 × 0020 × 002C ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 1160 × 0308 × 002C ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 1160 × 0308 × 0020 × 002C ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1160 × 0308 × 002C ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 1160 × 0308 × 0020 × 002C ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 1160 ÷ 1100 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 1160 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 1160 × 0308 ÷ 1100 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1160 × 0308 ÷ 1100 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 1160 × 11A8 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [26.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 1160 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 1160 × 0308 × 11A8 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [26.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1160 × 0308 × 11A8 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [26.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 1160 × 1160 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [26.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 1160 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 1160 × 0308 × 1160 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [26.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1160 × 0308 × 1160 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [26.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 1160 × 000A ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 1160 × 0020 × 000A ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 1160 × 0308 × 000A ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 1160 × 0308 × 0020 × 000A ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1160 × 0308 × 000A ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1160 × 0308 × 0020 × 000A ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 1160 × 0085 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 1160 × 0020 × 0085 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 1160 × 0308 × 0085 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 1160 × 0308 × 0020 × 0085 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1160 × 0308 × 0085 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1160 × 0308 × 0020 × 0085 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 1160 × 17D6 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 1160 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 1160 × 0308 × 17D6 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1160 × 0308 × 17D6 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 1160 ÷ 0030 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 1160 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 1160 × 0308 ÷ 0030 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1160 × 0308 ÷ 0030 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 1160 ÷ 0028 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 1160 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 1160 × 0308 ÷ 0028 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 1160 × 0308 ÷ 0028 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 1160 × 0025 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
 × 1160 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 1160 × 0308 × 0025 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1160 × 0308 × 0025 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 1160 ÷ 0024 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 1160 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 1160 × 0308 ÷ 0024 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1160 × 0308 ÷ 0024 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 1160 × 0022 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 1160 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 1160 × 0308 × 0022 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1160 × 0308 × 0022 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 1160 × 0020 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [0.3]
 × 1160 × 0020 × 0020 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 1160 × 0308 × 0020 × 0020 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 1160 × 0308 × 0020 × 0020 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 1160 × 002F ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 1160 × 0020 × 002F ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 1160 × 0308 × 002F ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 1160 × 0308 × 0020 × 002F ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1160 × 0308 × 002F ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 1160 × 0308 × 0020 × 002F ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 1160 × 2060 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 1160 × 0020 × 2060 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 1160 × 0308 × 2060 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 1160 × 0308 × 0020 × 2060 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1160 × 0308 × 2060 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1160 × 0308 × 0020 × 2060 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 1160 × 200B ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 1160 × 0020 × 200B ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 1160 × 0308 × 200B ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 1160 × 0308 × 0020 × 200B ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1160 × 0308 × 200B ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1160 × 0308 × 0020 × 200B ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 1160 ÷ 1F1E6 ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 1160 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 1160 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1160 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1160 ÷ 261D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1160 × 0020 ÷ 261D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1160 × 0308 ÷ 261D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1160 ÷ 1F3FB ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1160 × 0020 ÷ 1F3FB ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1160 × 0308 ÷ 1F3FB ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1160 × 0001 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1160 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1160 × 0308 × 0001 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1160 × 200D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1160 × 0020 ÷ 200D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1160 × 0308 × 200D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 1160 ÷ 00A7 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 1160 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 1160 × 0308 ÷ 00A7 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1160 × 0308 ÷ 00A7 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 1160 ÷ 50005 ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 1160 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 1160 × 0308 ÷ 50005 ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1160 × 0308 ÷ 50005 ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 1160 ÷ 0E01 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 1160 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 1160 × 0308 ÷ 0E01 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1160 × 0308 ÷ 0E01 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 1160 × 3041 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 1160 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 1160 × 0308 × 3041 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 1160 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1160 × 0308 × 3041 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1160 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 000A ÷ 0023 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] NUMBER SIGN (AL) ÷ [0.3]
 × 000A ÷ 0020 ÷ 0023 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 000A ÷ 0308 × 0023 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 0023 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 000A ÷ 0308 × 0023 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 0023 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 000A ÷ 2014 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] EM DASH (B2) ÷ [0.3]
 × 000A ÷ 0020 ÷ 2014 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 000A ÷ 0308 ÷ 2014 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 2014 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 000A ÷ 0308 ÷ 2014 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 2014 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 000A ÷ 0009 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 000A ÷ 0020 ÷ 0009 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 000A ÷ 0308 × 0009 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 0009 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 000A ÷ 0308 × 0009 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 0009 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 000A ÷ 00B4 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] ACUTE ACCENT (BB) ÷ [0.3]
 × 000A ÷ 0020 ÷ 00B4 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 000A ÷ 0308 ÷ 00B4 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 000A ÷ 0308 ÷ 00B4 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 000A ÷ 000B ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] <LINE TABULATION> (BK) ÷ [0.3]
 × 000A ÷ 0020 × 000B ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 000A ÷ 0308 × 000B ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 000A ÷ 0308 × 0020 × 000B ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 000A ÷ 0308 × 000B ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 000A ÷ 0308 × 0020 × 000B ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 000A ÷ FFFC ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 000A ÷ 0020 ÷ FFFC ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 000A ÷ 0308 ÷ FFFC ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ FFFC ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 000A ÷ 0308 ÷ FFFC ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ FFFC ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 000A ÷ 007D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 000A ÷ 0020 × 007D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 000A ÷ 0308 × 007D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 000A ÷ 0308 × 0020 × 007D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 000A ÷ 0308 × 007D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 000A ÷ 0308 × 0020 × 007D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 000A ÷ 0029 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 000A ÷ 0020 × 0029 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 000A ÷ 0308 × 0029 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 000A ÷ 0308 × 0020 × 0029 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 000A ÷ 0001 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] <START OF HEADING> (CM) ÷ [0.3]
-× 000A ÷ 0020 ÷ 0001 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 000A ÷ 0308 × 0001 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 0001 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 000A ÷ 0308 × 0029 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 000A ÷ 0308 × 0020 × 0029 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 000A ÷ 000D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 000A ÷ 0020 × 000D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 000A ÷ 0308 × 000D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 000A ÷ 0308 × 0020 × 000D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 000A ÷ 0308 × 000D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 000A ÷ 0308 × 0020 × 000D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 000A ÷ 0021 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] EXCLAMATION MARK (EX) ÷ [0.3]
 × 000A ÷ 0020 × 0021 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 000A ÷ 0308 × 0021 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 000A ÷ 0308 × 0020 × 0021 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 000A ÷ 0308 × 0021 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 000A ÷ 0308 × 0020 × 0021 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 000A ÷ 00A0 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] NO-BREAK SPACE (GL) ÷ [0.3]
 × 000A ÷ 0020 ÷ 00A0 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 000A ÷ 0308 × 00A0 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 000A ÷ 0308 × 00A0 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 000A ÷ AC00 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 000A ÷ 0020 ÷ AC00 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 000A ÷ 0308 ÷ AC00 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ AC00 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 000A ÷ 0308 ÷ AC00 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ AC00 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 000A ÷ AC01 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 000A ÷ 0020 ÷ AC01 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 000A ÷ 0308 ÷ AC01 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ AC01 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 000A ÷ 0308 ÷ AC01 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ AC01 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 000A ÷ 05D0 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 000A ÷ 0020 ÷ 05D0 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 000A ÷ 0308 × 05D0 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 000A ÷ 0308 × 05D0 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 000A ÷ 002D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] HYPHEN-MINUS (HY) ÷ [0.3]
 × 000A ÷ 0020 ÷ 002D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 000A ÷ 0308 × 002D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 002D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 000A ÷ 0308 × 002D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 002D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 000A ÷ 231A ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] WATCH (ID) ÷ [0.3]
 × 000A ÷ 0020 ÷ 231A ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 000A ÷ 0308 ÷ 231A ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 231A ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 000A ÷ 0308 ÷ 231A ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 231A ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 000A ÷ 2024 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] ONE DOT LEADER (IN) ÷ [0.3]
 × 000A ÷ 0020 ÷ 2024 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 000A ÷ 0308 × 2024 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 2024 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 000A ÷ 0308 × 2024 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 2024 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 000A ÷ 002C ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMMA (IS) ÷ [0.3]
 × 000A ÷ 0020 × 002C ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 000A ÷ 0308 × 002C ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 000A ÷ 0308 × 0020 × 002C ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 000A ÷ 0308 × 002C ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 000A ÷ 0308 × 0020 × 002C ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 000A ÷ 1100 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 000A ÷ 0020 ÷ 1100 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 000A ÷ 0308 ÷ 1100 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 1100 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 000A ÷ 0308 ÷ 1100 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 1100 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 000A ÷ 11A8 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 000A ÷ 0020 ÷ 11A8 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 000A ÷ 0308 ÷ 11A8 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 000A ÷ 0308 ÷ 11A8 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 000A ÷ 1160 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 000A ÷ 0020 ÷ 1160 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 000A ÷ 0308 ÷ 1160 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 1160 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 000A ÷ 0308 ÷ 1160 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 1160 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 000A ÷ 000A ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 000A ÷ 0020 × 000A ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 000A ÷ 0308 × 000A ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 000A ÷ 0308 × 0020 × 000A ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 000A ÷ 0308 × 000A ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 000A ÷ 0308 × 0020 × 000A ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 000A ÷ 0085 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 000A ÷ 0020 × 0085 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 000A ÷ 0308 × 0085 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 000A ÷ 0308 × 0020 × 0085 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 000A ÷ 0308 × 0085 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 000A ÷ 0308 × 0020 × 0085 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 000A ÷ 17D6 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 000A ÷ 0020 ÷ 17D6 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 000A ÷ 0308 × 17D6 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 000A ÷ 0308 × 17D6 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 000A ÷ 0030 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] DIGIT ZERO (NU) ÷ [0.3]
 × 000A ÷ 0020 ÷ 0030 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 000A ÷ 0308 × 0030 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 0030 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 000A ÷ 0308 × 0030 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 0030 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 000A ÷ 0028 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 000A ÷ 0020 ÷ 0028 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 000A ÷ 0308 × 0028 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 0028 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 000A ÷ 0308 × 0028 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 0028 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 000A ÷ 0025 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] PERCENT SIGN (PO) ÷ [0.3]
 × 000A ÷ 0020 ÷ 0025 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 000A Ã· 0308 Ã· 0025 Ã·     #  Ã\97 [0.3] <LINE FEED (LF)> (LF) Ã· [5.03] COMBINING DIAERESIS (CM) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 0025 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 000A Ã· 0308 Ã\97 0025 Ã·     #  Ã\97 [0.3] <LINE FEED (LF)> (LF) Ã· [5.03] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 0025 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 000A ÷ 0024 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] DOLLAR SIGN (PR) ÷ [0.3]
 × 000A ÷ 0020 ÷ 0024 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 000A Ã· 0308 Ã· 0024 Ã·     #  Ã\97 [0.3] <LINE FEED (LF)> (LF) Ã· [5.03] COMBINING DIAERESIS (CM) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 0024 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 000A Ã· 0308 Ã\97 0024 Ã·     #  Ã\97 [0.3] <LINE FEED (LF)> (LF) Ã· [5.03] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 0024 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 000A ÷ 0022 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] QUOTATION MARK (QU) ÷ [0.3]
 × 000A ÷ 0020 ÷ 0022 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 000A ÷ 0308 × 0022 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 0022 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 000A ÷ 0308 × 0022 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 0022 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 000A ÷ 0020 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [0.3]
 × 000A ÷ 0020 × 0020 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 000A ÷ 0308 × 0020 × 0020 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 000A ÷ 0308 × 0020 × 0020 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 000A ÷ 002F ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SOLIDUS (SY) ÷ [0.3]
 × 000A ÷ 0020 × 002F ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 000A ÷ 0308 × 002F ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 000A ÷ 0308 × 0020 × 002F ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 000A ÷ 0308 × 002F ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 000A ÷ 0308 × 0020 × 002F ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 000A ÷ 2060 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] WORD JOINER (WJ) ÷ [0.3]
 × 000A ÷ 0020 × 2060 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 000A ÷ 0308 × 2060 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 000A ÷ 0308 × 0020 × 2060 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 000A ÷ 0308 × 2060 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 000A ÷ 0308 × 0020 × 2060 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 000A ÷ 200B ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 000A ÷ 0020 × 200B ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 000A ÷ 0308 × 200B ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 000A ÷ 0308 × 0020 × 200B ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 000A ÷ 0308 × 200B ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 000A ÷ 0308 × 0020 × 200B ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 000A ÷ 1F1E6 ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 000A ÷ 0020 ÷ 1F1E6 ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 000A ÷ 0308 ÷ 1F1E6 ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 000A ÷ 0308 ÷ 1F1E6 ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 000A ÷ 261D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 000A ÷ 0020 ÷ 261D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 000A ÷ 0308 ÷ 261D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 261D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 000A ÷ 1F3FB ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000A ÷ 0020 ÷ 1F3FB ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000A ÷ 0308 ÷ 1F3FB ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 000A ÷ 0001 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 000A ÷ 0020 ÷ 0001 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 000A ÷ 0308 × 0001 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 0001 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 000A ÷ 200D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 000A ÷ 0020 ÷ 200D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 000A ÷ 0308 × 200D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 200D ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 000A ÷ 00A7 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SECTION SIGN (AI_AL) ÷ [0.3]
 × 000A ÷ 0020 ÷ 00A7 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 000A ÷ 0308 × 00A7 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 000A ÷ 0308 × 00A7 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 000A ÷ 50005 ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] <reserved-50005> (XX_AL) ÷ [0.3]
 × 000A ÷ 0020 ÷ 50005 ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 000A ÷ 0308 × 50005 ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 50005 ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 000A ÷ 0308 × 50005 ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 50005 ÷    #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 000A ÷ 0E01 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 000A ÷ 0020 ÷ 0E01 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 000A ÷ 0308 × 0E01 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 000A ÷ 0308 × 0E01 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 000A ÷ 3041 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 000A ÷ 0020 ÷ 3041 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 000A ÷ 0308 × 3041 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 000A ÷ 0308 × 0020 ÷ 3041 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 000A ÷ 0308 × 3041 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 000A ÷ 0308 × 0020 ÷ 3041 ÷     #  × [0.3] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0085 ÷ 0023 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] NUMBER SIGN (AL) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 0023 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0085 ÷ 0308 × 0023 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 0023 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0085 ÷ 0308 × 0023 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 0023 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0085 ÷ 2014 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] EM DASH (B2) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 2014 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 0085 ÷ 0308 ÷ 2014 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 2014 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 2014 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 2014 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 0085 ÷ 0009 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 0009 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0085 ÷ 0308 × 0009 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 0009 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0085 ÷ 0308 × 0009 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 0009 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0085 ÷ 00B4 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] ACUTE ACCENT (BB) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 00B4 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0085 ÷ 0308 ÷ 00B4 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 00B4 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0085 ÷ 000B ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] <LINE TABULATION> (BK) ÷ [0.3]
 × 0085 ÷ 0020 × 000B ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0085 ÷ 0308 × 000B ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 × 000B ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0085 ÷ 0308 × 000B ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 × 000B ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0085 ÷ FFFC ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0085 ÷ 0020 ÷ FFFC ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0085 ÷ 0308 ÷ FFFC ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ FFFC ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0085 ÷ 0308 ÷ FFFC ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ FFFC ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0085 ÷ 007D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0085 ÷ 0020 × 007D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0085 ÷ 0308 × 007D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 × 007D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0085 ÷ 0308 × 007D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 × 007D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0085 ÷ 0029 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0085 ÷ 0020 × 0029 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0085 ÷ 0308 × 0029 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 × 0029 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0085 ÷ 0001 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] <START OF HEADING> (CM) ÷ [0.3]
-× 0085 ÷ 0020 ÷ 0001 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0085 ÷ 0308 × 0001 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 0001 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 0085 ÷ 0308 × 0029 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 × 0029 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0085 ÷ 000D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0085 ÷ 0020 × 000D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0085 ÷ 0308 × 000D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 × 000D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0085 ÷ 0308 × 000D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 × 000D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0085 ÷ 0021 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0085 ÷ 0020 × 0021 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0085 ÷ 0308 × 0021 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 × 0021 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0085 ÷ 0308 × 0021 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 × 0021 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0085 ÷ 00A0 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 00A0 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0085 ÷ 0308 × 00A0 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0085 ÷ 0308 × 00A0 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0085 ÷ AC00 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0085 ÷ 0020 ÷ AC00 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0085 ÷ 0308 ÷ AC00 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ AC00 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0085 ÷ 0308 ÷ AC00 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ AC00 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0085 ÷ AC01 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0085 ÷ 0020 ÷ AC01 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0085 ÷ 0308 ÷ AC01 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ AC01 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0085 ÷ 0308 ÷ AC01 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ AC01 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0085 ÷ 05D0 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 05D0 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0085 ÷ 0308 × 05D0 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0085 ÷ 0308 × 05D0 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0085 ÷ 002D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 002D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0085 ÷ 0308 × 002D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 002D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0085 ÷ 0308 × 002D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 002D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0085 ÷ 231A ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] WATCH (ID) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 231A ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0085 ÷ 0308 ÷ 231A ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 231A ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 231A ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 231A ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 0085 ÷ 2024 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] ONE DOT LEADER (IN) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 2024 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0085 ÷ 0308 × 2024 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 2024 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0085 ÷ 0308 × 2024 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 2024 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0085 ÷ 002C ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMMA (IS) ÷ [0.3]
 × 0085 ÷ 0020 × 002C ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0085 ÷ 0308 × 002C ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 × 002C ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0085 ÷ 0308 × 002C ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 × 002C ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0085 ÷ 1100 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 1100 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0085 ÷ 0308 ÷ 1100 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 1100 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 1100 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 1100 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0085 ÷ 11A8 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 11A8 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0085 ÷ 0308 ÷ 11A8 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 11A8 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0085 ÷ 1160 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 1160 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0085 ÷ 0308 ÷ 1160 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 1160 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 1160 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 1160 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0085 ÷ 000A ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0085 ÷ 0020 × 000A ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0085 ÷ 0308 × 000A ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 × 000A ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0085 ÷ 0308 × 000A ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 × 000A ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0085 ÷ 0085 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0085 ÷ 0020 × 0085 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0085 ÷ 0308 × 0085 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 × 0085 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0085 ÷ 0308 × 0085 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 × 0085 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0085 ÷ 17D6 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 17D6 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0085 ÷ 0308 × 17D6 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0085 ÷ 0308 × 17D6 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0085 ÷ 0030 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] DIGIT ZERO (NU) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 0030 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0085 ÷ 0308 × 0030 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 0030 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0085 ÷ 0308 × 0030 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 0030 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0085 ÷ 0028 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 0028 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0085 ÷ 0308 × 0028 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 0028 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0085 ÷ 0308 × 0028 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 0028 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0085 ÷ 0025 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] PERCENT SIGN (PO) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 0025 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 0085 Ã· 0308 Ã· 0025 Ã·     #  Ã\97 [0.3] <NEXT LINE (NEL)> (NL) Ã· [5.04] COMBINING DIAERESIS (CM) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 0025 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 0085 Ã· 0308 Ã\97 0025 Ã·     #  Ã\97 [0.3] <NEXT LINE (NEL)> (NL) Ã· [5.04] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 0025 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0085 ÷ 0024 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] DOLLAR SIGN (PR) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 0024 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 0085 Ã· 0308 Ã· 0024 Ã·     #  Ã\97 [0.3] <NEXT LINE (NEL)> (NL) Ã· [5.04] COMBINING DIAERESIS (CM) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 0024 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 0085 Ã· 0308 Ã\97 0024 Ã·     #  Ã\97 [0.3] <NEXT LINE (NEL)> (NL) Ã· [5.04] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 0024 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0085 ÷ 0022 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] QUOTATION MARK (QU) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 0022 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0085 ÷ 0308 × 0022 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 0022 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0085 ÷ 0308 × 0022 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 0022 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0085 ÷ 0020 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [0.3]
 × 0085 ÷ 0020 × 0020 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 × 0020 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 × 0020 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0085 ÷ 002F ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SOLIDUS (SY) ÷ [0.3]
 × 0085 ÷ 0020 × 002F ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0085 ÷ 0308 × 002F ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 × 002F ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0085 ÷ 0308 × 002F ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 × 002F ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0085 ÷ 2060 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] WORD JOINER (WJ) ÷ [0.3]
 × 0085 ÷ 0020 × 2060 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0085 ÷ 0308 × 2060 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 × 2060 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0085 ÷ 0308 × 2060 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 × 2060 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0085 ÷ 200B ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0085 ÷ 0020 × 200B ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0085 ÷ 0308 × 200B ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 × 200B ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0085 ÷ 0308 × 200B ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 × 200B ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0085 ÷ 1F1E6 ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 1F1E6 ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0085 ÷ 0308 ÷ 1F1E6 ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 1F1E6 ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0085 ÷ 261D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0085 ÷ 0020 ÷ 261D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 261D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 261D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0085 ÷ 1F3FB ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0085 ÷ 0020 ÷ 1F3FB ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0085 ÷ 0308 ÷ 1F3FB ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0085 ÷ 0001 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0085 ÷ 0020 ÷ 0001 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0085 ÷ 0308 × 0001 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 0001 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0085 ÷ 200D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0085 ÷ 0020 ÷ 200D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0085 ÷ 0308 × 200D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 200D ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 0085 ÷ 00A7 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 00A7 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0085 ÷ 0308 × 00A7 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0085 ÷ 0308 × 00A7 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0085 ÷ 50005 ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 50005 ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0085 ÷ 0308 × 50005 ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 50005 ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0085 ÷ 0308 × 50005 ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 50005 ÷    #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0085 ÷ 0E01 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 0E01 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0085 ÷ 0308 × 0E01 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0085 ÷ 0308 × 0E01 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0085 ÷ 3041 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0085 ÷ 0020 ÷ 3041 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0085 ÷ 0308 × 3041 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0085 ÷ 0308 × 0020 ÷ 3041 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0085 ÷ 0308 × 3041 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0085 ÷ 0308 × 0020 ÷ 3041 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 17D6 ÷ 0023 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 17D6 × 0020 ÷ 0023 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 17D6 × 0308 ÷ 0023 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 17D6 × 0308 ÷ 0023 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 17D6 ÷ 2014 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 17D6 × 0020 ÷ 2014 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 17D6 × 0308 ÷ 2014 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 17D6 × 0308 ÷ 2014 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 17D6 × 0009 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 17D6 × 0020 ÷ 0009 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 17D6 × 0308 × 0009 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 17D6 × 0308 × 0009 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 17D6 ÷ 00B4 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 17D6 × 0020 ÷ 00B4 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 17D6 × 0308 ÷ 00B4 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 17D6 × 0308 ÷ 00B4 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 17D6 × 000B ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 17D6 × 0020 × 000B ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 17D6 × 0308 × 000B ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 17D6 × 0308 × 0020 × 000B ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 17D6 × 0308 × 000B ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 17D6 × 0308 × 0020 × 000B ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 17D6 ÷ FFFC ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 17D6 × 0020 ÷ FFFC ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 17D6 × 0308 ÷ FFFC ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 17D6 × 0308 ÷ FFFC ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 17D6 × 007D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 17D6 × 0020 × 007D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 17D6 × 0308 × 007D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 17D6 × 0308 × 0020 × 007D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 17D6 × 0308 × 007D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 17D6 × 0308 × 0020 × 007D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 17D6 × 0029 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 17D6 × 0020 × 0029 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 17D6 × 0308 × 0029 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 17D6 × 0308 × 0020 × 0029 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 17D6 × 0001 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 17D6 × 0020 ÷ 0001 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 17D6 × 0308 × 0001 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 17D6 × 0308 × 0029 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 17D6 × 0308 × 0020 × 0029 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 17D6 × 000D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 17D6 × 0020 × 000D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 17D6 × 0308 × 000D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 17D6 × 0308 × 0020 × 000D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 17D6 × 0308 × 000D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 17D6 × 0308 × 0020 × 000D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 17D6 × 0021 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 17D6 × 0020 × 0021 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 17D6 × 0308 × 0021 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 17D6 × 0308 × 0020 × 0021 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 17D6 × 0308 × 0021 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 17D6 × 0308 × 0020 × 0021 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 17D6 × 00A0 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 17D6 × 0020 ÷ 00A0 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 17D6 × 0308 × 00A0 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 17D6 × 0308 × 00A0 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 17D6 ÷ AC00 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 17D6 × 0020 ÷ AC00 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 17D6 × 0308 ÷ AC00 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 17D6 × 0308 ÷ AC00 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 17D6 ÷ AC01 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 17D6 × 0020 ÷ AC01 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 17D6 × 0308 ÷ AC01 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 17D6 × 0308 ÷ AC01 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 17D6 ÷ 05D0 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 17D6 × 0020 ÷ 05D0 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 17D6 × 0308 ÷ 05D0 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 17D6 × 0308 ÷ 05D0 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 17D6 × 002D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 17D6 × 0020 ÷ 002D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 17D6 × 0308 × 002D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 17D6 × 0308 × 002D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 17D6 ÷ 231A ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 17D6 × 0020 ÷ 231A ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 17D6 × 0308 ÷ 231A ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 17D6 × 0308 ÷ 231A ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 17D6 ÷ 2024 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 17D6 × 0020 ÷ 2024 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 17D6 × 0308 ÷ 2024 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 17D6 × 0308 ÷ 2024 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 17D6 × 002C ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [13.02] COMMA (IS) ÷ [0.3]
 × 17D6 × 0020 × 002C ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 17D6 × 0308 × 002C ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 17D6 × 0308 × 0020 × 002C ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 17D6 × 0308 × 002C ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 17D6 × 0308 × 0020 × 002C ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 17D6 ÷ 1100 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 17D6 × 0020 ÷ 1100 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 17D6 × 0308 ÷ 1100 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 17D6 × 0308 ÷ 1100 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 17D6 ÷ 11A8 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 17D6 × 0020 ÷ 11A8 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 17D6 × 0308 ÷ 11A8 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 17D6 × 0308 ÷ 11A8 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 17D6 ÷ 1160 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 17D6 × 0020 ÷ 1160 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 17D6 × 0308 ÷ 1160 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 17D6 × 0308 ÷ 1160 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 17D6 × 000A ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 17D6 × 0020 × 000A ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 17D6 × 0308 × 000A ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 17D6 × 0308 × 0020 × 000A ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 17D6 × 0308 × 000A ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 17D6 × 0308 × 0020 × 000A ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 17D6 × 0085 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 17D6 × 0020 × 0085 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 17D6 × 0308 × 0085 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 17D6 × 0308 × 0020 × 0085 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 17D6 × 0308 × 0085 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 17D6 × 0308 × 0020 × 0085 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 17D6 × 17D6 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 17D6 × 0020 ÷ 17D6 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 17D6 × 0308 × 17D6 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 17D6 × 0308 × 17D6 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 17D6 ÷ 0030 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 17D6 × 0020 ÷ 0030 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 17D6 × 0308 ÷ 0030 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 17D6 × 0308 ÷ 0030 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 17D6 ÷ 0028 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 17D6 × 0020 ÷ 0028 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 17D6 × 0308 ÷ 0028 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 17D6 × 0308 ÷ 0028 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 17D6 ÷ 0025 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 17D6 × 0020 ÷ 0025 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 17D6 × 0308 ÷ 0025 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 17D6 × 0308 ÷ 0025 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 17D6 ÷ 0024 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 17D6 × 0020 ÷ 0024 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 17D6 × 0308 ÷ 0024 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 17D6 × 0308 ÷ 0024 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 17D6 × 0022 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 17D6 × 0020 ÷ 0022 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 17D6 × 0308 × 0022 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 17D6 × 0308 × 0022 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 17D6 × 0020 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [0.3]
 × 17D6 × 0020 × 0020 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 17D6 × 0308 × 0020 × 0020 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 17D6 × 0308 × 0020 × 0020 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 17D6 × 002F ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 17D6 × 0020 × 002F ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 17D6 × 0308 × 002F ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 17D6 × 0308 × 0020 × 002F ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 17D6 × 0308 × 002F ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 17D6 × 0308 × 0020 × 002F ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 17D6 × 2060 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 17D6 × 0020 × 2060 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 17D6 × 0308 × 2060 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 17D6 × 0308 × 0020 × 2060 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 17D6 × 0308 × 2060 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 17D6 × 0308 × 0020 × 2060 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 17D6 × 200B ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 17D6 × 0020 × 200B ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 17D6 × 0308 × 200B ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 17D6 × 0308 × 0020 × 200B ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 17D6 × 0308 × 200B ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 17D6 × 0308 × 0020 × 200B ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 17D6 ÷ 1F1E6 ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 17D6 × 0020 ÷ 1F1E6 ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 17D6 × 0308 ÷ 1F1E6 ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 17D6 × 0308 ÷ 1F1E6 ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 17D6 ÷ 261D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 17D6 × 0020 ÷ 261D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 17D6 × 0308 ÷ 261D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 17D6 ÷ 1F3FB ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 17D6 × 0020 ÷ 1F3FB ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 17D6 × 0308 ÷ 1F3FB ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 17D6 × 0001 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 17D6 × 0020 ÷ 0001 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 17D6 × 0308 × 0001 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 17D6 × 200D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 17D6 × 0020 ÷ 200D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 17D6 × 0308 × 200D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 17D6 ÷ 00A7 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 17D6 × 0020 ÷ 00A7 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 17D6 × 0308 ÷ 00A7 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 17D6 × 0308 ÷ 00A7 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 17D6 ÷ 50005 ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 17D6 × 0020 ÷ 50005 ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 17D6 × 0308 ÷ 50005 ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 17D6 × 0308 ÷ 50005 ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 17D6 ÷ 0E01 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 17D6 × 0020 ÷ 0E01 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 17D6 × 0308 ÷ 0E01 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 17D6 × 0308 ÷ 0E01 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 17D6 × 3041 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 17D6 × 0020 ÷ 3041 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 17D6 × 0308 × 3041 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 17D6 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 17D6 × 0308 × 3041 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 17D6 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] KHMER SIGN CAMNUC PII KUUH (NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0030 × 0023 ÷     #  × [0.3] DIGIT ZERO (NU) × [23.03] NUMBER SIGN (AL) ÷ [0.3]
 × 0030 × 0020 ÷ 0023 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0030 × 0308 × 0023 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [23.03] NUMBER SIGN (AL) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0030 × 0308 × 0023 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.03] NUMBER SIGN (AL) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0030 ÷ 2014 ÷     #  × [0.3] DIGIT ZERO (NU) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 0030 × 0020 ÷ 2014 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 0030 × 0308 ÷ 2014 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 0030 × 0308 ÷ 2014 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 0030 × 0009 ÷     #  × [0.3] DIGIT ZERO (NU) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0030 × 0020 ÷ 0009 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0030 × 0308 × 0009 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0030 × 0308 × 0009 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0030 ÷ 00B4 ÷     #  × [0.3] DIGIT ZERO (NU) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0030 × 0020 ÷ 00B4 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0030 × 0308 ÷ 00B4 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0030 × 0308 ÷ 00B4 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0030 × 000B ÷     #  × [0.3] DIGIT ZERO (NU) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0030 × 0020 × 000B ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0030 × 0308 × 000B ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0030 × 0308 × 0020 × 000B ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0030 × 0308 × 000B ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0030 × 0308 × 0020 × 000B ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0030 ÷ FFFC ÷     #  × [0.3] DIGIT ZERO (NU) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0030 × 0020 ÷ FFFC ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0030 × 0308 ÷ FFFC ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0030 × 0308 ÷ FFFC ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0030 × 007D ÷     #  × [0.3] DIGIT ZERO (NU) × [25.04] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0030 × 0020 × 007D ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0030 × 0308 × 007D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [25.04] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0030 × 0308 × 0020 × 007D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0030 × 0308 × 007D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [25.04] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0030 × 0308 × 0020 × 007D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0030 × 0029 ÷     #  × [0.3] DIGIT ZERO (NU) × [25.04] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0030 × 0020 × 0029 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0030 × 0308 × 0029 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [25.04] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0030 × 0308 × 0020 × 0029 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0030 × 0001 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0030 × 0020 ÷ 0001 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0030 × 0308 × 0001 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 0030 × 0308 × 0029 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [25.04] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0030 × 0308 × 0020 × 0029 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0030 × 000D ÷     #  × [0.3] DIGIT ZERO (NU) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0030 × 0020 × 000D ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0030 × 0308 × 000D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0030 × 0308 × 0020 × 000D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0030 × 0308 × 000D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0030 × 0308 × 0020 × 000D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0030 × 0021 ÷     #  × [0.3] DIGIT ZERO (NU) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0030 × 0020 × 0021 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0030 × 0308 × 0021 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0030 × 0308 × 0020 × 0021 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0030 × 0308 × 0021 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0030 × 0308 × 0020 × 0021 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0030 × 00A0 ÷     #  × [0.3] DIGIT ZERO (NU) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0030 × 0020 ÷ 00A0 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0030 × 0308 × 00A0 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0030 × 0308 × 00A0 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0030 ÷ AC00 ÷     #  × [0.3] DIGIT ZERO (NU) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0030 × 0020 ÷ AC00 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0030 × 0308 ÷ AC00 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0030 × 0308 ÷ AC00 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0030 ÷ AC01 ÷     #  × [0.3] DIGIT ZERO (NU) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0030 × 0020 ÷ AC01 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0030 × 0308 ÷ AC01 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0030 × 0308 ÷ AC01 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0030 × 05D0 ÷     #  × [0.3] DIGIT ZERO (NU) × [23.03] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0030 × 0020 ÷ 05D0 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0030 × 0308 × 05D0 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [23.03] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0030 × 0308 × 05D0 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.03] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0030 × 002D ÷     #  × [0.3] DIGIT ZERO (NU) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0030 × 0020 ÷ 002D ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0030 × 0308 × 002D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0030 × 0308 × 002D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0030 ÷ 231A ÷     #  × [0.3] DIGIT ZERO (NU) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 0030 × 0020 ÷ 231A ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0030 × 0308 ÷ 231A ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0030 × 0308 ÷ 231A ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 0030 × 2024 ÷     #  × [0.3] DIGIT ZERO (NU) × [22.05] ONE DOT LEADER (IN) ÷ [0.3]
 × 0030 × 0020 ÷ 2024 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0030 × 0308 × 2024 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [22.05] ONE DOT LEADER (IN) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0030 × 0308 × 2024 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.05] ONE DOT LEADER (IN) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0030 × 002C ÷     #  × [0.3] DIGIT ZERO (NU) × [25.03] COMMA (IS) ÷ [0.3]
 × 0030 × 0020 × 002C ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0030 × 0308 × 002C ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [25.03] COMMA (IS) ÷ [0.3]
-× 0030 × 0308 × 0020 × 002C ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0030 × 0308 × 002C ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [25.03] COMMA (IS) ÷ [0.3]
+× 0030 × 0308 × 0020 × 002C ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0030 ÷ 1100 ÷     #  × [0.3] DIGIT ZERO (NU) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0030 × 0020 ÷ 1100 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0030 × 0308 ÷ 1100 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0030 × 0308 ÷ 1100 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0030 ÷ 11A8 ÷     #  × [0.3] DIGIT ZERO (NU) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0030 × 0020 ÷ 11A8 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0030 × 0308 ÷ 11A8 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0030 × 0308 ÷ 11A8 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0030 ÷ 1160 ÷     #  × [0.3] DIGIT ZERO (NU) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0030 × 0020 ÷ 1160 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0030 × 0308 ÷ 1160 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0030 × 0308 ÷ 1160 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0030 × 000A ÷     #  × [0.3] DIGIT ZERO (NU) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0030 × 0020 × 000A ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0030 × 0308 × 000A ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0030 × 0308 × 0020 × 000A ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0030 × 0308 × 000A ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0030 × 0308 × 0020 × 000A ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0030 × 0085 ÷     #  × [0.3] DIGIT ZERO (NU) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0030 × 0020 × 0085 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0030 × 0308 × 0085 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0030 × 0308 × 0020 × 0085 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0030 × 0308 × 0085 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0030 × 0308 × 0020 × 0085 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0030 × 17D6 ÷     #  × [0.3] DIGIT ZERO (NU) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0030 × 0020 ÷ 17D6 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0030 × 0308 × 17D6 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0030 × 0308 × 17D6 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0030 × 0030 ÷     #  × [0.3] DIGIT ZERO (NU) × [25.03] DIGIT ZERO (NU) ÷ [0.3]
 × 0030 × 0020 ÷ 0030 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0030 × 0308 × 0030 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [25.03] DIGIT ZERO (NU) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0030 × 0308 × 0030 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [25.03] DIGIT ZERO (NU) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0030 × 0028 ÷     #  × [0.3] DIGIT ZERO (NU) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0030 × 0020 ÷ 0028 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0030 × 0308 × 0028 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0030 × 0308 × 0028 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0030 × 0025 ÷     #  × [0.3] DIGIT ZERO (NU) × [25.05] PERCENT SIGN (PO) ÷ [0.3]
 × 0030 × 0020 ÷ 0025 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0030 × 0308 × 0025 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [25.05] PERCENT SIGN (PO) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0030 × 0308 × 0025 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [25.05] PERCENT SIGN (PO) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0030 × 0024 ÷     #  × [0.3] DIGIT ZERO (NU) × [25.05] DOLLAR SIGN (PR) ÷ [0.3]
 × 0030 × 0020 ÷ 0024 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0030 × 0308 × 0024 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [25.05] DOLLAR SIGN (PR) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0030 × 0308 × 0024 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [25.05] DOLLAR SIGN (PR) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0030 × 0022 ÷     #  × [0.3] DIGIT ZERO (NU) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 0030 × 0020 ÷ 0022 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0030 × 0308 × 0022 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0030 × 0308 × 0022 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0030 × 0020 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [0.3]
 × 0030 × 0020 × 0020 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0030 × 0308 × 0020 × 0020 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0030 × 0308 × 0020 × 0020 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0030 × 002F ÷     #  × [0.3] DIGIT ZERO (NU) × [25.03] SOLIDUS (SY) ÷ [0.3]
 × 0030 × 0020 × 002F ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0030 × 0308 × 002F ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [25.03] SOLIDUS (SY) ÷ [0.3]
-× 0030 × 0308 × 0020 × 002F ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0030 × 0308 × 002F ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [25.03] SOLIDUS (SY) ÷ [0.3]
+× 0030 × 0308 × 0020 × 002F ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0030 × 2060 ÷     #  × [0.3] DIGIT ZERO (NU) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0030 × 0020 × 2060 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0030 × 0308 × 2060 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0030 × 0308 × 0020 × 2060 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0030 × 0308 × 2060 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0030 × 0308 × 0020 × 2060 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0030 × 200B ÷     #  × [0.3] DIGIT ZERO (NU) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0030 × 0020 × 200B ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0030 × 0308 × 200B ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0030 × 0308 × 0020 × 200B ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0030 × 0308 × 200B ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0030 × 0308 × 0020 × 200B ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0030 ÷ 1F1E6 ÷    #  × [0.3] DIGIT ZERO (NU) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 0030 × 0020 ÷ 1F1E6 ÷    #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0030 × 0308 ÷ 1F1E6 ÷    #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0030 × 0308 ÷ 1F1E6 ÷    #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0030 ÷ 261D ÷     #  × [0.3] DIGIT ZERO (NU) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0030 × 0020 ÷ 261D ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0030 × 0308 ÷ 261D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0030 ÷ 1F3FB ÷    #  × [0.3] DIGIT ZERO (NU) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0030 × 0020 ÷ 1F3FB ÷    #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0030 × 0308 ÷ 1F3FB ÷    #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0030 × 0001 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0030 × 0020 ÷ 0001 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0030 × 0308 × 0001 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0030 × 200D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0030 × 0020 ÷ 200D ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0030 × 0308 × 200D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 0030 × 00A7 ÷     #  × [0.3] DIGIT ZERO (NU) × [23.03] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0030 × 0020 ÷ 00A7 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0030 × 0308 × 00A7 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [23.03] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0030 × 0308 × 00A7 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.03] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0030 × 50005 ÷    #  × [0.3] DIGIT ZERO (NU) × [23.03] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0030 × 0020 ÷ 50005 ÷    #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0030 × 0308 × 50005 ÷    #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [23.03] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0030 × 0308 × 50005 ÷    #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.03] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0030 × 0E01 ÷     #  × [0.3] DIGIT ZERO (NU) × [23.03] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0030 × 0020 ÷ 0E01 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0030 × 0308 × 0E01 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [23.03] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0030 × 0308 × 0E01 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.03] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0030 × 3041 ÷     #  × [0.3] DIGIT ZERO (NU) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0030 × 0020 ÷ 3041 ÷     #  × [0.3] DIGIT ZERO (NU) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0030 × 0308 × 3041 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0030 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0030 × 0308 × 3041 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0030 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] DIGIT ZERO (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0028 × 0023 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0028 × 0020 × 0023 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0028 × 0308 × 0023 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0028 × 0308 × 0020 × 0023 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0028 × 0308 × 0023 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0028 × 0308 × 0020 × 0023 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0028 × 2014 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] EM DASH (B2) ÷ [0.3]
 × 0028 × 0020 × 2014 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] EM DASH (B2) ÷ [0.3]
-× 0028 × 0308 × 2014 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] EM DASH (B2) ÷ [0.3]
-× 0028 × 0308 × 0020 × 2014 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] EM DASH (B2) ÷ [0.3]
+× 0028 × 0308 × 2014 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] EM DASH (B2) ÷ [0.3]
+× 0028 × 0308 × 0020 × 2014 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] EM DASH (B2) ÷ [0.3]
 × 0028 × 0009 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0028 × 0020 × 0009 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0028 × 0308 × 0009 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0028 × 0308 × 0020 × 0009 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0028 × 0308 × 0009 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0028 × 0308 × 0020 × 0009 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0028 × 00B4 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0028 × 0020 × 00B4 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0028 × 0308 × 00B4 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0028 × 0308 × 0020 × 00B4 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0028 × 0308 × 00B4 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0028 × 0308 × 0020 × 00B4 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0028 × 000B ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0028 × 0020 × 000B ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0028 × 0308 × 000B ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0028 × 0308 × 0020 × 000B ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0028 × 0308 × 000B ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0028 × 0308 × 0020 × 000B ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0028 × FFFC ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0028 × 0020 × FFFC ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0028 × 0308 × FFFC ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0028 × 0308 × 0020 × FFFC ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0028 × 0308 × FFFC ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0028 × 0308 × 0020 × FFFC ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0028 × 007D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0028 × 0020 × 007D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0028 × 0308 × 007D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0028 × 0308 × 0020 × 007D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0028 × 0308 × 007D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0028 × 0308 × 0020 × 007D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0028 × 0029 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0028 × 0020 × 0029 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0028 × 0308 × 0029 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0028 × 0308 × 0020 × 0029 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0028 × 0001 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0028 × 0020 × 0001 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0028 × 0308 × 0001 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0028 × 0308 × 0020 × 0001 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] <START OF HEADING> (CM) ÷ [0.3]
+× 0028 × 0308 × 0029 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0028 × 0308 × 0020 × 0029 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0028 × 000D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0028 × 0020 × 000D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0028 × 0308 × 000D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0028 × 0308 × 0020 × 000D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0028 × 0308 × 000D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0028 × 0308 × 0020 × 000D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0028 × 0021 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0028 × 0020 × 0021 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0028 × 0308 × 0021 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0028 × 0308 × 0020 × 0021 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0028 × 0308 × 0021 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0028 × 0308 × 0020 × 0021 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0028 × 00A0 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0028 × 0020 × 00A0 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0028 × 0308 × 00A0 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0028 × 0308 × 0020 × 00A0 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0028 × 0308 × 00A0 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0028 × 0308 × 0020 × 00A0 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0028 × AC00 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0028 × 0020 × AC00 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0028 × 0308 × AC00 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0028 × 0308 × 0020 × AC00 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0028 × 0308 × AC00 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0028 × 0308 × 0020 × AC00 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0028 × AC01 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0028 × 0020 × AC01 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0028 × 0308 × AC01 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0028 × 0308 × 0020 × AC01 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0028 × 0308 × AC01 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0028 × 0308 × 0020 × AC01 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0028 × 05D0 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0028 × 0020 × 05D0 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0028 × 0308 × 05D0 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0028 × 0308 × 0020 × 05D0 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0028 × 0308 × 05D0 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0028 × 0308 × 0020 × 05D0 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0028 × 002D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0028 × 0020 × 002D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0028 × 0308 × 002D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0028 × 0308 × 0020 × 002D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0028 × 0308 × 002D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0028 × 0308 × 0020 × 002D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0028 × 231A ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] WATCH (ID) ÷ [0.3]
 × 0028 × 0020 × 231A ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] WATCH (ID) ÷ [0.3]
-× 0028 × 0308 × 231A ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] WATCH (ID) ÷ [0.3]
-× 0028 × 0308 × 0020 × 231A ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] WATCH (ID) ÷ [0.3]
+× 0028 × 0308 × 231A ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] WATCH (ID) ÷ [0.3]
+× 0028 × 0308 × 0020 × 231A ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] WATCH (ID) ÷ [0.3]
 × 0028 × 2024 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0028 × 0020 × 2024 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0028 × 0308 × 2024 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0028 × 0308 × 0020 × 2024 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0028 × 0308 × 2024 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0028 × 0308 × 0020 × 2024 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0028 × 002C ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0028 × 0020 × 002C ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0028 × 0308 × 002C ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 0028 × 0308 × 0020 × 002C ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0028 × 0308 × 002C ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 0028 × 0308 × 0020 × 002C ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0028 × 1100 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0028 × 0020 × 1100 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0028 × 0308 × 1100 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0028 × 0308 × 0020 × 1100 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0028 × 0308 × 1100 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0028 × 0308 × 0020 × 1100 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0028 × 11A8 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0028 × 0020 × 11A8 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0028 × 0308 × 11A8 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0028 × 0308 × 0020 × 11A8 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0028 × 0308 × 11A8 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0028 × 0308 × 0020 × 11A8 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0028 × 1160 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0028 × 0020 × 1160 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0028 × 0308 × 1160 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0028 × 0308 × 0020 × 1160 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0028 × 0308 × 1160 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0028 × 0308 × 0020 × 1160 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0028 × 000A ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0028 × 0020 × 000A ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0028 × 0308 × 000A ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0028 × 0308 × 0020 × 000A ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0028 × 0308 × 000A ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0028 × 0308 × 0020 × 000A ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0028 × 0085 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0028 × 0020 × 0085 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0028 × 0308 × 0085 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0028 × 0308 × 0020 × 0085 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0028 × 0308 × 0085 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0028 × 0308 × 0020 × 0085 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0028 × 17D6 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0028 × 0020 × 17D6 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0028 × 0308 × 17D6 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0028 × 0308 × 0020 × 17D6 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0028 × 0308 × 17D6 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0028 × 0308 × 0020 × 17D6 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0028 × 0030 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0028 × 0020 × 0030 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0028 × 0308 × 0030 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0028 × 0308 × 0020 × 0030 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0028 × 0308 × 0030 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0028 × 0308 × 0020 × 0030 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0028 × 0028 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0028 × 0020 × 0028 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0028 × 0308 × 0028 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0028 × 0308 × 0020 × 0028 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0028 × 0308 × 0028 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0028 × 0308 × 0020 × 0028 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0028 × 0025 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0028 × 0020 × 0025 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0028 × 0308 × 0025 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0028 × 0308 × 0020 × 0025 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0028 × 0308 × 0025 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0028 × 0308 × 0020 × 0025 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0028 × 0024 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0028 × 0020 × 0024 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0028 × 0308 × 0024 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0028 × 0308 × 0020 × 0024 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0028 × 0308 × 0024 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0028 × 0308 × 0020 × 0024 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0028 × 0022 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0028 × 0020 × 0022 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0028 × 0308 × 0022 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0028 × 0308 × 0020 × 0022 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0028 × 0308 × 0022 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0028 × 0308 × 0020 × 0022 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0028 × 0020 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0028 × 0020 × 0020 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0028 × 0308 × 0020 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0028 × 0308 × 0020 × 0020 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0028 × 0308 × 0020 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0028 × 0308 × 0020 × 0020 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0028 × 002F ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0028 × 0020 × 002F ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0028 × 0308 × 002F ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 0028 × 0308 × 0020 × 002F ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0028 × 0308 × 002F ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 0028 × 0308 × 0020 × 002F ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0028 × 2060 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0028 × 0020 × 2060 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0028 × 0308 × 2060 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0028 × 0308 × 0020 × 2060 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0028 × 0308 × 2060 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0028 × 0308 × 0020 × 2060 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0028 × 200B ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0028 × 0020 × 200B ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0028 × 0308 × 200B ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0028 × 0308 × 0020 × 200B ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0028 × 0308 × 200B ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0028 × 0308 × 0020 × 200B ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0028 × 1F1E6 ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 0028 × 0020 × 1F1E6 ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0028 × 0308 × 1F1E6 ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0028 × 0308 × 0020 × 1F1E6 ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0028 × 0308 × 1F1E6 ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0028 × 0308 × 0020 × 1F1E6 ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0028 × 261D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0028 × 0020 × 261D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0028 × 0308 × 261D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0028 × 0308 × 0020 × 261D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0028 × 1F3FB ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0028 × 0020 × 1F3FB ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0028 × 0308 × 1F3FB ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0028 × 0308 × 0020 × 1F3FB ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0028 × 0001 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0028 × 0020 × 0001 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0028 × 0308 × 0001 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0028 × 0308 × 0020 × 0001 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0028 × 200D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0028 × 0020 × 200D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0028 × 0308 × 200D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0028 × 0308 × 0020 × 200D ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 0028 × 00A7 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0028 × 0020 × 00A7 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0028 × 0308 × 00A7 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0028 × 0308 × 0020 × 00A7 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0028 × 0308 × 00A7 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0028 × 0308 × 0020 × 00A7 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0028 × 50005 ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0028 × 0020 × 50005 ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0028 × 0308 × 50005 ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0028 × 0308 × 0020 × 50005 ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0028 × 0308 × 50005 ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0028 × 0308 × 0020 × 50005 ÷    #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0028 × 0E01 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0028 × 0020 × 0E01 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0028 × 0308 × 0E01 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0028 × 0308 × 0020 × 0E01 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0028 × 0308 × 0E01 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0028 × 0308 × 0020 × 0E01 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0028 × 3041 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0028 × 0020 × 3041 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0028 × 0308 × 3041 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [14.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0028 × 0308 × 0020 × 3041 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [14.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0025 × 0023 ÷     #  × [0.3] PERCENT SIGN (PO) × [24.03] NUMBER SIGN (AL) ÷ [0.3]
+× 0028 × 0308 × 3041 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [14.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0028 × 0308 × 0020 × 3041 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [14.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0025 × 0023 ÷     #  × [0.3] PERCENT SIGN (PO) × [24.02] NUMBER SIGN (AL) ÷ [0.3]
 × 0025 × 0020 ÷ 0023 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0025 × 0308 × 0023 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [24.03] NUMBER SIGN (AL) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0025 × 0308 × 0023 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.02] NUMBER SIGN (AL) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0025 ÷ 2014 ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 0025 × 0020 ÷ 2014 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 0025 × 0308 ÷ 2014 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 0025 × 0308 ÷ 2014 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 0025 × 0009 ÷     #  × [0.3] PERCENT SIGN (PO) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0025 × 0020 ÷ 0009 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0025 × 0308 × 0009 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0025 × 0308 × 0009 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0025 ÷ 00B4 ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0025 × 0020 ÷ 00B4 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0025 × 0308 ÷ 00B4 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0025 × 0308 ÷ 00B4 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0025 × 000B ÷     #  × [0.3] PERCENT SIGN (PO) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0025 × 0020 × 000B ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0025 × 0308 × 000B ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0025 × 0308 × 0020 × 000B ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0025 × 0308 × 000B ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0025 × 0308 × 0020 × 000B ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0025 ÷ FFFC ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0025 × 0020 ÷ FFFC ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0025 × 0308 ÷ FFFC ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0025 × 0308 ÷ FFFC ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0025 × 007D ÷     #  × [0.3] PERCENT SIGN (PO) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0025 × 0020 × 007D ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0025 × 0308 × 007D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0025 × 0308 × 0020 × 007D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0025 × 0308 × 007D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0025 × 0308 × 0020 × 007D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0025 × 0029 ÷     #  × [0.3] PERCENT SIGN (PO) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0025 × 0020 × 0029 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0025 × 0308 × 0029 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0025 × 0308 × 0020 × 0029 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0025 × 0001 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0025 × 0020 ÷ 0001 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0025 × 0308 × 0001 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 0025 × 0308 × 0029 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0025 × 0308 × 0020 × 0029 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0025 × 000D ÷     #  × [0.3] PERCENT SIGN (PO) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0025 × 0020 × 000D ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0025 × 0308 × 000D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0025 × 0308 × 0020 × 000D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0025 × 0308 × 000D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0025 × 0308 × 0020 × 000D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0025 × 0021 ÷     #  × [0.3] PERCENT SIGN (PO) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0025 × 0020 × 0021 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0025 × 0308 × 0021 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0025 × 0308 × 0020 × 0021 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0025 × 0308 × 0021 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0025 × 0308 × 0020 × 0021 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0025 × 00A0 ÷     #  × [0.3] PERCENT SIGN (PO) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0025 × 0020 ÷ 00A0 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0025 × 0308 × 00A0 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0025 × 0308 × 00A0 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0025 ÷ AC00 ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0025 × 0020 ÷ AC00 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0025 × 0308 ÷ AC00 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0025 × 0308 ÷ AC00 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0025 ÷ AC01 ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0025 × 0020 ÷ AC01 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0025 × 0308 ÷ AC01 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0025 × 05D0 ÷     #  × [0.3] PERCENT SIGN (PO) × [24.03] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0025 × 0308 ÷ AC01 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0025 × 05D0 ÷     #  × [0.3] PERCENT SIGN (PO) × [24.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0025 × 0020 ÷ 05D0 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0025 × 0308 × 05D0 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [24.03] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0025 × 0308 × 05D0 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0025 × 002D ÷     #  × [0.3] PERCENT SIGN (PO) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0025 × 0020 ÷ 002D ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0025 × 0308 × 002D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0025 × 0308 × 002D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0025 ÷ 231A ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 0025 × 0020 ÷ 231A ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0025 × 0308 ÷ 231A ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0025 × 0308 ÷ 231A ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 0025 ÷ 2024 ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0025 × 0020 ÷ 2024 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0025 × 0308 ÷ 2024 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0025 × 0308 ÷ 2024 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0025 × 002C ÷     #  × [0.3] PERCENT SIGN (PO) × [13.02] COMMA (IS) ÷ [0.3]
 × 0025 × 0020 × 002C ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0025 × 0308 × 002C ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 0025 × 0308 × 0020 × 002C ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0025 × 0308 × 002C ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 0025 × 0308 × 0020 × 002C ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0025 ÷ 1100 ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0025 × 0020 ÷ 1100 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0025 × 0308 ÷ 1100 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0025 × 0308 ÷ 1100 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0025 ÷ 11A8 ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0025 × 0020 ÷ 11A8 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0025 × 0308 ÷ 11A8 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0025 × 0308 ÷ 11A8 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0025 ÷ 1160 ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0025 × 0020 ÷ 1160 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0025 × 0308 ÷ 1160 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0025 × 0308 ÷ 1160 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0025 × 000A ÷     #  × [0.3] PERCENT SIGN (PO) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0025 × 0020 × 000A ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0025 × 0308 × 000A ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0025 × 0308 × 0020 × 000A ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0025 × 0308 × 000A ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0025 × 0308 × 0020 × 000A ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0025 × 0085 ÷     #  × [0.3] PERCENT SIGN (PO) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0025 × 0020 × 0085 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0025 × 0308 × 0085 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0025 × 0308 × 0020 × 0085 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0025 × 0308 × 0085 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0025 × 0308 × 0020 × 0085 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0025 × 17D6 ÷     #  × [0.3] PERCENT SIGN (PO) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0025 × 0020 ÷ 17D6 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0025 × 0308 × 17D6 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0025 × 0308 × 17D6 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0025 × 0030 ÷     #  × [0.3] PERCENT SIGN (PO) × [25.01] DIGIT ZERO (NU) ÷ [0.3]
 × 0025 × 0020 ÷ 0030 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0025 × 0308 × 0030 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [25.01] DIGIT ZERO (NU) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0025 × 0308 × 0030 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [25.01] DIGIT ZERO (NU) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0025 ÷ 0028 ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0025 × 0020 ÷ 0028 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0025 × 0308 ÷ 0028 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0025 × 0308 ÷ 0028 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0025 ÷ 0025 ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0025 × 0020 ÷ 0025 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0025 × 0308 ÷ 0025 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0025 × 0308 ÷ 0025 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0025 ÷ 0024 ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0025 × 0020 ÷ 0024 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0025 × 0308 ÷ 0024 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0025 × 0308 ÷ 0024 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0025 × 0022 ÷     #  × [0.3] PERCENT SIGN (PO) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 0025 × 0020 ÷ 0022 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0025 × 0308 × 0022 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0025 × 0308 × 0022 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0025 × 0020 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [0.3]
 × 0025 × 0020 × 0020 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0025 × 0308 × 0020 × 0020 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0025 × 0308 × 0020 × 0020 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0025 × 002F ÷     #  × [0.3] PERCENT SIGN (PO) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0025 × 0020 × 002F ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0025 × 0308 × 002F ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 0025 × 0308 × 0020 × 002F ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0025 × 0308 × 002F ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 0025 × 0308 × 0020 × 002F ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0025 × 2060 ÷     #  × [0.3] PERCENT SIGN (PO) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0025 × 0020 × 2060 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0025 × 0308 × 2060 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0025 × 0308 × 0020 × 2060 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0025 × 0308 × 2060 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0025 × 0308 × 0020 × 2060 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0025 × 200B ÷     #  × [0.3] PERCENT SIGN (PO) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0025 × 0020 × 200B ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0025 × 0308 × 200B ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0025 × 0308 × 0020 × 200B ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0025 × 0308 × 200B ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0025 × 0308 × 0020 × 200B ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0025 ÷ 1F1E6 ÷    #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 0025 × 0020 ÷ 1F1E6 ÷    #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0025 × 0308 ÷ 1F1E6 ÷    #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0025 × 00A7 ÷     #  × [0.3] PERCENT SIGN (PO) × [24.03] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0025 × 0308 ÷ 1F1E6 ÷    #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0025 ÷ 261D ÷     #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0025 × 0020 ÷ 261D ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0025 × 0308 ÷ 261D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0025 ÷ 1F3FB ÷    #  × [0.3] PERCENT SIGN (PO) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0025 × 0020 ÷ 1F3FB ÷    #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0025 × 0308 ÷ 1F3FB ÷    #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0025 × 0001 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0025 × 0020 ÷ 0001 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0025 × 0308 × 0001 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0025 × 200D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0025 × 0020 ÷ 200D ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0025 × 0308 × 200D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0025 × 00A7 ÷     #  × [0.3] PERCENT SIGN (PO) × [24.02] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0025 × 0020 ÷ 00A7 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0025 × 0308 × 00A7 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [24.03] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0025 × 50005 ÷    #  × [0.3] PERCENT SIGN (PO) × [24.03] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0025 × 0308 × 00A7 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.02] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0025 × 50005 ÷    #  × [0.3] PERCENT SIGN (PO) × [24.02] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0025 × 0020 ÷ 50005 ÷    #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0025 × 0308 × 50005 ÷    #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [24.03] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0025 × 0E01 ÷     #  × [0.3] PERCENT SIGN (PO) × [24.03] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0025 × 0308 × 50005 ÷    #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.02] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0025 × 0E01 ÷     #  × [0.3] PERCENT SIGN (PO) × [24.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0025 × 0020 ÷ 0E01 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0025 × 0308 × 0E01 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [24.03] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0025 × 0308 × 0E01 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0025 × 3041 ÷     #  × [0.3] PERCENT SIGN (PO) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0025 × 0020 ÷ 3041 ÷     #  × [0.3] PERCENT SIGN (PO) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0025 × 0308 × 3041 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0025 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0025 × 0308 × 3041 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0025 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] PERCENT SIGN (PO) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0024 × 0023 ÷     #  × [0.3] DOLLAR SIGN (PR) × [24.02] NUMBER SIGN (AL) ÷ [0.3]
 × 0024 × 0020 ÷ 0023 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0024 × 0308 × 0023 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [24.02] NUMBER SIGN (AL) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0024 × 0308 × 0023 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.02] NUMBER SIGN (AL) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0024 ÷ 2014 ÷     #  × [0.3] DOLLAR SIGN (PR) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 0024 × 0020 ÷ 2014 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 0024 × 0308 ÷ 2014 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 0024 × 0308 ÷ 2014 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 0024 × 0009 ÷     #  × [0.3] DOLLAR SIGN (PR) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0024 × 0020 ÷ 0009 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0024 × 0308 × 0009 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0024 × 0308 × 0009 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0024 ÷ 00B4 ÷     #  × [0.3] DOLLAR SIGN (PR) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0024 × 0020 ÷ 00B4 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0024 × 0308 ÷ 00B4 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0024 × 0308 ÷ 00B4 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0024 × 000B ÷     #  × [0.3] DOLLAR SIGN (PR) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0024 × 0020 × 000B ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0024 × 0308 × 000B ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0024 × 0308 × 0020 × 000B ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0024 × 0308 × 000B ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0024 × 0308 × 0020 × 000B ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0024 ÷ FFFC ÷     #  × [0.3] DOLLAR SIGN (PR) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0024 × 0020 ÷ FFFC ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0024 × 0308 ÷ FFFC ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0024 × 0308 ÷ FFFC ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0024 × 007D ÷     #  × [0.3] DOLLAR SIGN (PR) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0024 × 0020 × 007D ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0024 × 0308 × 007D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0024 × 0308 × 0020 × 007D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0024 × 0308 × 007D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0024 × 0308 × 0020 × 007D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0024 × 0029 ÷     #  × [0.3] DOLLAR SIGN (PR) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0024 × 0020 × 0029 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0024 × 0308 × 0029 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0024 × 0308 × 0020 × 0029 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0024 × 0001 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0024 × 0020 ÷ 0001 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0024 × 0308 × 0001 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 0024 × 0308 × 0029 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0024 × 0308 × 0020 × 0029 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0024 × 000D ÷     #  × [0.3] DOLLAR SIGN (PR) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0024 × 0020 × 000D ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0024 × 0308 × 000D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0024 × 0308 × 0020 × 000D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0024 × 0308 × 000D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0024 × 0308 × 0020 × 000D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0024 × 0021 ÷     #  × [0.3] DOLLAR SIGN (PR) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0024 × 0020 × 0021 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0024 × 0308 × 0021 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0024 × 0308 × 0020 × 0021 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0024 × 0308 × 0021 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0024 × 0308 × 0020 × 0021 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0024 × 00A0 ÷     #  × [0.3] DOLLAR SIGN (PR) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0024 × 0020 ÷ 00A0 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0024 × 0308 × 00A0 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0024 × 0308 × 00A0 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0024 × AC00 ÷     #  × [0.3] DOLLAR SIGN (PR) × [27.03] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0024 × 0020 ÷ AC00 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0024 × 0308 × AC00 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [27.03] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0024 × 0308 × AC00 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.03] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0024 × AC01 ÷     #  × [0.3] DOLLAR SIGN (PR) × [27.03] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0024 × 0020 ÷ AC01 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0024 × 0308 × AC01 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [27.03] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0024 × 0308 × AC01 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.03] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0024 × 05D0 ÷     #  × [0.3] DOLLAR SIGN (PR) × [24.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0024 × 0020 ÷ 05D0 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0024 × 0308 × 05D0 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [24.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0024 × 0308 × 05D0 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0024 × 002D ÷     #  × [0.3] DOLLAR SIGN (PR) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0024 × 0020 ÷ 002D ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0024 × 0308 × 002D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0024 × 231A ÷     #  × [0.3] DOLLAR SIGN (PR) × [24.01] WATCH (ID) ÷ [0.3]
+× 0024 × 0308 × 002D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0024 × 231A ÷     #  × [0.3] DOLLAR SIGN (PR) × [23.12] WATCH (ID) ÷ [0.3]
 × 0024 × 0020 ÷ 231A ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0024 × 0308 × 231A ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [24.01] WATCH (ID) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0024 × 0308 × 231A ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.12] WATCH (ID) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 0024 ÷ 2024 ÷     #  × [0.3] DOLLAR SIGN (PR) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0024 × 0020 ÷ 2024 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0024 × 0308 ÷ 2024 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0024 × 0308 ÷ 2024 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0024 × 002C ÷     #  × [0.3] DOLLAR SIGN (PR) × [13.02] COMMA (IS) ÷ [0.3]
 × 0024 × 0020 × 002C ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0024 × 0308 × 002C ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 0024 × 0308 × 0020 × 002C ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0024 × 0308 × 002C ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 0024 × 0308 × 0020 × 002C ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0024 × 1100 ÷     #  × [0.3] DOLLAR SIGN (PR) × [27.03] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0024 × 0020 ÷ 1100 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0024 × 0308 × 1100 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [27.03] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0024 × 0308 × 1100 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.03] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0024 × 11A8 ÷     #  × [0.3] DOLLAR SIGN (PR) × [27.03] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0024 × 0020 ÷ 11A8 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0024 × 0308 × 11A8 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [27.03] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0024 × 0308 × 11A8 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.03] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0024 × 1160 ÷     #  × [0.3] DOLLAR SIGN (PR) × [27.03] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0024 × 0020 ÷ 1160 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0024 × 0308 × 1160 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [27.03] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0024 × 0308 × 1160 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [27.03] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0024 × 000A ÷     #  × [0.3] DOLLAR SIGN (PR) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0024 × 0020 × 000A ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0024 × 0308 × 000A ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0024 × 0308 × 0020 × 000A ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0024 × 0308 × 000A ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0024 × 0308 × 0020 × 000A ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0024 × 0085 ÷     #  × [0.3] DOLLAR SIGN (PR) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0024 × 0020 × 0085 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0024 × 0308 × 0085 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0024 × 0308 × 0020 × 0085 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0024 × 0308 × 0085 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0024 × 0308 × 0020 × 0085 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0024 × 17D6 ÷     #  × [0.3] DOLLAR SIGN (PR) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0024 × 0020 ÷ 17D6 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0024 × 0308 × 17D6 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0024 × 0308 × 17D6 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0024 × 0030 ÷     #  × [0.3] DOLLAR SIGN (PR) × [25.01] DIGIT ZERO (NU) ÷ [0.3]
 × 0024 × 0020 ÷ 0030 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0024 × 0308 × 0030 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [25.01] DIGIT ZERO (NU) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0024 × 0308 × 0030 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [25.01] DIGIT ZERO (NU) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0024 ÷ 0028 ÷     #  × [0.3] DOLLAR SIGN (PR) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0024 × 0020 ÷ 0028 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0024 × 0308 ÷ 0028 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0024 × 0308 ÷ 0028 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0024 ÷ 0025 ÷     #  × [0.3] DOLLAR SIGN (PR) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0024 × 0020 ÷ 0025 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0024 × 0308 ÷ 0025 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0024 × 0308 ÷ 0025 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0024 ÷ 0024 ÷     #  × [0.3] DOLLAR SIGN (PR) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0024 × 0020 ÷ 0024 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0024 × 0308 ÷ 0024 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0024 × 0308 ÷ 0024 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0024 × 0022 ÷     #  × [0.3] DOLLAR SIGN (PR) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 0024 × 0020 ÷ 0022 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0024 × 0308 × 0022 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0024 × 0308 × 0022 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0024 × 0020 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [0.3]
 × 0024 × 0020 × 0020 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0024 × 0308 × 0020 × 0020 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0024 × 0308 × 0020 × 0020 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0024 × 002F ÷     #  × [0.3] DOLLAR SIGN (PR) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0024 × 0020 × 002F ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0024 × 0308 × 002F ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 0024 × 0308 × 0020 × 002F ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0024 × 0308 × 002F ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 0024 × 0308 × 0020 × 002F ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0024 × 2060 ÷     #  × [0.3] DOLLAR SIGN (PR) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0024 × 0020 × 2060 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0024 × 0308 × 2060 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0024 × 0308 × 0020 × 2060 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0024 × 0308 × 2060 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0024 × 0308 × 0020 × 2060 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0024 × 200B ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0024 × 0020 × 200B ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0024 × 0308 × 200B ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0024 × 0308 × 0020 × 200B ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0024 × 0308 × 200B ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0024 × 0308 × 0020 × 200B ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0024 ÷ 1F1E6 ÷    #  × [0.3] DOLLAR SIGN (PR) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 0024 × 0020 ÷ 1F1E6 ÷    #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0024 × 0308 ÷ 1F1E6 ÷    #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0024 × 0308 ÷ 1F1E6 ÷    #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0024 × 261D ÷     #  × [0.3] DOLLAR SIGN (PR) × [23.12] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0024 × 0020 ÷ 261D ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0024 × 0308 × 261D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.12] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0024 × 1F3FB ÷    #  × [0.3] DOLLAR SIGN (PR) × [23.12] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0024 × 0020 ÷ 1F3FB ÷    #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0024 × 0308 × 1F3FB ÷    #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.12] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0024 × 0001 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0024 × 0020 ÷ 0001 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0024 × 0308 × 0001 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0024 × 200D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0024 × 0020 ÷ 200D ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0024 × 0308 × 200D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 0024 × 00A7 ÷     #  × [0.3] DOLLAR SIGN (PR) × [24.02] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0024 × 0020 ÷ 00A7 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0024 × 0308 × 00A7 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [24.02] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0024 × 0308 × 00A7 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.02] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0024 × 50005 ÷    #  × [0.3] DOLLAR SIGN (PR) × [24.02] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0024 × 0020 ÷ 50005 ÷    #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0024 × 0308 × 50005 ÷    #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [24.02] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0024 × 0308 × 50005 ÷    #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.02] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0024 × 0E01 ÷     #  × [0.3] DOLLAR SIGN (PR) × [24.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0024 × 0020 ÷ 0E01 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0024 × 0308 × 0E01 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [24.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0024 × 0308 × 0E01 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0024 × 3041 ÷     #  × [0.3] DOLLAR SIGN (PR) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0024 × 0020 ÷ 3041 ÷     #  × [0.3] DOLLAR SIGN (PR) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0024 × 0308 × 3041 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0024 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0024 × 0308 × 3041 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0024 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] DOLLAR SIGN (PR) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0022 × 0023 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] NUMBER SIGN (AL) ÷ [0.3]
 × 0022 × 0020 ÷ 0023 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0022 × 0308 × 0023 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] NUMBER SIGN (AL) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0022 × 0308 × 0023 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] NUMBER SIGN (AL) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0022 × 2014 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] EM DASH (B2) ÷ [0.3]
 × 0022 × 0020 ÷ 2014 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 0022 × 0308 × 2014 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] EM DASH (B2) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 0022 × 0308 × 2014 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] EM DASH (B2) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 0022 × 0009 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0022 × 0020 ÷ 0009 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0022 × 0308 × 0009 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0022 × 0308 × 0009 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0022 × 00B4 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] ACUTE ACCENT (BB) ÷ [0.3]
 × 0022 × 0020 ÷ 00B4 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0022 × 0308 × 00B4 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] ACUTE ACCENT (BB) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0022 × 0308 × 00B4 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] ACUTE ACCENT (BB) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0022 × 000B ÷     #  × [0.3] QUOTATION MARK (QU) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0022 × 0020 × 000B ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0022 × 0308 × 000B ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0022 × 0308 × 0020 × 000B ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0022 × 0308 × 000B ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0022 × 0308 × 0020 × 000B ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0022 × FFFC ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0022 × 0020 ÷ FFFC ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0022 × 0308 × FFFC ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0022 × 0308 × FFFC ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0022 × 007D ÷     #  × [0.3] QUOTATION MARK (QU) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0022 × 0020 × 007D ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0022 × 0308 × 007D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0022 × 0308 × 0020 × 007D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0022 × 0308 × 007D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0022 × 0308 × 0020 × 007D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0022 × 0029 ÷     #  × [0.3] QUOTATION MARK (QU) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0022 × 0020 × 0029 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0022 × 0308 × 0029 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0022 × 0308 × 0020 × 0029 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0022 × 0001 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0022 × 0020 ÷ 0001 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0022 × 0308 × 0001 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 0022 × 0308 × 0029 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0022 × 0308 × 0020 × 0029 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0022 × 000D ÷     #  × [0.3] QUOTATION MARK (QU) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0022 × 0020 × 000D ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0022 × 0308 × 000D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0022 × 0308 × 0020 × 000D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0022 × 0308 × 000D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0022 × 0308 × 0020 × 000D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0022 × 0021 ÷     #  × [0.3] QUOTATION MARK (QU) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0022 × 0020 × 0021 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0022 × 0308 × 0021 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0022 × 0308 × 0020 × 0021 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0022 × 0308 × 0021 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0022 × 0308 × 0020 × 0021 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0022 × 00A0 ÷     #  × [0.3] QUOTATION MARK (QU) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0022 × 0020 ÷ 00A0 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0022 × 0308 × 00A0 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0022 × 0308 × 00A0 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0022 × AC00 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0022 × 0020 ÷ AC00 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0022 × 0308 × AC00 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0022 × 0308 × AC00 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0022 × AC01 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0022 × 0020 ÷ AC01 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0022 × 0308 × AC01 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0022 × 0308 × AC01 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0022 × 05D0 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0022 × 0020 ÷ 05D0 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0022 × 0308 × 05D0 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0022 × 0308 × 05D0 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0022 × 002D ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0022 × 0020 ÷ 002D ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0022 × 0308 × 002D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0022 × 0308 × 002D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0022 × 231A ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] WATCH (ID) ÷ [0.3]
 × 0022 × 0020 ÷ 231A ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0022 × 0308 × 231A ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] WATCH (ID) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0022 × 0308 × 231A ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] WATCH (ID) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 0022 × 2024 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] ONE DOT LEADER (IN) ÷ [0.3]
 × 0022 × 0020 ÷ 2024 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0022 × 0308 × 2024 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] ONE DOT LEADER (IN) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0022 × 0308 × 2024 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] ONE DOT LEADER (IN) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0022 × 002C ÷     #  × [0.3] QUOTATION MARK (QU) × [13.02] COMMA (IS) ÷ [0.3]
 × 0022 × 0020 × 002C ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0022 × 0308 × 002C ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 0022 × 0308 × 0020 × 002C ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0022 × 0308 × 002C ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 0022 × 0308 × 0020 × 002C ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0022 × 1100 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0022 × 0020 ÷ 1100 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0022 × 0308 × 1100 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0022 × 0308 × 1100 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0022 × 11A8 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0022 × 0020 ÷ 11A8 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0022 × 0308 × 11A8 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0022 × 0308 × 11A8 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0022 × 1160 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0022 × 0020 ÷ 1160 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0022 × 0308 × 1160 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0022 × 0308 × 1160 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0022 × 000A ÷     #  × [0.3] QUOTATION MARK (QU) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0022 × 0020 × 000A ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0022 × 0308 × 000A ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0022 × 0308 × 0020 × 000A ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0022 × 0308 × 000A ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0022 × 0308 × 0020 × 000A ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0022 × 0085 ÷     #  × [0.3] QUOTATION MARK (QU) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0022 × 0020 × 0085 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0022 × 0308 × 0085 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0022 × 0308 × 0020 × 0085 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0022 × 0308 × 0085 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0022 × 0308 × 0020 × 0085 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0022 × 17D6 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0022 × 0020 ÷ 17D6 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0022 × 0308 × 17D6 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0022 × 0308 × 17D6 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0022 × 0030 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] DIGIT ZERO (NU) ÷ [0.3]
 × 0022 × 0020 ÷ 0030 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0022 × 0308 × 0030 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] DIGIT ZERO (NU) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0022 × 0308 × 0030 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] DIGIT ZERO (NU) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0022 × 0028 ÷     #  × [0.3] QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0022 × 0020 × 0028 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [15.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0022 × 0308 × 0028 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [15.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0022 × 0308 × 0020 × 0028 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [15.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0022 × 0308 × 0028 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [15.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0022 × 0308 × 0020 × 0028 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [15.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0022 × 0025 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] PERCENT SIGN (PO) ÷ [0.3]
 × 0022 × 0020 ÷ 0025 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0022 × 0308 × 0025 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] PERCENT SIGN (PO) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0022 × 0308 × 0025 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] PERCENT SIGN (PO) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0022 × 0024 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] DOLLAR SIGN (PR) ÷ [0.3]
 × 0022 × 0020 ÷ 0024 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0022 × 0308 × 0024 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] DOLLAR SIGN (PR) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0022 × 0308 × 0024 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] DOLLAR SIGN (PR) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0022 × 0022 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 0022 × 0020 ÷ 0022 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0022 × 0308 × 0022 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0022 × 0308 × 0022 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0022 × 0020 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [0.3]
 × 0022 × 0020 × 0020 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0022 × 0308 × 0020 × 0020 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0022 × 0308 × 0020 × 0020 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0022 × 002F ÷     #  × [0.3] QUOTATION MARK (QU) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0022 × 0020 × 002F ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0022 × 0308 × 002F ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 0022 × 0308 × 0020 × 002F ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0022 × 0308 × 002F ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 0022 × 0308 × 0020 × 002F ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0022 × 2060 ÷     #  × [0.3] QUOTATION MARK (QU) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0022 × 0020 × 2060 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0022 × 0308 × 2060 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0022 × 0308 × 0020 × 2060 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0022 × 0308 × 2060 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0022 × 0308 × 0020 × 2060 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0022 × 200B ÷     #  × [0.3] QUOTATION MARK (QU) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0022 × 0020 × 200B ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0022 × 0308 × 200B ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0022 × 0308 × 0020 × 200B ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0022 × 0308 × 200B ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0022 × 0308 × 0020 × 200B ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0022 × 1F1E6 ÷    #  × [0.3] QUOTATION MARK (QU) × [19.02] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 0022 × 0020 ÷ 1F1E6 ÷    #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0022 × 0308 × 1F1E6 ÷    #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0022 × 0308 × 1F1E6 ÷    #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0022 × 261D ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0022 × 0020 ÷ 261D ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0022 × 0308 × 261D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0022 × 1F3FB ÷    #  × [0.3] QUOTATION MARK (QU) × [19.02] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0022 × 0020 ÷ 1F3FB ÷    #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0022 × 0308 × 1F3FB ÷    #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0022 × 0001 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0022 × 0020 ÷ 0001 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0022 × 0308 × 0001 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0022 × 200D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0022 × 0020 ÷ 200D ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0022 × 0308 × 200D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 0022 × 00A7 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0022 × 0020 ÷ 00A7 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0022 × 0308 × 00A7 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0022 × 0308 × 00A7 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0022 × 50005 ÷    #  × [0.3] QUOTATION MARK (QU) × [19.02] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0022 × 0020 ÷ 50005 ÷    #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0022 × 0308 × 50005 ÷    #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0022 × 0308 × 50005 ÷    #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0022 × 0E01 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0022 × 0020 ÷ 0E01 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0022 × 0308 × 0E01 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0022 × 0308 × 0E01 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0022 × 3041 ÷     #  × [0.3] QUOTATION MARK (QU) × [19.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0022 × 0020 ÷ 3041 ÷     #  × [0.3] QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0022 × 0308 × 3041 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0022 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0022 × 0308 × 3041 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0022 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0020 ÷ 0023 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0020 × 0020 ÷ 0023 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0020 ÷ 0308 × 0023 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 0023 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0020 ÷ 0308 × 0023 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 0023 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0020 ÷ 2014 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 0020 × 0020 ÷ 2014 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 0020 ÷ 0308 ÷ 2014 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 2014 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 2014 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 2014 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 0020 ÷ 0009 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0020 × 0020 ÷ 0009 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0020 ÷ 0308 × 0009 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 0009 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0020 ÷ 0308 × 0009 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 0009 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0020 ÷ 00B4 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0020 × 0020 ÷ 00B4 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0020 ÷ 0308 ÷ 00B4 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 00B4 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0020 × 000B ÷     #  × [0.3] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0020 × 0020 × 000B ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0020 ÷ 0308 × 000B ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 × 000B ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0020 ÷ 0308 × 000B ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 × 000B ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0020 ÷ FFFC ÷     #  × [0.3] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0020 × 0020 ÷ FFFC ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0020 ÷ 0308 ÷ FFFC ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ FFFC ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0020 ÷ 0308 ÷ FFFC ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ FFFC ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0020 × 007D ÷     #  × [0.3] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0020 × 0020 × 007D ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0020 ÷ 0308 × 007D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 × 007D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0020 ÷ 0308 × 007D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 × 007D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0020 × 0029 ÷     #  × [0.3] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0020 × 0020 × 0029 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0020 ÷ 0308 × 0029 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 × 0029 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0020 ÷ 0001 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0020 × 0020 ÷ 0001 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0020 ÷ 0308 × 0001 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 0001 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 0020 ÷ 0308 × 0029 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 × 0029 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0020 × 000D ÷     #  × [0.3] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0020 × 0020 × 000D ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0020 ÷ 0308 × 000D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 × 000D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0020 ÷ 0308 × 000D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 × 000D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0020 × 0021 ÷     #  × [0.3] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0020 × 0020 × 0021 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0020 ÷ 0308 × 0021 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 × 0021 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0020 ÷ 0308 × 0021 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 × 0021 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0020 ÷ 00A0 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0020 × 0020 ÷ 00A0 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0020 ÷ 0308 × 00A0 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0020 ÷ 0308 × 00A0 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0020 ÷ AC00 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0020 × 0020 ÷ AC00 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0020 ÷ 0308 ÷ AC00 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ AC00 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0020 ÷ 0308 ÷ AC00 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ AC00 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0020 ÷ AC01 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0020 × 0020 ÷ AC01 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0020 ÷ 0308 ÷ AC01 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ AC01 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0020 ÷ 0308 ÷ AC01 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ AC01 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0020 ÷ 05D0 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0020 × 0020 ÷ 05D0 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0020 ÷ 0308 × 05D0 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0020 ÷ 0308 × 05D0 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0020 ÷ 002D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0020 × 0020 ÷ 002D ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0020 ÷ 0308 × 002D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 002D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0020 ÷ 0308 × 002D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 002D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0020 ÷ 231A ÷     #  × [0.3] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 0020 × 0020 ÷ 231A ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0020 ÷ 0308 ÷ 231A ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 231A ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 231A ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 231A ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 0020 ÷ 2024 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0020 × 0020 ÷ 2024 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0020 ÷ 0308 × 2024 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 2024 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0020 ÷ 0308 × 2024 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 2024 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0020 × 002C ÷     #  × [0.3] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0020 × 0020 × 002C ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0020 ÷ 0308 × 002C ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 × 002C ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0020 ÷ 0308 × 002C ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 × 002C ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0020 ÷ 1100 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0020 × 0020 ÷ 1100 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0020 ÷ 0308 ÷ 1100 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 1100 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 1100 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 1100 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0020 ÷ 11A8 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0020 × 0020 ÷ 11A8 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0020 ÷ 0308 ÷ 11A8 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 11A8 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0020 ÷ 1160 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0020 × 0020 ÷ 1160 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0020 ÷ 0308 ÷ 1160 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 1160 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 1160 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 1160 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0020 × 000A ÷     #  × [0.3] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0020 × 0020 × 000A ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0020 ÷ 0308 × 000A ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 × 000A ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0020 ÷ 0308 × 000A ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 × 000A ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0020 × 0085 ÷     #  × [0.3] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0020 × 0020 × 0085 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0020 ÷ 0308 × 0085 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 × 0085 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0020 ÷ 0308 × 0085 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 × 0085 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0020 ÷ 17D6 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0020 × 0020 ÷ 17D6 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0020 ÷ 0308 × 17D6 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0020 ÷ 0308 × 17D6 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0020 ÷ 0030 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0020 × 0020 ÷ 0030 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0020 ÷ 0308 × 0030 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 0030 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0020 ÷ 0308 × 0030 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 0030 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0020 ÷ 0028 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0020 × 0020 ÷ 0028 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0020 ÷ 0308 × 0028 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 0028 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0020 ÷ 0308 × 0028 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 0028 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0020 ÷ 0025 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0020 × 0020 ÷ 0025 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 0020 Ã· 0308 Ã· 0025 Ã·     #  Ã\97 [0.3] SPACE (SP) Ã· [18.0] COMBINING DIAERESIS (CM) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 0025 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 0020 Ã· 0308 Ã\97 0025 Ã·     #  Ã\97 [0.3] SPACE (SP) Ã· [18.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 0025 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 0020 ÷ 0024 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0020 × 0020 ÷ 0024 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 0020 Ã· 0308 Ã· 0024 Ã·     #  Ã\97 [0.3] SPACE (SP) Ã· [18.0] COMBINING DIAERESIS (CM) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 0024 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 0020 Ã· 0308 Ã\97 0024 Ã·     #  Ã\97 [0.3] SPACE (SP) Ã· [18.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 0024 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0020 ÷ 0022 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0020 × 0020 ÷ 0022 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0020 ÷ 0308 × 0022 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 0022 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0020 ÷ 0308 × 0022 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 0022 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0020 × 0020 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0020 × 0020 × 0020 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 × 0020 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 × 0020 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0020 × 002F ÷     #  × [0.3] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0020 × 0020 × 002F ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0020 ÷ 0308 × 002F ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 × 002F ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0020 ÷ 0308 × 002F ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 × 002F ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0020 × 2060 ÷     #  × [0.3] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0020 × 0020 × 2060 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0020 ÷ 0308 × 2060 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 × 2060 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0020 ÷ 0308 × 2060 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 × 2060 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0020 × 200B ÷     #  × [0.3] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0020 × 0020 × 200B ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0020 ÷ 0308 × 200B ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 × 200B ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0020 ÷ 0308 × 200B ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 × 200B ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0020 ÷ 1F1E6 ÷    #  × [0.3] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 0020 × 0020 ÷ 1F1E6 ÷    #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0020 ÷ 0308 ÷ 1F1E6 ÷    #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 1F1E6 ÷    #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0020 ÷ 261D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0020 × 0020 ÷ 261D ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 261D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 261D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0020 ÷ 1F3FB ÷    #  × [0.3] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0020 × 0020 ÷ 1F3FB ÷    #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0020 ÷ 0308 ÷ 1F3FB ÷    #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0020 ÷ 0001 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0020 × 0020 ÷ 0001 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0020 ÷ 0308 × 0001 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 0001 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0020 ÷ 200D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0020 × 0020 ÷ 200D ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0020 ÷ 0308 × 200D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 200D ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 0020 ÷ 00A7 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0020 × 0020 ÷ 00A7 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0020 ÷ 0308 × 00A7 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0020 ÷ 0308 × 00A7 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0020 ÷ 50005 ÷    #  × [0.3] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0020 × 0020 ÷ 50005 ÷    #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0020 ÷ 0308 × 50005 ÷    #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 50005 ÷    #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0020 ÷ 0308 × 50005 ÷    #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 50005 ÷    #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0020 ÷ 0E01 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0020 × 0020 ÷ 0E01 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0020 ÷ 0308 × 0E01 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0020 ÷ 0308 × 0E01 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0020 ÷ 3041 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0020 × 0020 ÷ 3041 ÷     #  × [0.3] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0020 ÷ 0308 × 3041 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0020 ÷ 0308 × 0020 ÷ 3041 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0020 ÷ 0308 × 3041 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0020 ÷ 0308 × 0020 ÷ 3041 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 002F ÷ 0023 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 002F × 0020 ÷ 0023 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 002F × 0308 ÷ 0023 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 002F × 0308 ÷ 0023 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 002F ÷ 2014 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 002F × 0020 ÷ 2014 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 002F × 0308 ÷ 2014 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 002F × 0308 ÷ 2014 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 002F × 0009 ÷     #  × [0.3] SOLIDUS (SY) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 002F × 0020 ÷ 0009 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 002F × 0308 × 0009 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 002F × 0308 × 0009 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 002F ÷ 00B4 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 002F × 0020 ÷ 00B4 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 002F × 0308 ÷ 00B4 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 002F × 0308 ÷ 00B4 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 002F × 000B ÷     #  × [0.3] SOLIDUS (SY) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 002F × 0020 × 000B ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 002F × 0308 × 000B ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 002F × 0308 × 0020 × 000B ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 002F × 0308 × 000B ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 002F × 0308 × 0020 × 000B ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 002F ÷ FFFC ÷     #  × [0.3] SOLIDUS (SY) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 002F × 0020 ÷ FFFC ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 002F × 0308 ÷ FFFC ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 002F × 0308 ÷ FFFC ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 002F × 007D ÷     #  × [0.3] SOLIDUS (SY) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 002F × 0020 × 007D ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 002F × 0308 × 007D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 002F × 0308 × 0020 × 007D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 002F × 0308 × 007D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 002F × 0308 × 0020 × 007D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 002F × 0029 ÷     #  × [0.3] SOLIDUS (SY) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 002F × 0020 × 0029 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 002F × 0308 × 0029 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 002F × 0308 × 0020 × 0029 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 002F × 0001 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 002F × 0020 ÷ 0001 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 002F × 0308 × 0001 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 002F × 0308 × 0029 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 002F × 0308 × 0020 × 0029 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 002F × 000D ÷     #  × [0.3] SOLIDUS (SY) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 002F × 0020 × 000D ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 002F × 0308 × 000D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 002F × 0308 × 0020 × 000D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 002F × 0308 × 000D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 002F × 0308 × 0020 × 000D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 002F × 0021 ÷     #  × [0.3] SOLIDUS (SY) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 002F × 0020 × 0021 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 002F × 0308 × 0021 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 002F × 0308 × 0020 × 0021 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 002F × 0308 × 0021 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 002F × 0308 × 0020 × 0021 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 002F × 00A0 ÷     #  × [0.3] SOLIDUS (SY) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 002F × 0020 ÷ 00A0 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 002F × 0308 × 00A0 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 002F × 0308 × 00A0 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 002F ÷ AC00 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 002F × 0020 ÷ AC00 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 002F × 0308 ÷ AC00 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 002F × 0308 ÷ AC00 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 002F ÷ AC01 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 002F × 0020 ÷ AC01 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 002F × 0308 ÷ AC01 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 002F × 0308 ÷ AC01 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 002F × 05D0 ÷     #  × [0.3] SOLIDUS (SY) × [21.2] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 002F × 0020 ÷ 05D0 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 002F × 0308 × 05D0 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [21.2] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 002F × 0308 × 05D0 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.2] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 002F × 002D ÷     #  × [0.3] SOLIDUS (SY) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 002F × 0020 ÷ 002D ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 002F × 0308 × 002D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 002D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 002F × 0308 × 002D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 002D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 002F ÷ 231A ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 002F × 0020 ÷ 231A ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 002F × 0308 ÷ 231A ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 231A ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 002F × 0308 ÷ 231A ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 231A ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 002F ÷ 2024 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 002F × 0020 ÷ 2024 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 002F × 0308 ÷ 2024 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 002F × 0308 ÷ 2024 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 002F × 002C ÷     #  × [0.3] SOLIDUS (SY) × [13.02] COMMA (IS) ÷ [0.3]
 × 002F × 0020 × 002C ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 002F × 0308 × 002C ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 002F × 0308 × 0020 × 002C ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 002F × 0308 × 002C ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 002F × 0308 × 0020 × 002C ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 002F ÷ 1100 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 002F × 0020 ÷ 1100 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 002F × 0308 ÷ 1100 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 002F × 0308 ÷ 1100 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 002F ÷ 11A8 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 002F × 0020 ÷ 11A8 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 002F × 0308 ÷ 11A8 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 002F × 0308 ÷ 11A8 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 002F ÷ 1160 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 002F × 0020 ÷ 1160 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 002F × 0308 ÷ 1160 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 002F × 0308 ÷ 1160 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 002F × 000A ÷     #  × [0.3] SOLIDUS (SY) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 002F × 0020 × 000A ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 002F × 0308 × 000A ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 002F × 0308 × 0020 × 000A ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 002F × 0308 × 000A ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 002F × 0308 × 0020 × 000A ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 002F × 0085 ÷     #  × [0.3] SOLIDUS (SY) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 002F × 0020 × 0085 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 002F × 0308 × 0085 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 002F × 0308 × 0020 × 0085 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 002F × 0308 × 0085 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 002F × 0308 × 0020 × 0085 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 002F × 17D6 ÷     #  × [0.3] SOLIDUS (SY) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 002F × 0020 ÷ 17D6 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 002F × 0308 × 17D6 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 002F × 0308 × 17D6 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 002F ÷ 0030 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 002F × 0020 ÷ 0030 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 002F × 0308 ÷ 0030 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 002F × 0308 ÷ 0030 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 002F ÷ 0028 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 002F × 0020 ÷ 0028 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 002F × 0308 ÷ 0028 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 002F × 0308 ÷ 0028 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 002F ÷ 0025 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 002F × 0020 ÷ 0025 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 002F × 0308 ÷ 0025 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 002F × 0308 ÷ 0025 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 002F ÷ 0024 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 002F × 0020 ÷ 0024 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 002F × 0308 ÷ 0024 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 002F × 0308 ÷ 0024 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 002F × 0022 ÷     #  × [0.3] SOLIDUS (SY) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 002F × 0020 ÷ 0022 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 002F × 0308 × 0022 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 002F × 0308 × 0022 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 002F × 0020 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [0.3]
 × 002F × 0020 × 0020 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 002F × 0308 × 0020 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 002F × 0308 × 0020 × 0020 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 002F × 0308 × 0020 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 002F × 0308 × 0020 × 0020 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 002F × 002F ÷     #  × [0.3] SOLIDUS (SY) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 002F × 0020 × 002F ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 002F × 0308 × 002F ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 002F × 0308 × 0020 × 002F ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 002F × 0308 × 002F ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 002F × 0308 × 0020 × 002F ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 002F × 2060 ÷     #  × [0.3] SOLIDUS (SY) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 002F × 0020 × 2060 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 002F × 0308 × 2060 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 002F × 0308 × 0020 × 2060 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 002F × 0308 × 2060 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 002F × 0308 × 0020 × 2060 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 002F × 200B ÷     #  × [0.3] SOLIDUS (SY) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 002F × 0020 × 200B ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 002F × 0308 × 200B ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 002F × 0308 × 0020 × 200B ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 002F × 0308 × 200B ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 002F × 0308 × 0020 × 200B ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 002F ÷ 1F1E6 ÷    #  × [0.3] SOLIDUS (SY) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 002F × 0020 ÷ 1F1E6 ÷    #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 002F × 0308 ÷ 1F1E6 ÷    #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 002F × 0308 ÷ 1F1E6 ÷    #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 002F ÷ 261D ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 002F × 0020 ÷ 261D ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 002F × 0308 ÷ 261D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 261D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 002F ÷ 1F3FB ÷    #  × [0.3] SOLIDUS (SY) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002F × 0020 ÷ 1F3FB ÷    #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002F × 0308 ÷ 1F3FB ÷    #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 002F × 0001 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 002F × 0020 ÷ 0001 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 002F × 0308 × 0001 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 002F × 200D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 002F × 0020 ÷ 200D ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 002F × 0308 × 200D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 200D ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 002F ÷ 00A7 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 002F × 0020 ÷ 00A7 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 002F × 0308 ÷ 00A7 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 002F × 0308 ÷ 00A7 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 002F ÷ 50005 ÷    #  × [0.3] SOLIDUS (SY) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 002F × 0020 ÷ 50005 ÷    #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 002F × 0308 ÷ 50005 ÷    #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 002F × 0308 ÷ 50005 ÷    #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 002F ÷ 0E01 ÷     #  × [0.3] SOLIDUS (SY) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 002F × 0020 ÷ 0E01 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 002F × 0308 ÷ 0E01 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 002F × 0308 ÷ 0E01 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 002F × 3041 ÷     #  × [0.3] SOLIDUS (SY) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 002F × 0020 ÷ 3041 ÷     #  × [0.3] SOLIDUS (SY) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 002F × 0308 × 3041 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 002F × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 002F × 0308 × 3041 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 002F × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] SOLIDUS (SY) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 2060 × 0023 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] NUMBER SIGN (AL) ÷ [0.3]
 × 2060 × 0020 ÷ 0023 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 2060 × 0308 × 0023 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] NUMBER SIGN (AL) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 2060 × 0308 × 0023 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] NUMBER SIGN (AL) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 2060 × 2014 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] EM DASH (B2) ÷ [0.3]
 × 2060 × 0020 ÷ 2014 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 2060 × 0308 × 2014 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] EM DASH (B2) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 2060 × 0308 × 2014 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] EM DASH (B2) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 2060 × 0009 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 2060 × 0020 ÷ 0009 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 2060 × 0308 × 0009 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 2060 × 0308 × 0009 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 2060 × 00B4 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] ACUTE ACCENT (BB) ÷ [0.3]
 × 2060 × 0020 ÷ 00B4 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 2060 × 0308 × 00B4 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] ACUTE ACCENT (BB) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 2060 × 0308 × 00B4 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] ACUTE ACCENT (BB) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 2060 × 000B ÷     #  × [0.3] WORD JOINER (WJ) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 2060 × 0020 × 000B ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 2060 × 0308 × 000B ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 2060 × 0308 × 0020 × 000B ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 2060 × 0308 × 000B ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 2060 × 0308 × 0020 × 000B ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 2060 × FFFC ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 2060 × 0020 ÷ FFFC ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 2060 × 0308 × FFFC ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 2060 × 0308 × FFFC ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 2060 × 007D ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 2060 × 0020 × 007D ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 2060 × 0308 × 007D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 2060 × 0308 × 0020 × 007D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 2060 × 0308 × 007D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 2060 × 0308 × 0020 × 007D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 2060 × 0029 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 2060 × 0020 × 0029 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 2060 × 0308 × 0029 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 2060 × 0308 × 0020 × 0029 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 2060 × 0001 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 2060 × 0020 ÷ 0001 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 2060 × 0308 × 0001 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 2060 × 0308 × 0029 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 2060 × 0308 × 0020 × 0029 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 2060 × 000D ÷     #  × [0.3] WORD JOINER (WJ) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 2060 × 0020 × 000D ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 2060 × 0308 × 000D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 2060 × 0308 × 0020 × 000D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 2060 × 0308 × 000D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 2060 × 0308 × 0020 × 000D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 2060 × 0021 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] EXCLAMATION MARK (EX) ÷ [0.3]
 × 2060 × 0020 × 0021 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 2060 × 0308 × 0021 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] EXCLAMATION MARK (EX) ÷ [0.3]
-× 2060 × 0308 × 0020 × 0021 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 2060 × 0308 × 0021 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] EXCLAMATION MARK (EX) ÷ [0.3]
+× 2060 × 0308 × 0020 × 0021 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 2060 × 00A0 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] NO-BREAK SPACE (GL) ÷ [0.3]
 × 2060 × 0020 ÷ 00A0 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 2060 × 0308 × 00A0 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] NO-BREAK SPACE (GL) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 2060 × 0308 × 00A0 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] NO-BREAK SPACE (GL) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 2060 × AC00 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 2060 × 0020 ÷ AC00 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 2060 × 0308 × AC00 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 2060 × 0308 × AC00 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 2060 × AC01 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 2060 × 0020 ÷ AC01 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 2060 × 0308 × AC01 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 2060 × 0308 × AC01 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 2060 × 05D0 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 2060 × 0020 ÷ 05D0 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 2060 × 0308 × 05D0 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 2060 × 0308 × 05D0 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 2060 × 002D ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 2060 × 0020 ÷ 002D ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 2060 × 0308 × 002D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 2060 × 0308 × 002D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 2060 × 231A ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] WATCH (ID) ÷ [0.3]
 × 2060 × 0020 ÷ 231A ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 2060 × 0308 × 231A ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] WATCH (ID) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 2060 × 0308 × 231A ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] WATCH (ID) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 2060 × 2024 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] ONE DOT LEADER (IN) ÷ [0.3]
 × 2060 × 0020 ÷ 2024 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 2060 × 0308 × 2024 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] ONE DOT LEADER (IN) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 2060 × 0308 × 2024 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] ONE DOT LEADER (IN) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 2060 × 002C ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] COMMA (IS) ÷ [0.3]
 × 2060 × 0020 × 002C ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 2060 × 0308 × 002C ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] COMMA (IS) ÷ [0.3]
-× 2060 × 0308 × 0020 × 002C ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 2060 × 0308 × 002C ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] COMMA (IS) ÷ [0.3]
+× 2060 × 0308 × 0020 × 002C ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 2060 × 1100 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 2060 × 0020 ÷ 1100 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 2060 × 0308 × 1100 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 2060 × 0308 × 1100 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 2060 × 11A8 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 2060 × 0020 ÷ 11A8 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 2060 × 0308 × 11A8 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 2060 × 0308 × 11A8 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 2060 × 1160 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 2060 × 0020 ÷ 1160 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 2060 × 0308 × 1160 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 2060 × 0308 × 1160 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 2060 × 000A ÷     #  × [0.3] WORD JOINER (WJ) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 2060 × 0020 × 000A ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 2060 × 0308 × 000A ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 2060 × 0308 × 0020 × 000A ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 2060 × 0308 × 000A ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 2060 × 0308 × 0020 × 000A ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 2060 × 0085 ÷     #  × [0.3] WORD JOINER (WJ) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 2060 × 0020 × 0085 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 2060 × 0308 × 0085 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 2060 × 0308 × 0020 × 0085 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 2060 × 0308 × 0085 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 2060 × 0308 × 0020 × 0085 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 2060 × 17D6 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 2060 × 0020 ÷ 17D6 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 2060 × 0308 × 17D6 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 2060 × 0308 × 17D6 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 2060 × 0030 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] DIGIT ZERO (NU) ÷ [0.3]
 × 2060 × 0020 ÷ 0030 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 2060 × 0308 × 0030 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] DIGIT ZERO (NU) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 2060 × 0308 × 0030 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] DIGIT ZERO (NU) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 2060 × 0028 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 2060 × 0020 ÷ 0028 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 2060 × 0308 × 0028 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 2060 × 0308 × 0028 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 2060 × 0025 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] PERCENT SIGN (PO) ÷ [0.3]
 × 2060 × 0020 ÷ 0025 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 2060 × 0308 × 0025 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] PERCENT SIGN (PO) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 2060 × 0308 × 0025 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] PERCENT SIGN (PO) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 2060 × 0024 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] DOLLAR SIGN (PR) ÷ [0.3]
 × 2060 × 0020 ÷ 0024 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 2060 × 0308 × 0024 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] DOLLAR SIGN (PR) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 2060 × 0308 × 0024 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] DOLLAR SIGN (PR) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 2060 × 0022 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] QUOTATION MARK (QU) ÷ [0.3]
 × 2060 × 0020 ÷ 0022 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 2060 × 0308 × 0022 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] QUOTATION MARK (QU) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 2060 × 0308 × 0022 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] QUOTATION MARK (QU) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 2060 × 0020 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [0.3]
 × 2060 × 0020 × 0020 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 2060 × 0308 × 0020 × 0020 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 2060 × 0308 × 0020 × 0020 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 2060 × 002F ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] SOLIDUS (SY) ÷ [0.3]
 × 2060 × 0020 × 002F ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 2060 × 0308 × 002F ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] SOLIDUS (SY) ÷ [0.3]
-× 2060 × 0308 × 0020 × 002F ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 2060 × 0308 × 002F ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] SOLIDUS (SY) ÷ [0.3]
+× 2060 × 0308 × 0020 × 002F ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 2060 × 2060 ÷     #  × [0.3] WORD JOINER (WJ) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 2060 × 0020 × 2060 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 2060 × 0308 × 2060 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 2060 × 0308 × 0020 × 2060 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 2060 × 0308 × 2060 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 2060 × 0308 × 0020 × 2060 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 2060 × 200B ÷     #  × [0.3] WORD JOINER (WJ) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 2060 × 0020 × 200B ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 2060 × 0308 × 200B ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 2060 × 0308 × 0020 × 200B ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 2060 × 0308 × 200B ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 2060 × 0308 × 0020 × 200B ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 2060 × 1F1E6 ÷    #  × [0.3] WORD JOINER (WJ) × [11.02] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 2060 × 0020 ÷ 1F1E6 ÷    #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 2060 × 0308 × 1F1E6 ÷    #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 2060 × 0308 × 1F1E6 ÷    #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 2060 × 261D ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 2060 × 0020 ÷ 261D ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 2060 × 0308 × 261D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 2060 × 1F3FB ÷    #  × [0.3] WORD JOINER (WJ) × [11.02] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2060 × 0020 ÷ 1F3FB ÷    #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2060 × 0308 × 1F3FB ÷    #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 2060 × 0001 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 2060 × 0020 ÷ 0001 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 2060 × 0308 × 0001 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 2060 × 200D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 2060 × 0020 ÷ 200D ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 2060 × 0308 × 200D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 2060 × 00A7 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] SECTION SIGN (AI_AL) ÷ [0.3]
 × 2060 × 0020 ÷ 00A7 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 2060 × 0308 × 00A7 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] SECTION SIGN (AI_AL) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 2060 × 0308 × 00A7 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] SECTION SIGN (AI_AL) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 2060 × 50005 ÷    #  × [0.3] WORD JOINER (WJ) × [11.02] <reserved-50005> (XX_AL) ÷ [0.3]
 × 2060 × 0020 ÷ 50005 ÷    #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 2060 × 0308 × 50005 ÷    #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] <reserved-50005> (XX_AL) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 2060 × 0308 × 50005 ÷    #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] <reserved-50005> (XX_AL) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 2060 × 0E01 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 2060 × 0020 ÷ 0E01 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 2060 × 0308 × 0E01 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 2060 × 0308 × 0E01 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 2060 × 3041 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 2060 × 0020 ÷ 3041 ÷     #  × [0.3] WORD JOINER (WJ) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 2060 × 0308 × 3041 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [11.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 2060 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 2060 × 0308 × 3041 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 2060 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] WORD JOINER (WJ) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 200B ÷ 0023 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] NUMBER SIGN (AL) ÷ [0.3]
 × 200B × 0020 ÷ 0023 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] NUMBER SIGN (AL) ÷ [0.3]
-× 200B ÷ 0308 × 0023 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 0023 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 200B ÷ 0308 × 0023 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 0023 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 200B ÷ 2014 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] EM DASH (B2) ÷ [0.3]
 × 200B × 0020 ÷ 2014 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] EM DASH (B2) ÷ [0.3]
-× 200B ÷ 0308 ÷ 2014 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 2014 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 200B ÷ 0308 ÷ 2014 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 2014 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 200B ÷ 0009 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 200B × 0020 ÷ 0009 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 200B ÷ 0308 × 0009 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 0009 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 200B ÷ 0308 × 0009 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 0009 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 200B ÷ 00B4 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 200B × 0020 ÷ 00B4 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 200B ÷ 0308 ÷ 00B4 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 200B ÷ 0308 ÷ 00B4 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 200B × 000B ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 200B × 0020 × 000B ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 200B ÷ 0308 × 000B ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 200B ÷ 0308 × 0020 × 000B ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 200B ÷ 0308 × 000B ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 200B ÷ 0308 × 0020 × 000B ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 200B ÷ FFFC ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 200B × 0020 ÷ FFFC ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 200B ÷ 0308 ÷ FFFC ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ FFFC ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 200B ÷ 0308 ÷ FFFC ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ FFFC ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 200B ÷ 007D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 200B × 0020 ÷ 007D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 200B ÷ 0308 × 007D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 200B ÷ 0308 × 0020 × 007D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 200B ÷ 0308 × 007D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 200B ÷ 0308 × 0020 × 007D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 200B ÷ 0029 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 200B × 0020 ÷ 0029 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 200B ÷ 0308 × 0029 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 200B ÷ 0308 × 0020 × 0029 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 200B ÷ 0001 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] <START OF HEADING> (CM) ÷ [0.3]
-× 200B × 0020 ÷ 0001 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] <START OF HEADING> (CM) ÷ [0.3]
-× 200B ÷ 0308 × 0001 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 0001 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 200B ÷ 0308 × 0029 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 200B ÷ 0308 × 0020 × 0029 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 200B × 000D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 200B × 0020 × 000D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 200B ÷ 0308 × 000D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 200B ÷ 0308 × 0020 × 000D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 200B ÷ 0308 × 000D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 200B ÷ 0308 × 0020 × 000D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 200B ÷ 0021 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] EXCLAMATION MARK (EX) ÷ [0.3]
 × 200B × 0020 ÷ 0021 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] EXCLAMATION MARK (EX) ÷ [0.3]
-× 200B ÷ 0308 × 0021 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 200B ÷ 0308 × 0020 × 0021 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 200B ÷ 0308 × 0021 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 200B ÷ 0308 × 0020 × 0021 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 200B ÷ 00A0 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 200B × 0020 ÷ 00A0 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 200B ÷ 0308 × 00A0 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 200B ÷ 0308 × 00A0 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 200B ÷ AC00 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 200B × 0020 ÷ AC00 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 200B ÷ 0308 ÷ AC00 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ AC00 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 200B ÷ 0308 ÷ AC00 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ AC00 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 200B ÷ AC01 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 200B × 0020 ÷ AC01 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 200B ÷ 0308 ÷ AC01 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ AC01 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 200B ÷ 0308 ÷ AC01 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ AC01 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 200B ÷ 05D0 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 200B × 0020 ÷ 05D0 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 200B ÷ 0308 × 05D0 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 200B ÷ 0308 × 05D0 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 200B ÷ 002D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 200B × 0020 ÷ 002D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 200B ÷ 0308 × 002D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 002D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 200B ÷ 0308 × 002D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 002D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 200B ÷ 231A ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] WATCH (ID) ÷ [0.3]
 × 200B × 0020 ÷ 231A ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] WATCH (ID) ÷ [0.3]
-× 200B ÷ 0308 ÷ 231A ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 231A ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 200B ÷ 0308 ÷ 231A ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 231A ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 200B ÷ 2024 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 200B × 0020 ÷ 2024 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 200B ÷ 0308 × 2024 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 2024 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 200B ÷ 0308 × 2024 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 2024 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 200B ÷ 002C ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMMA (IS) ÷ [0.3]
 × 200B × 0020 ÷ 002C ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] COMMA (IS) ÷ [0.3]
-× 200B ÷ 0308 × 002C ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 200B ÷ 0308 × 0020 × 002C ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 200B ÷ 0308 × 002C ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 200B ÷ 0308 × 0020 × 002C ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 200B ÷ 1100 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 200B × 0020 ÷ 1100 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 200B ÷ 0308 ÷ 1100 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 1100 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 200B ÷ 0308 ÷ 1100 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 1100 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 200B ÷ 11A8 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 200B × 0020 ÷ 11A8 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 200B ÷ 0308 ÷ 11A8 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 200B ÷ 0308 ÷ 11A8 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 200B ÷ 1160 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 200B × 0020 ÷ 1160 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 200B ÷ 0308 ÷ 1160 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 1160 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 200B ÷ 0308 ÷ 1160 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 1160 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 200B × 000A ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 200B × 0020 × 000A ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 200B ÷ 0308 × 000A ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 200B ÷ 0308 × 0020 × 000A ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 200B ÷ 0308 × 000A ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 200B ÷ 0308 × 0020 × 000A ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 200B × 0085 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 200B × 0020 × 0085 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 200B ÷ 0308 × 0085 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 200B ÷ 0308 × 0020 × 0085 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 200B ÷ 0308 × 0085 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 200B ÷ 0308 × 0020 × 0085 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 200B ÷ 17D6 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 200B × 0020 ÷ 17D6 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 200B ÷ 0308 × 17D6 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 200B ÷ 0308 × 17D6 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 200B ÷ 0030 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] DIGIT ZERO (NU) ÷ [0.3]
 × 200B × 0020 ÷ 0030 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] DIGIT ZERO (NU) ÷ [0.3]
-× 200B ÷ 0308 × 0030 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 0030 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 200B ÷ 0308 × 0030 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 0030 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 200B ÷ 0028 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 200B × 0020 ÷ 0028 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 200B ÷ 0308 × 0028 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 0028 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 200B ÷ 0308 × 0028 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 0028 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 200B ÷ 0025 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] PERCENT SIGN (PO) ÷ [0.3]
 × 200B × 0020 ÷ 0025 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] PERCENT SIGN (PO) ÷ [0.3]
\97 200B Ã· 0308 Ã· 0025 Ã·     #  Ã\97 [0.3] ZERO WIDTH SPACE (ZW) Ã· [8.0] COMBINING DIAERESIS (CM) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 0025 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 200B Ã· 0308 Ã\97 0025 Ã·     #  Ã\97 [0.3] ZERO WIDTH SPACE (ZW) Ã· [8.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 0025 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 200B ÷ 0024 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 200B × 0020 ÷ 0024 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 200B Ã· 0308 Ã· 0024 Ã·     #  Ã\97 [0.3] ZERO WIDTH SPACE (ZW) Ã· [8.0] COMBINING DIAERESIS (CM) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 0024 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 200B Ã· 0308 Ã\97 0024 Ã·     #  Ã\97 [0.3] ZERO WIDTH SPACE (ZW) Ã· [8.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 0024 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 200B ÷ 0022 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] QUOTATION MARK (QU) ÷ [0.3]
 × 200B × 0020 ÷ 0022 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] QUOTATION MARK (QU) ÷ [0.3]
-× 200B ÷ 0308 × 0022 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 0022 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 200B ÷ 0308 × 0022 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 0022 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 200B × 0020 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [0.3]
 × 200B × 0020 × 0020 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 200B ÷ 0308 × 0020 × 0020 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 200B ÷ 0308 × 0020 × 0020 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 200B ÷ 002F ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] SOLIDUS (SY) ÷ [0.3]
 × 200B × 0020 ÷ 002F ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] SOLIDUS (SY) ÷ [0.3]
-× 200B ÷ 0308 × 002F ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 200B ÷ 0308 × 0020 × 002F ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 200B ÷ 0308 × 002F ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 200B ÷ 0308 × 0020 × 002F ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 200B ÷ 2060 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] WORD JOINER (WJ) ÷ [0.3]
 × 200B × 0020 ÷ 2060 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] WORD JOINER (WJ) ÷ [0.3]
-× 200B ÷ 0308 × 2060 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 200B ÷ 0308 × 0020 × 2060 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 200B ÷ 0308 × 2060 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 200B ÷ 0308 × 0020 × 2060 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 200B × 200B ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 200B × 0020 × 200B ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 200B ÷ 0308 × 200B ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 200B ÷ 0308 × 0020 × 200B ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 200B ÷ 0308 × 200B ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 200B ÷ 0308 × 0020 × 200B ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 200B ÷ 1F1E6 ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 200B × 0020 ÷ 1F1E6 ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 200B ÷ 0308 ÷ 1F1E6 ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 200B ÷ 0308 ÷ 1F1E6 ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 200B ÷ 261D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 200B × 0020 ÷ 261D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 200B ÷ 0308 ÷ 261D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 261D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 200B ÷ 1F3FB ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 200B × 0020 ÷ 1F3FB ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 200B ÷ 0308 ÷ 1F3FB ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 200B ÷ 0001 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 200B × 0020 ÷ 0001 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 200B ÷ 0308 × 0001 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 0001 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 200B ÷ 200D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 200B × 0020 ÷ 200D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 200B ÷ 0308 × 200D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 200D ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 200B ÷ 00A7 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 200B × 0020 ÷ 00A7 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 200B ÷ 0308 × 00A7 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 200B ÷ 0308 × 00A7 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 200B ÷ 50005 ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 200B × 0020 ÷ 50005 ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 200B ÷ 0308 × 50005 ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 50005 ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 200B ÷ 0308 × 50005 ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 50005 ÷    #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 200B ÷ 0E01 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 200B × 0020 ÷ 0E01 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 200B ÷ 0308 × 0E01 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 200B ÷ 0308 × 0E01 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 200B ÷ 3041 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 200B × 0020 ÷ 3041 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) × [7.01] SPACE (SP) ÷ [8.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 200B ÷ 0308 × 3041 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 200B ÷ 0308 × 0020 ÷ 3041 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 200B ÷ 0308 × 3041 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 200B ÷ 0308 × 0020 ÷ 3041 ÷     #  × [0.3] ZERO WIDTH SPACE (ZW) ÷ [8.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 1F1E6 ÷ 0023 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 0023 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 0023 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 0023 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 0023 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 0023 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 1F1E6 ÷ 2014 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 2014 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 2014 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 2014 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 2014 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 2014 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 1F1E6 × 0009 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 0009 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 1F1E6 × 0308 × 0009 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 0009 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1F1E6 × 0308 × 0009 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 0009 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 1F1E6 ÷ 00B4 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 00B4 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 00B4 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 00B4 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 00B4 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 00B4 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 1F1E6 × 000B ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 1F1E6 × 0020 × 000B ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 1F1E6 × 0308 × 000B ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 × 000B ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1F1E6 × 0308 × 000B ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 × 000B ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 1F1E6 ÷ FFFC ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 1F1E6 × 0020 ÷ FFFC ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 1F1E6 × 0308 ÷ FFFC ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ FFFC ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1F1E6 × 0308 ÷ FFFC ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ FFFC ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 1F1E6 × 007D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 1F1E6 × 0020 × 007D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 1F1E6 × 0308 × 007D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 × 007D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1F1E6 × 0308 × 007D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 × 007D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 1F1E6 × 0029 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 1F1E6 × 0020 × 0029 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 1F1E6 × 0308 × 0029 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 × 0029 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 1F1E6 × 0001 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 1F1E6 × 0020 ÷ 0001 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 1F1E6 × 0308 × 0001 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 0001 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 1F1E6 × 0308 × 0029 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 × 0029 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 1F1E6 × 000D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 1F1E6 × 0020 × 000D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 1F1E6 × 0308 × 000D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 × 000D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1F1E6 × 0308 × 000D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 × 000D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 1F1E6 × 0021 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 1F1E6 × 0020 × 0021 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 1F1E6 × 0308 × 0021 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 × 0021 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1F1E6 × 0308 × 0021 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 × 0021 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 1F1E6 × 00A0 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 00A0 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 1F1E6 × 0308 × 00A0 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 00A0 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1F1E6 × 0308 × 00A0 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 00A0 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 1F1E6 ÷ AC00 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 1F1E6 × 0020 ÷ AC00 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 1F1E6 × 0308 ÷ AC00 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ AC00 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1F1E6 × 0308 ÷ AC00 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ AC00 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 1F1E6 ÷ AC01 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 1F1E6 × 0020 ÷ AC01 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 1F1E6 × 0308 ÷ AC01 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ AC01 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1F1E6 × 0308 ÷ AC01 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ AC01 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 1F1E6 ÷ 05D0 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 05D0 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 05D0 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 05D0 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 05D0 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 05D0 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 1F1E6 × 002D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 002D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 1F1E6 × 0308 × 002D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 002D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1F1E6 × 0308 × 002D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 002D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 1F1E6 ÷ 231A ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 231A ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 231A ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 231A ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 231A ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 231A ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 1F1E6 ÷ 2024 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 2024 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 2024 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 2024 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 2024 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 2024 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 1F1E6 × 002C ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.02] COMMA (IS) ÷ [0.3]
 × 1F1E6 × 0020 × 002C ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 1F1E6 × 0308 × 002C ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 × 002C ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1F1E6 × 0308 × 002C ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 × 002C ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 1F1E6 ÷ 1100 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 1100 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 1100 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 1100 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 1100 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 1100 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 1F1E6 ÷ 11A8 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 11A8 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 11A8 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 11A8 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 11A8 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 11A8 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 1F1E6 ÷ 1160 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 1160 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 1160 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 1160 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 1160 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 1160 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 1F1E6 × 000A ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 1F1E6 × 0020 × 000A ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 1F1E6 × 0308 × 000A ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 × 000A ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1F1E6 × 0308 × 000A ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 × 000A ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 1F1E6 × 0085 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 1F1E6 × 0020 × 0085 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 1F1E6 × 0308 × 0085 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 × 0085 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1F1E6 × 0308 × 0085 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 × 0085 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 1F1E6 × 17D6 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 17D6 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 1F1E6 × 0308 × 17D6 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 17D6 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1F1E6 × 0308 × 17D6 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 17D6 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 1F1E6 ÷ 0030 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 0030 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 0030 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 0030 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 0030 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 0030 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 1F1E6 ÷ 0028 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 0028 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 0028 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 0028 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 0028 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 0028 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 1F1E6 ÷ 0025 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 0025 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 0025 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 0025 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 0025 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 0025 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 1F1E6 ÷ 0024 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 0024 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 0024 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 0024 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 0024 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 0024 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 1F1E6 × 0022 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 0022 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 1F1E6 × 0308 × 0022 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 0022 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1F1E6 × 0308 × 0022 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 0022 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 1F1E6 × 0020 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [0.3]
 × 1F1E6 × 0020 × 0020 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 × 0020 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 × 0020 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 1F1E6 × 002F ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 1F1E6 × 0020 × 002F ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 1F1E6 × 0308 × 002F ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 × 002F ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1F1E6 × 0308 × 002F ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 × 002F ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 1F1E6 × 2060 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 1F1E6 × 0020 × 2060 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 1F1E6 × 0308 × 2060 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 × 2060 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1F1E6 × 0308 × 2060 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 × 2060 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 1F1E6 × 200B ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 1F1E6 × 0020 × 200B ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 1F1E6 × 0308 × 200B ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 × 200B ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1F1E6 × 0308 × 200B ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 × 200B ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 1F1E6 × 1F1E6 ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 1F1E6 ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 1F1E6 × 0308 × 1F1E6 ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [30.11] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 1F1E6 ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1F1E6 × 0308 × 1F1E6 ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.11] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 1F1E6 ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1F1E6 ÷ 261D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1F1E6 × 0020 ÷ 261D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 261D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 261D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1F1E6 ÷ 1F3FB ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1F1E6 × 0020 ÷ 1F3FB ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 1F3FB ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 1F3FB ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1F1E6 × 0001 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1F1E6 × 0020 ÷ 0001 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1F1E6 × 0308 × 0001 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 0001 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1F1E6 × 200D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1F1E6 × 0020 ÷ 200D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1F1E6 × 0308 × 200D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 200D ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 1F1E6 ÷ 00A7 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 00A7 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 00A7 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 00A7 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 00A7 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 00A7 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 1F1E6 ÷ 50005 ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 50005 ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 50005 ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 50005 ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 50005 ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 50005 ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 1F1E6 ÷ 0E01 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 0E01 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 1F1E6 × 0308 ÷ 0E01 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 0E01 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1F1E6 × 0308 ÷ 0E01 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 0E01 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 1F1E6 × 3041 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 1F1E6 × 0020 ÷ 3041 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 1F1E6 × 0308 × 3041 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 1F1E6 × 0308 × 0020 ÷ 3041 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1F1E6 × 0308 × 3041 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1F1E6 × 0308 × 0020 ÷ 3041 ÷    #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 261D ÷ 0023 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 261D × 0020 ÷ 0023 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 261D × 0308 ÷ 0023 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 261D ÷ 2014 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 261D × 0020 ÷ 2014 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 261D × 0308 ÷ 2014 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 261D × 0009 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 261D × 0020 ÷ 0009 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 261D × 0308 × 0009 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 261D ÷ 00B4 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 261D × 0020 ÷ 00B4 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 261D × 0308 ÷ 00B4 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 261D × 000B ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 261D × 0020 × 000B ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 261D × 0308 × 000B ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 261D × 0308 × 0020 × 000B ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 261D ÷ FFFC ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 261D × 0020 ÷ FFFC ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 261D × 0308 ÷ FFFC ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 261D × 007D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 261D × 0020 × 007D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 261D × 0308 × 007D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 261D × 0308 × 0020 × 007D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 261D × 0029 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 261D × 0020 × 0029 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 261D × 0308 × 0029 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 261D × 0308 × 0020 × 0029 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 261D × 000D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 261D × 0020 × 000D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 261D × 0308 × 000D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 261D × 0308 × 0020 × 000D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 261D × 0021 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 261D × 0020 × 0021 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 261D × 0308 × 0021 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 261D × 0308 × 0020 × 0021 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 261D × 00A0 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
+× 261D × 0020 ÷ 00A0 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 261D × 0308 × 00A0 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 261D ÷ AC00 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 261D × 0020 ÷ AC00 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 261D × 0308 ÷ AC00 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 261D ÷ AC01 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 261D × 0020 ÷ AC01 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 261D × 0308 ÷ AC01 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 261D ÷ 05D0 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 261D × 0020 ÷ 05D0 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 261D × 0308 ÷ 05D0 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 261D × 002D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 261D × 0020 ÷ 002D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 261D × 0308 × 002D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 002D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 261D ÷ 231A ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 261D × 0020 ÷ 231A ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 261D × 0308 ÷ 231A ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 231A ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 261D × 2024 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [22.03] ONE DOT LEADER (IN) ÷ [0.3]
+× 261D × 0020 ÷ 2024 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 261D × 0308 × 2024 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.03] ONE DOT LEADER (IN) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 261D × 002C ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [13.02] COMMA (IS) ÷ [0.3]
+× 261D × 0020 × 002C ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 261D × 0308 × 002C ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 261D × 0308 × 0020 × 002C ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 261D ÷ 1100 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 261D × 0020 ÷ 1100 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 261D × 0308 ÷ 1100 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 261D ÷ 11A8 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 261D × 0020 ÷ 11A8 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 261D × 0308 ÷ 11A8 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 261D ÷ 1160 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 261D × 0020 ÷ 1160 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 261D × 0308 ÷ 1160 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 261D × 000A ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 261D × 0020 × 000A ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 261D × 0308 × 000A ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 261D × 0308 × 0020 × 000A ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 261D × 0085 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 261D × 0020 × 0085 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 261D × 0308 × 0085 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 261D × 0308 × 0020 × 0085 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 261D × 17D6 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 261D × 0020 ÷ 17D6 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 261D × 0308 × 17D6 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 261D ÷ 0030 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 261D × 0020 ÷ 0030 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 261D × 0308 ÷ 0030 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 261D ÷ 0028 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 261D × 0020 ÷ 0028 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 261D × 0308 ÷ 0028 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 261D × 0025 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [23.13] PERCENT SIGN (PO) ÷ [0.3]
+× 261D × 0020 ÷ 0025 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 261D × 0308 × 0025 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.13] PERCENT SIGN (PO) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 261D ÷ 0024 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 261D × 0020 ÷ 0024 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 261D × 0308 ÷ 0024 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 261D × 0022 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 261D × 0020 ÷ 0022 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 261D × 0308 × 0022 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 261D × 0020 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [0.3]
+× 261D × 0020 × 0020 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 261D × 0308 × 0020 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 261D × 0308 × 0020 × 0020 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 261D × 002F ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 261D × 0020 × 002F ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 261D × 0308 × 002F ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 261D × 0308 × 0020 × 002F ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 261D × 2060 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 261D × 0020 × 2060 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 261D × 0308 × 2060 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 261D × 0308 × 0020 × 2060 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 261D × 200B ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 261D × 0020 × 200B ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 261D × 0308 × 200B ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 261D × 0308 × 0020 × 200B ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 261D ÷ 1F1E6 ÷    #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 261D × 0020 ÷ 1F1E6 ÷    #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 261D × 0308 ÷ 1F1E6 ÷    #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 261D ÷ 261D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 261D × 0020 ÷ 261D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 261D × 0308 ÷ 261D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 261D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 261D × 1F3FB ÷    #  × [0.3] WHITE UP POINTING INDEX (EB) × [30.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 261D × 0020 ÷ 1F3FB ÷    #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 261D × 0308 × 1F3FB ÷    #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 261D × 0001 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 261D × 0020 ÷ 0001 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 261D × 0308 × 0001 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 261D × 200D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 261D × 0020 ÷ 200D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 261D × 0308 × 200D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 200D ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 261D ÷ 00A7 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 261D × 0020 ÷ 00A7 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 261D × 0308 ÷ 00A7 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 261D ÷ 50005 ÷    #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 261D × 0020 ÷ 50005 ÷    #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 261D × 0308 ÷ 50005 ÷    #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 261D ÷ 0E01 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 261D × 0020 ÷ 0E01 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 261D × 0308 ÷ 0E01 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 261D × 3041 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 261D × 0020 ÷ 3041 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 261D × 0308 × 3041 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 261D × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1F3FB ÷ 0023 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1F3FB × 0020 ÷ 0023 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1F3FB × 0308 ÷ 0023 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 0023 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 1F3FB ÷ 2014 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1F3FB × 0020 ÷ 2014 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1F3FB × 0308 ÷ 2014 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 2014 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 1F3FB × 0009 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1F3FB × 0020 ÷ 0009 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1F3FB × 0308 × 0009 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 0009 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 1F3FB ÷ 00B4 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1F3FB × 0020 ÷ 00B4 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1F3FB × 0308 ÷ 00B4 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 00B4 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 1F3FB × 000B ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1F3FB × 0020 × 000B ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1F3FB × 0308 × 000B ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1F3FB × 0308 × 0020 × 000B ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 1F3FB ÷ FFFC ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1F3FB × 0020 ÷ FFFC ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1F3FB × 0308 ÷ FFFC ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ FFFC ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 1F3FB × 007D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1F3FB × 0020 × 007D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1F3FB × 0308 × 007D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1F3FB × 0308 × 0020 × 007D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 1F3FB × 0029 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 1F3FB × 0020 × 0029 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 1F3FB × 0308 × 0029 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 1F3FB × 0308 × 0020 × 0029 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 1F3FB × 000D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1F3FB × 0020 × 000D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1F3FB × 0308 × 000D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1F3FB × 0308 × 0020 × 000D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 1F3FB × 0021 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1F3FB × 0020 × 0021 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1F3FB × 0308 × 0021 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1F3FB × 0308 × 0020 × 0021 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 1F3FB × 00A0 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1F3FB × 0020 ÷ 00A0 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1F3FB × 0308 × 00A0 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 00A0 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 1F3FB ÷ AC00 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1F3FB × 0020 ÷ AC00 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1F3FB × 0308 ÷ AC00 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ AC00 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 1F3FB ÷ AC01 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1F3FB × 0020 ÷ AC01 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1F3FB × 0308 ÷ AC01 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ AC01 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 1F3FB ÷ 05D0 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1F3FB × 0020 ÷ 05D0 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1F3FB × 0308 ÷ 05D0 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 05D0 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 1F3FB × 002D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1F3FB × 0020 ÷ 002D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1F3FB × 0308 × 002D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 002D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 1F3FB ÷ 231A ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 1F3FB × 0020 ÷ 231A ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 1F3FB × 0308 ÷ 231A ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 231A ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 1F3FB × 2024 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [22.03] ONE DOT LEADER (IN) ÷ [0.3]
+× 1F3FB × 0020 ÷ 2024 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1F3FB × 0308 × 2024 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.03] ONE DOT LEADER (IN) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 2024 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 1F3FB × 002C ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [13.02] COMMA (IS) ÷ [0.3]
+× 1F3FB × 0020 × 002C ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1F3FB × 0308 × 002C ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 1F3FB × 0308 × 0020 × 002C ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 1F3FB ÷ 1100 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1F3FB × 0020 ÷ 1100 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1F3FB × 0308 ÷ 1100 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 1100 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 1F3FB ÷ 11A8 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1F3FB × 0020 ÷ 11A8 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1F3FB × 0308 ÷ 11A8 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 11A8 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1F3FB ÷ 1160 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1F3FB × 0020 ÷ 1160 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1F3FB × 0308 ÷ 1160 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 1160 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1F3FB × 000A ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1F3FB × 0020 × 000A ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1F3FB × 0308 × 000A ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1F3FB × 0308 × 0020 × 000A ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 1F3FB × 0085 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1F3FB × 0020 × 0085 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1F3FB × 0308 × 0085 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1F3FB × 0308 × 0020 × 0085 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 1F3FB × 17D6 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1F3FB × 0020 ÷ 17D6 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1F3FB × 0308 × 17D6 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 17D6 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 1F3FB ÷ 0030 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1F3FB × 0020 ÷ 0030 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1F3FB × 0308 ÷ 0030 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 0030 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 1F3FB ÷ 0028 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 1F3FB × 0020 ÷ 0028 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 1F3FB × 0308 ÷ 0028 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 0028 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 1F3FB × 0025 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [23.13] PERCENT SIGN (PO) ÷ [0.3]
+× 1F3FB × 0020 ÷ 0025 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1F3FB × 0308 × 0025 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.13] PERCENT SIGN (PO) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 0025 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 1F3FB ÷ 0024 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1F3FB × 0020 ÷ 0024 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1F3FB × 0308 ÷ 0024 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 0024 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 1F3FB × 0022 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1F3FB × 0020 ÷ 0022 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1F3FB × 0308 × 0022 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 0022 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 1F3FB × 0020 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [0.3]
+× 1F3FB × 0020 × 0020 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 1F3FB × 0308 × 0020 × 0020 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 1F3FB × 002F ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1F3FB × 0020 × 002F ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1F3FB × 0308 × 002F ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 1F3FB × 0308 × 0020 × 002F ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 1F3FB × 2060 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1F3FB × 0020 × 2060 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1F3FB × 0308 × 2060 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1F3FB × 0308 × 0020 × 2060 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 1F3FB × 200B ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1F3FB × 0020 × 200B ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1F3FB × 0308 × 200B ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1F3FB × 0308 × 0020 × 200B ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 1F3FB ÷ 1F1E6 ÷   #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1F3FB × 0020 ÷ 1F1E6 ÷   #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1F3FB × 0308 ÷ 1F1E6 ÷   #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 1F1E6 ÷   #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 1F3FB ÷ 261D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1F3FB × 0020 ÷ 261D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1F3FB × 0308 ÷ 261D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 261D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 1F3FB ÷ 1F3FB ÷   #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1F3FB × 0020 ÷ 1F3FB ÷   #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1F3FB × 0308 ÷ 1F3FB ÷   #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 1F3FB ÷   #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 1F3FB × 0001 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1F3FB × 0020 ÷ 0001 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1F3FB × 0308 × 0001 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 0001 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 1F3FB × 200D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1F3FB × 0020 ÷ 200D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1F3FB × 0308 × 200D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 200D ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 1F3FB ÷ 00A7 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1F3FB × 0020 ÷ 00A7 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1F3FB × 0308 ÷ 00A7 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 00A7 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 1F3FB ÷ 50005 ÷   #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1F3FB × 0020 ÷ 50005 ÷   #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1F3FB × 0308 ÷ 50005 ÷   #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 50005 ÷   #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 1F3FB ÷ 0E01 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1F3FB × 0020 ÷ 0E01 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1F3FB × 0308 ÷ 0E01 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 0E01 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1F3FB × 3041 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1F3FB × 0020 ÷ 3041 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1F3FB × 0308 × 3041 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 1F3FB × 0308 × 0020 ÷ 3041 ÷    #  × [0.3] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0001 × 0023 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0001 × 0020 ÷ 0023 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0001 × 0308 × 0023 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0001 ÷ 2014 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 0001 × 0020 ÷ 2014 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 0001 × 0308 ÷ 2014 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 0001 × 0009 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0001 × 0020 ÷ 0009 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0001 × 0308 × 0009 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0001 ÷ 00B4 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0001 × 0020 ÷ 00B4 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0001 × 0308 ÷ 00B4 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0001 × 000B ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0001 × 0020 × 000B ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0001 × 0308 × 000B ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0001 × 0308 × 0020 × 000B ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0001 ÷ FFFC ÷     #  × [0.3] <START OF HEADING> (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0001 × 0020 ÷ FFFC ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0001 × 0308 ÷ FFFC ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0001 × 007D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [13.04] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0001 × 0020 × 007D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0001 × 0308 × 007D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.04] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0001 × 0308 × 0020 × 007D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0001 × 0029 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [13.04] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0001 × 0020 × 0029 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0001 × 0308 × 0029 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.04] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0001 × 0308 × 0020 × 0029 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0001 × 000D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0001 × 0020 × 000D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0001 × 0308 × 000D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0001 × 0308 × 0020 × 000D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0001 × 0021 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0001 × 0020 × 0021 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0001 × 0308 × 0021 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0001 × 0308 × 0020 × 0021 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0001 × 00A0 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [12.3] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0001 × 0020 ÷ 00A0 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0001 × 0308 × 00A0 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.3] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0001 ÷ AC00 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0001 × 0020 ÷ AC00 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0001 × 0308 ÷ AC00 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0001 ÷ AC01 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0001 × 0020 ÷ AC01 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0001 × 0308 ÷ AC01 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0001 × 05D0 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0001 × 0020 ÷ 05D0 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0001 × 0308 × 05D0 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0001 × 002D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0001 × 0020 ÷ 002D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0001 × 0308 × 002D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0001 ÷ 231A ÷     #  × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 0001 × 0020 ÷ 231A ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0001 × 0308 ÷ 231A ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0001 × 2024 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 0001 × 0020 ÷ 2024 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0001 × 0308 × 2024 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0001 × 002C ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [13.04] COMMA (IS) ÷ [0.3]
+× 0001 × 0020 × 002C ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0001 × 0308 × 002C ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.04] COMMA (IS) ÷ [0.3]
+× 0001 × 0308 × 0020 × 002C ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0001 ÷ 1100 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0001 × 0020 ÷ 1100 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0001 × 0308 ÷ 1100 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0001 ÷ 11A8 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0001 × 0020 ÷ 11A8 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0001 × 0308 ÷ 11A8 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0001 ÷ 1160 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0001 × 0020 ÷ 1160 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0001 × 0308 ÷ 1160 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0001 × 000A ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0001 × 0020 × 000A ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0001 × 0308 × 000A ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0001 × 0308 × 0020 × 000A ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0001 × 0085 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0001 × 0020 × 0085 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0001 × 0308 × 0085 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0001 × 0308 × 0020 × 0085 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0001 × 17D6 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0001 × 0020 ÷ 17D6 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0001 × 0308 × 17D6 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0001 × 0030 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 0001 × 0020 ÷ 0030 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0001 × 0308 × 0030 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0001 × 0028 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0001 × 0020 ÷ 0028 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0001 × 0308 × 0028 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0001 × 0025 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 0001 × 0020 ÷ 0025 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0001 × 0308 × 0025 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0001 × 0024 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 0001 × 0020 ÷ 0024 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0001 × 0308 × 0024 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 0001 × 0022 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 0001 × 0020 ÷ 0022 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0001 × 0308 × 0022 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0001 × 0020 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0001 × 0020 × 0020 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0001 × 0308 × 0020 × 0020 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0001 × 002F ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [13.04] SOLIDUS (SY) ÷ [0.3]
+× 0001 × 0020 × 002F ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0001 × 0308 × 002F ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.04] SOLIDUS (SY) ÷ [0.3]
+× 0001 × 0308 × 0020 × 002F ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0001 × 2060 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0001 × 0020 × 2060 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0001 × 0308 × 2060 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0001 × 0308 × 0020 × 2060 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0001 × 200B ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0001 × 0020 × 200B ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0001 × 0308 × 200B ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0001 × 0308 × 0020 × 200B ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0001 ÷ 1F1E6 ÷    #  × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0001 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0001 × 0308 ÷ 1F1E6 ÷    #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0001 ÷ 261D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0001 × 0020 ÷ 261D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0001 × 0308 ÷ 261D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0001 ÷ 1F3FB ÷    #  × [0.3] <START OF HEADING> (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0001 × 0020 ÷ 1F3FB ÷    #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0001 × 0308 ÷ 1F3FB ÷    #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0001 × 0001 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0001 × 0020 ÷ 0001 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0001 × 0308 × 0001 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0001 × 200D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0001 × 0020 ÷ 200D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0001 × 0308 × 200D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0001 × 00A7 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0001 × 0020 ÷ 00A7 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0001 × 0308 × 00A7 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0001 × 50005 ÷    #  × [0.3] <START OF HEADING> (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0001 × 0020 ÷ 50005 ÷    #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0001 × 0308 × 50005 ÷    #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0001 × 0E01 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0001 × 0020 ÷ 0E01 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0001 × 0308 × 0E01 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0001 × 3041 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0001 × 0020 ÷ 3041 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0001 × 0308 × 3041 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0001 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] <START OF HEADING> (CM1_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 200D × 0023 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 200D × 0020 ÷ 0023 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 200D × 0308 × 0023 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 200D ÷ 2014 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 200D × 0020 ÷ 2014 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 200D × 0308 ÷ 2014 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 200D × 0009 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 200D × 0020 ÷ 0009 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 200D × 0308 × 0009 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 200D ÷ 00B4 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 200D × 0020 ÷ 00B4 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 200D × 0308 ÷ 00B4 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 200D × 000B ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 200D × 0020 × 000B ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 200D × 0308 × 000B ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 200D × 0308 × 0020 × 000B ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 200D ÷ FFFC ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 200D × 0020 ÷ FFFC ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 200D × 0308 ÷ FFFC ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 200D × 007D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [13.04] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 200D × 0020 × 007D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 200D × 0308 × 007D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.04] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 200D × 0308 × 0020 × 007D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 200D × 0029 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [13.04] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 200D × 0020 × 0029 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 200D × 0308 × 0029 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.04] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 200D × 0308 × 0020 × 0029 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 200D × 000D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 200D × 0020 × 000D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 200D × 0308 × 000D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 200D × 0308 × 0020 × 000D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 200D × 0021 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 200D × 0020 × 0021 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 200D × 0308 × 0021 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 200D × 0308 × 0020 × 0021 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 200D × 00A0 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [12.3] NO-BREAK SPACE (GL) ÷ [0.3]
+× 200D × 0020 ÷ 00A0 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 200D × 0308 × 00A0 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.3] NO-BREAK SPACE (GL) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 200D ÷ AC00 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 200D × 0020 ÷ AC00 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 200D × 0308 ÷ AC00 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 200D ÷ AC01 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 200D × 0020 ÷ AC01 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 200D × 0308 ÷ AC01 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 200D × 05D0 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 200D × 0020 ÷ 05D0 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 200D × 0308 × 05D0 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 200D × 002D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 200D × 0020 ÷ 002D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 200D × 0308 × 002D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 002D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 200D × 231A ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] WATCH (ID) ÷ [0.3]
+× 200D × 0020 ÷ 231A ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 200D × 0308 ÷ 231A ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 231A ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 200D × 2024 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 200D × 0020 ÷ 2024 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 200D × 0308 × 2024 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 200D × 002C ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [13.04] COMMA (IS) ÷ [0.3]
+× 200D × 0020 × 002C ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 200D × 0308 × 002C ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.04] COMMA (IS) ÷ [0.3]
+× 200D × 0308 × 0020 × 002C ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 200D ÷ 1100 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 200D × 0020 ÷ 1100 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 200D × 0308 ÷ 1100 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 200D ÷ 11A8 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 200D × 0020 ÷ 11A8 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 200D × 0308 ÷ 11A8 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 200D ÷ 1160 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 200D × 0020 ÷ 1160 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 200D × 0308 ÷ 1160 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 200D × 000A ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 200D × 0020 × 000A ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 200D × 0308 × 000A ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 200D × 0308 × 0020 × 000A ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 200D × 0085 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 200D × 0020 × 0085 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 200D × 0308 × 0085 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 200D × 0308 × 0020 × 0085 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 200D × 17D6 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 200D × 0020 ÷ 17D6 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 200D × 0308 × 17D6 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 200D × 0030 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 200D × 0020 ÷ 0030 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 200D × 0308 × 0030 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 200D × 0028 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 200D × 0020 ÷ 0028 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 200D × 0308 × 0028 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 200D × 0025 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 200D × 0020 ÷ 0025 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 200D × 0308 × 0025 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 200D × 0024 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 200D × 0020 ÷ 0024 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 200D × 0308 × 0024 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 200D × 0022 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 200D × 0020 ÷ 0022 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 200D × 0308 × 0022 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 200D × 0020 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 200D × 0020 × 0020 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 200D × 0308 × 0020 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 200D × 0308 × 0020 × 0020 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 200D × 002F ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [13.04] SOLIDUS (SY) ÷ [0.3]
+× 200D × 0020 × 002F ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 200D × 0308 × 002F ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.04] SOLIDUS (SY) ÷ [0.3]
+× 200D × 0308 × 0020 × 002F ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 200D × 2060 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 200D × 0020 × 2060 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 200D × 0308 × 2060 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 200D × 0308 × 0020 × 2060 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 200D × 200B ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 200D × 0020 × 200B ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 200D × 0308 × 200B ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 200D × 0308 × 0020 × 200B ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 200D ÷ 1F1E6 ÷    #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 200D × 0020 ÷ 1F1E6 ÷    #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 200D × 0308 ÷ 1F1E6 ÷    #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 200D × 261D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 200D × 0020 ÷ 261D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 200D × 0308 ÷ 261D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 261D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 200D × 1F3FB ÷    #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 200D × 0020 ÷ 1F3FB ÷    #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 200D × 0308 ÷ 1F3FB ÷    #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 200D × 0001 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 200D × 0020 ÷ 0001 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 200D × 0308 × 0001 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 200D × 200D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 200D × 0020 ÷ 200D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 200D × 0308 × 200D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 200D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 200D × 00A7 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 200D × 0020 ÷ 00A7 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 200D × 0308 × 00A7 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 200D × 50005 ÷    #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 200D × 0020 ÷ 50005 ÷    #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 200D × 0308 × 50005 ÷    #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 200D × 0E01 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 200D × 0020 ÷ 0E01 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 200D × 0308 × 0E01 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 200D × 3041 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 200D × 0020 ÷ 3041 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 200D × 0308 × 3041 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 200D × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 00A7 × 0023 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
 × 00A7 × 0020 ÷ 0023 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 00A7 × 0308 × 0023 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 00A7 × 0308 × 0023 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 00A7 ÷ 2014 ÷     #  × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 00A7 × 0020 ÷ 2014 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 00A7 × 0308 ÷ 2014 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 00A7 × 0308 ÷ 2014 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 00A7 × 0009 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 00A7 × 0020 ÷ 0009 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 00A7 × 0308 × 0009 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00A7 × 0308 × 0009 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 00A7 ÷ 00B4 ÷     #  × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 00A7 × 0020 ÷ 00B4 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 00A7 × 0308 ÷ 00B4 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 00A7 × 0308 ÷ 00B4 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 00A7 × 000B ÷     #  × [0.3] SECTION SIGN (AI_AL) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 00A7 × 0020 × 000B ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 00A7 × 0308 × 000B ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 00A7 × 0308 × 0020 × 000B ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00A7 × 0308 × 000B ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 00A7 × 0308 × 0020 × 000B ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 00A7 ÷ FFFC ÷     #  × [0.3] SECTION SIGN (AI_AL) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 00A7 × 0020 ÷ FFFC ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 00A7 × 0308 ÷ FFFC ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00A7 × 0308 ÷ FFFC ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 00A7 × 007D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 00A7 × 0020 × 007D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 00A7 × 0308 × 007D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 00A7 × 0308 × 0020 × 007D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00A7 × 0308 × 007D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 00A7 × 0308 × 0020 × 007D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 00A7 × 0029 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 00A7 × 0020 × 0029 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 00A7 × 0308 × 0029 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 00A7 × 0308 × 0020 × 0029 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 00A7 × 0001 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 00A7 × 0020 ÷ 0001 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 00A7 × 0308 × 0001 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 00A7 × 0308 × 0029 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 00A7 × 0308 × 0020 × 0029 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 00A7 × 000D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 00A7 × 0020 × 000D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 00A7 × 0308 × 000D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 00A7 × 0308 × 0020 × 000D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00A7 × 0308 × 000D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 00A7 × 0308 × 0020 × 000D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 00A7 × 0021 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 00A7 × 0020 × 0021 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 00A7 × 0308 × 0021 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 00A7 × 0308 × 0020 × 0021 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00A7 × 0308 × 0021 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 00A7 × 0308 × 0020 × 0021 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 00A7 × 00A0 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 00A7 × 0020 ÷ 00A0 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 00A7 × 0308 × 00A0 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00A7 × 0308 × 00A0 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 00A7 ÷ AC00 ÷     #  × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 00A7 × 0020 ÷ AC00 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 00A7 × 0308 ÷ AC00 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00A7 × 0308 ÷ AC00 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 00A7 ÷ AC01 ÷     #  × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 00A7 × 0020 ÷ AC01 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 00A7 × 0308 ÷ AC01 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00A7 × 0308 ÷ AC01 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 00A7 × 05D0 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 00A7 × 0020 ÷ 05D0 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 00A7 × 0308 × 05D0 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00A7 × 0308 × 05D0 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 00A7 × 002D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 00A7 × 0020 ÷ 002D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 00A7 × 0308 × 002D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00A7 × 0308 × 002D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 00A7 ÷ 231A ÷     #  × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 00A7 × 0020 ÷ 231A ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 00A7 × 0308 ÷ 231A ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 00A7 × 0308 ÷ 231A ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 00A7 × 2024 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
 × 00A7 × 0020 ÷ 2024 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 00A7 × 0308 × 2024 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 00A7 × 0308 × 2024 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 00A7 × 002C ÷     #  × [0.3] SECTION SIGN (AI_AL) × [13.02] COMMA (IS) ÷ [0.3]
 × 00A7 × 0020 × 002C ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 00A7 × 0308 × 002C ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 00A7 × 0308 × 0020 × 002C ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 00A7 × 0308 × 002C ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 00A7 × 0308 × 0020 × 002C ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 00A7 ÷ 1100 ÷     #  × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 00A7 × 0020 ÷ 1100 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 00A7 × 0308 ÷ 1100 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00A7 × 0308 ÷ 1100 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 00A7 ÷ 11A8 ÷     #  × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 00A7 × 0020 ÷ 11A8 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 00A7 × 0308 ÷ 11A8 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00A7 × 0308 ÷ 11A8 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 00A7 ÷ 1160 ÷     #  × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 00A7 × 0020 ÷ 1160 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 00A7 × 0308 ÷ 1160 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00A7 × 0308 ÷ 1160 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 00A7 × 000A ÷     #  × [0.3] SECTION SIGN (AI_AL) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 00A7 × 0020 × 000A ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 00A7 × 0308 × 000A ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 00A7 × 0308 × 0020 × 000A ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00A7 × 0308 × 000A ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 00A7 × 0308 × 0020 × 000A ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 00A7 × 0085 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 00A7 × 0020 × 0085 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 00A7 × 0308 × 0085 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 00A7 × 0308 × 0020 × 0085 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00A7 × 0308 × 0085 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 00A7 × 0308 × 0020 × 0085 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 00A7 × 17D6 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 00A7 × 0020 ÷ 17D6 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 00A7 × 0308 × 17D6 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00A7 × 0308 × 17D6 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 00A7 × 0030 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
 × 00A7 × 0020 ÷ 0030 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 00A7 × 0308 × 0030 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 00A7 × 0308 × 0030 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 00A7 × 0028 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 00A7 × 0020 ÷ 0028 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 00A7 × 0308 × 0028 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
\97 00A7 Ã· 0025 Ã·     #  Ã\97 [0.3] SECTION SIGN (AI_AL) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 00A7 × 0308 × 0028 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
\97 00A7 Ã\97 0025 Ã·     #  Ã\97 [0.3] SECTION SIGN (AI_AL) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
 × 00A7 × 0020 ÷ 0025 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 00A7 Ã\97 0308 Ã· 0025 Ã·     #  Ã\97 [0.3] SECTION SIGN (AI_AL) Ã\97 [9.0] COMBINING DIAERESIS (CM) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 00A7 Ã· 0024 Ã·     #  Ã\97 [0.3] SECTION SIGN (AI_AL) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 00A7 Ã\97 0308 Ã\97 0025 Ã·     #  Ã\97 [0.3] SECTION SIGN (AI_AL) Ã\97 [9.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 00A7 Ã\97 0024 Ã·     #  Ã\97 [0.3] SECTION SIGN (AI_AL) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
 × 00A7 × 0020 ÷ 0024 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 00A7 Ã\97 0308 Ã· 0024 Ã·     #  Ã\97 [0.3] SECTION SIGN (AI_AL) Ã\97 [9.0] COMBINING DIAERESIS (CM) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 00A7 Ã\97 0308 Ã\97 0024 Ã·     #  Ã\97 [0.3] SECTION SIGN (AI_AL) Ã\97 [9.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 00A7 × 0022 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 00A7 × 0020 ÷ 0022 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 00A7 × 0308 × 0022 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 00A7 × 0308 × 0022 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 00A7 × 0020 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [0.3]
 × 00A7 × 0020 × 0020 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 00A7 × 0308 × 0020 × 0020 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 00A7 × 0308 × 0020 × 0020 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 00A7 × 002F ÷     #  × [0.3] SECTION SIGN (AI_AL) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 00A7 × 0020 × 002F ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 00A7 × 0308 × 002F ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 00A7 × 0308 × 0020 × 002F ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 00A7 × 0308 × 002F ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 00A7 × 0308 × 0020 × 002F ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 00A7 × 2060 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 00A7 × 0020 × 2060 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 00A7 × 0308 × 2060 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 00A7 × 0308 × 0020 × 2060 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00A7 × 0308 × 2060 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 00A7 × 0308 × 0020 × 2060 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 00A7 × 200B ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 00A7 × 0020 × 200B ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 00A7 × 0308 × 200B ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 00A7 × 0308 × 0020 × 200B ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00A7 × 0308 × 200B ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 00A7 × 0308 × 0020 × 200B ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 00A7 ÷ 1F1E6 ÷    #  × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 00A7 × 0020 ÷ 1F1E6 ÷    #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 00A7 × 0308 ÷ 1F1E6 ÷    #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00A7 × 0308 ÷ 1F1E6 ÷    #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 00A7 ÷ 261D ÷     #  × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00A7 × 0020 ÷ 261D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00A7 × 0308 ÷ 261D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 00A7 ÷ 1F3FB ÷    #  × [0.3] SECTION SIGN (AI_AL) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00A7 × 0020 ÷ 1F3FB ÷    #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00A7 × 0308 ÷ 1F3FB ÷    #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 00A7 × 0001 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00A7 × 0020 ÷ 0001 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00A7 × 0308 × 0001 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 00A7 × 200D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00A7 × 0020 ÷ 200D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00A7 × 0308 × 200D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 00A7 × 00A7 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 00A7 × 0020 ÷ 00A7 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 00A7 × 0308 × 00A7 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00A7 × 0308 × 00A7 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 00A7 × 50005 ÷    #  × [0.3] SECTION SIGN (AI_AL) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 00A7 × 0020 ÷ 50005 ÷    #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 00A7 × 0308 × 50005 ÷    #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00A7 × 0308 × 50005 ÷    #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 00A7 × 0E01 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 00A7 × 0020 ÷ 0E01 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 00A7 × 0308 × 0E01 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00A7 × 0308 × 0E01 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 00A7 × 3041 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 00A7 × 0020 ÷ 3041 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 00A7 × 0308 × 3041 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 00A7 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00A7 × 0308 × 3041 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 00A7 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] SECTION SIGN (AI_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 50005 × 0023 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
 × 50005 × 0020 ÷ 0023 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 50005 × 0308 × 0023 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 0023 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 50005 × 0308 × 0023 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 0023 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 50005 ÷ 2014 ÷    #  × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 50005 × 0020 ÷ 2014 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 50005 × 0308 ÷ 2014 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 2014 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 50005 × 0308 ÷ 2014 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 2014 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 50005 × 0009 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 50005 × 0020 ÷ 0009 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 50005 × 0308 × 0009 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 0009 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 50005 × 0308 × 0009 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 0009 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 50005 ÷ 00B4 ÷    #  × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 50005 × 0020 ÷ 00B4 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 50005 × 0308 ÷ 00B4 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 00B4 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 50005 × 0308 ÷ 00B4 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 00B4 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 50005 × 000B ÷    #  × [0.3] <reserved-50005> (XX_AL) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 50005 × 0020 × 000B ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 50005 × 0308 × 000B ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 50005 × 0308 × 0020 × 000B ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 50005 × 0308 × 000B ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 50005 × 0308 × 0020 × 000B ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 50005 ÷ FFFC ÷    #  × [0.3] <reserved-50005> (XX_AL) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 50005 × 0020 ÷ FFFC ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 50005 × 0308 ÷ FFFC ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ FFFC ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 50005 × 0308 ÷ FFFC ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ FFFC ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 50005 × 007D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 50005 × 0020 × 007D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 50005 × 0308 × 007D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 50005 × 0308 × 0020 × 007D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 50005 × 0308 × 007D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 50005 × 0308 × 0020 × 007D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 50005 × 0029 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 50005 × 0020 × 0029 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 50005 × 0308 × 0029 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 50005 × 0308 × 0020 × 0029 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 50005 × 0001 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 50005 × 0020 ÷ 0001 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 50005 × 0308 × 0001 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 0001 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 50005 × 0308 × 0029 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 50005 × 0308 × 0020 × 0029 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 50005 × 000D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 50005 × 0020 × 000D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 50005 × 0308 × 000D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 50005 × 0308 × 0020 × 000D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 50005 × 0308 × 000D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 50005 × 0308 × 0020 × 000D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 50005 × 0021 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 50005 × 0020 × 0021 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 50005 × 0308 × 0021 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 50005 × 0308 × 0020 × 0021 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 50005 × 0308 × 0021 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 50005 × 0308 × 0020 × 0021 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 50005 × 00A0 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 50005 × 0020 ÷ 00A0 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 50005 × 0308 × 00A0 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 00A0 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 50005 × 0308 × 00A0 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 00A0 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 50005 ÷ AC00 ÷    #  × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 50005 × 0020 ÷ AC00 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 50005 × 0308 ÷ AC00 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ AC00 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 50005 × 0308 ÷ AC00 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ AC00 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 50005 ÷ AC01 ÷    #  × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 50005 × 0020 ÷ AC01 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 50005 × 0308 ÷ AC01 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ AC01 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 50005 × 0308 ÷ AC01 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ AC01 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 50005 × 05D0 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 50005 × 0020 ÷ 05D0 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 50005 × 0308 × 05D0 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 05D0 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 50005 × 0308 × 05D0 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 05D0 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 50005 × 002D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 50005 × 0020 ÷ 002D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 50005 × 0308 × 002D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 002D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 50005 × 0308 × 002D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 002D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 50005 ÷ 231A ÷    #  × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 50005 × 0020 ÷ 231A ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 50005 × 0308 ÷ 231A ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 231A ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 50005 × 0308 ÷ 231A ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 231A ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 50005 × 2024 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
 × 50005 × 0020 ÷ 2024 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 50005 × 0308 × 2024 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 2024 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 50005 × 0308 × 2024 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 2024 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 50005 × 002C ÷    #  × [0.3] <reserved-50005> (XX_AL) × [13.02] COMMA (IS) ÷ [0.3]
 × 50005 × 0020 × 002C ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 50005 × 0308 × 002C ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 50005 × 0308 × 0020 × 002C ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 50005 × 0308 × 002C ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 50005 × 0308 × 0020 × 002C ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 50005 ÷ 1100 ÷    #  × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 50005 × 0020 ÷ 1100 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 50005 × 0308 ÷ 1100 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 1100 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 50005 × 0308 ÷ 1100 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 1100 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 50005 ÷ 11A8 ÷    #  × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 50005 × 0020 ÷ 11A8 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 50005 × 0308 ÷ 11A8 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 11A8 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 50005 × 0308 ÷ 11A8 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 11A8 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 50005 ÷ 1160 ÷    #  × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 50005 × 0020 ÷ 1160 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 50005 × 0308 ÷ 1160 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 1160 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 50005 × 0308 ÷ 1160 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 1160 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 50005 × 000A ÷    #  × [0.3] <reserved-50005> (XX_AL) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 50005 × 0020 × 000A ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 50005 × 0308 × 000A ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 50005 × 0308 × 0020 × 000A ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 50005 × 0308 × 000A ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 50005 × 0308 × 0020 × 000A ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 50005 × 0085 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 50005 × 0020 × 0085 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 50005 × 0308 × 0085 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 50005 × 0308 × 0020 × 0085 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 50005 × 0308 × 0085 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 50005 × 0308 × 0020 × 0085 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 50005 × 17D6 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 50005 × 0020 ÷ 17D6 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 50005 × 0308 × 17D6 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 17D6 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 50005 × 0308 × 17D6 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 17D6 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 50005 × 0030 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
 × 50005 × 0020 ÷ 0030 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 50005 × 0308 × 0030 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 0030 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 50005 × 0308 × 0030 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 0030 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 50005 × 0028 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 50005 × 0020 ÷ 0028 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 50005 × 0308 × 0028 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 0028 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
\97 50005 Ã· 0025 Ã·    #  Ã\97 [0.3] <reserved-50005> (XX_AL) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 50005 × 0308 × 0028 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 0028 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
\97 50005 Ã\97 0025 Ã·    #  Ã\97 [0.3] <reserved-50005> (XX_AL) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
 × 50005 × 0020 ÷ 0025 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 50005 Ã\97 0308 Ã· 0025 Ã·    #  Ã\97 [0.3] <reserved-50005> (XX_AL) Ã\97 [9.0] COMBINING DIAERESIS (CM) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 0025 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 50005 Ã· 0024 Ã·    #  Ã\97 [0.3] <reserved-50005> (XX_AL) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 50005 Ã\97 0308 Ã\97 0025 Ã·    #  Ã\97 [0.3] <reserved-50005> (XX_AL) Ã\97 [9.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 0025 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 50005 Ã\97 0024 Ã·    #  Ã\97 [0.3] <reserved-50005> (XX_AL) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
 × 50005 × 0020 ÷ 0024 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 50005 Ã\97 0308 Ã· 0024 Ã·    #  Ã\97 [0.3] <reserved-50005> (XX_AL) Ã\97 [9.0] COMBINING DIAERESIS (CM) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 0024 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 50005 Ã\97 0308 Ã\97 0024 Ã·    #  Ã\97 [0.3] <reserved-50005> (XX_AL) Ã\97 [9.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 0024 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 50005 × 0022 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 50005 × 0020 ÷ 0022 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 50005 × 0308 × 0022 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 0022 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 50005 × 0308 × 0022 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 0022 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 50005 × 0020 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [0.3]
 × 50005 × 0020 × 0020 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 50005 × 0308 × 0020 × 0020 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 50005 × 0308 × 0020 × 0020 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 50005 × 002F ÷    #  × [0.3] <reserved-50005> (XX_AL) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 50005 × 0020 × 002F ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 50005 × 0308 × 002F ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 50005 × 0308 × 0020 × 002F ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 50005 × 0308 × 002F ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 50005 × 0308 × 0020 × 002F ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 50005 × 2060 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 50005 × 0020 × 2060 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 50005 × 0308 × 2060 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 50005 × 0308 × 0020 × 2060 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 50005 × 0308 × 2060 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 50005 × 0308 × 0020 × 2060 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 50005 × 200B ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 50005 × 0020 × 200B ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 50005 × 0308 × 200B ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 50005 × 0308 × 0020 × 200B ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 50005 × 0308 × 200B ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 50005 × 0308 × 0020 × 200B ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 50005 ÷ 1F1E6 ÷   #  × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 50005 × 0020 ÷ 1F1E6 ÷   #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 50005 × 0308 ÷ 1F1E6 ÷   #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 1F1E6 ÷   #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 50005 × 0308 ÷ 1F1E6 ÷   #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 1F1E6 ÷   #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 50005 ÷ 261D ÷    #  × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 50005 × 0020 ÷ 261D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 50005 × 0308 ÷ 261D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 261D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 50005 ÷ 1F3FB ÷   #  × [0.3] <reserved-50005> (XX_AL) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 50005 × 0020 ÷ 1F3FB ÷   #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 50005 × 0308 ÷ 1F3FB ÷   #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 1F3FB ÷   #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 50005 × 0001 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 50005 × 0020 ÷ 0001 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 50005 × 0308 × 0001 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 0001 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 50005 × 200D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 50005 × 0020 ÷ 200D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 50005 × 0308 × 200D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 200D ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 50005 × 00A7 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 50005 × 0020 ÷ 00A7 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 50005 × 0308 × 00A7 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 00A7 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 50005 × 0308 × 00A7 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 00A7 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 50005 × 50005 ÷   #  × [0.3] <reserved-50005> (XX_AL) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 50005 × 0020 ÷ 50005 ÷   #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 50005 × 0308 × 50005 ÷   #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 50005 ÷   #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 50005 × 0308 × 50005 ÷   #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 50005 ÷   #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 50005 × 0E01 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 50005 × 0020 ÷ 0E01 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 50005 × 0308 × 0E01 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 0E01 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 50005 × 0308 × 0E01 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 0E01 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 50005 × 3041 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 50005 × 0020 ÷ 3041 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 50005 × 0308 × 3041 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 50005 × 0308 × 0020 ÷ 3041 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 50005 × 0308 × 3041 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 50005 × 0308 × 0020 ÷ 3041 ÷    #  × [0.3] <reserved-50005> (XX_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0E01 × 0023 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0E01 × 0020 ÷ 0023 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0E01 × 0308 × 0023 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0E01 × 0308 × 0023 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] NUMBER SIGN (AL) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 0E01 ÷ 2014 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 0E01 × 0020 ÷ 2014 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 0E01 × 0308 ÷ 2014 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 0E01 × 0308 ÷ 2014 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 0E01 × 0009 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0E01 × 0020 ÷ 0009 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0E01 × 0308 × 0009 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0E01 × 0308 × 0009 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 0E01 ÷ 00B4 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0E01 × 0020 ÷ 00B4 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0E01 × 0308 ÷ 00B4 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0E01 × 0308 ÷ 00B4 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 0E01 × 000B ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0E01 × 0020 × 000B ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0E01 × 0308 × 000B ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 0E01 × 0308 × 0020 × 000B ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0E01 × 0308 × 000B ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 0E01 × 0308 × 0020 × 000B ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 0E01 ÷ FFFC ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0E01 × 0020 ÷ FFFC ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0E01 × 0308 ÷ FFFC ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0E01 × 0308 ÷ FFFC ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 0E01 × 007D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0E01 × 0020 × 007D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0E01 × 0308 × 007D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0E01 × 0308 × 0020 × 007D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0E01 × 0308 × 007D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0E01 × 0308 × 0020 × 007D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0E01 × 0029 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0E01 × 0020 × 0029 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0E01 × 0308 × 0029 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0E01 × 0308 × 0020 × 0029 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0E01 × 0001 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0E01 × 0020 ÷ 0001 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0E01 × 0308 × 0001 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 0E01 × 0308 × 0029 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0E01 × 0308 × 0020 × 0029 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0E01 × 000D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0E01 × 0020 × 000D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0E01 × 0308 × 000D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 0E01 × 0308 × 0020 × 000D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0E01 × 0308 × 000D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 0E01 × 0308 × 0020 × 000D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 0E01 × 0021 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0E01 × 0020 × 0021 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0E01 × 0308 × 0021 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 0E01 × 0308 × 0020 × 0021 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0E01 × 0308 × 0021 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 0E01 × 0308 × 0020 × 0021 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0E01 × 00A0 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0E01 × 0020 ÷ 00A0 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0E01 × 0308 × 00A0 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0E01 × 0308 × 00A0 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 0E01 ÷ AC00 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0E01 × 0020 ÷ AC00 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0E01 × 0308 ÷ AC00 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0E01 × 0308 ÷ AC00 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 0E01 ÷ AC01 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0E01 × 0020 ÷ AC01 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0E01 × 0308 ÷ AC01 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0E01 × 0308 ÷ AC01 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 0E01 × 05D0 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0E01 × 0020 ÷ 05D0 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0E01 × 0308 × 05D0 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0E01 × 0308 × 05D0 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 0E01 × 002D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0E01 × 0020 ÷ 002D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0E01 × 0308 × 002D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0E01 × 0308 × 002D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 0E01 ÷ 231A ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 0E01 × 0020 ÷ 231A ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 0E01 × 0308 ÷ 231A ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 0E01 × 0308 ÷ 231A ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 0E01 × 2024 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
 × 0E01 × 0020 ÷ 2024 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 0E01 × 0308 × 2024 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 0E01 × 0308 × 2024 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 0E01 × 002C ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [13.02] COMMA (IS) ÷ [0.3]
 × 0E01 × 0020 × 002C ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 0E01 × 0308 × 002C ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 0E01 × 0308 × 0020 × 002C ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 0E01 × 0308 × 002C ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 0E01 × 0308 × 0020 × 002C ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 0E01 ÷ 1100 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0E01 × 0020 ÷ 1100 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0E01 × 0308 ÷ 1100 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0E01 × 0308 ÷ 1100 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 0E01 ÷ 11A8 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0E01 × 0020 ÷ 11A8 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0E01 × 0308 ÷ 11A8 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0E01 × 0308 ÷ 11A8 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 0E01 ÷ 1160 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0E01 × 0020 ÷ 1160 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0E01 × 0308 ÷ 1160 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0E01 × 0308 ÷ 1160 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 0E01 × 000A ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0E01 × 0020 × 000A ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0E01 × 0308 × 000A ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 0E01 × 0308 × 0020 × 000A ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0E01 × 0308 × 000A ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 0E01 × 0308 × 0020 × 000A ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 0E01 × 0085 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0E01 × 0020 × 0085 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0E01 × 0308 × 0085 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 0E01 × 0308 × 0020 × 0085 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0E01 × 0308 × 0085 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 0E01 × 0308 × 0020 × 0085 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 0E01 × 17D6 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0E01 × 0020 ÷ 17D6 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0E01 × 0308 × 17D6 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0E01 × 0308 × 17D6 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 0E01 × 0030 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
 × 0E01 × 0020 ÷ 0030 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 0E01 × 0308 × 0030 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 0E01 × 0308 × 0030 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 0E01 × 0028 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 0E01 × 0020 ÷ 0028 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0E01 × 0308 × 0028 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
\97 0E01 Ã· 0025 Ã·     #  Ã\97 [0.3] THAI CHARACTER KO KAI (SA_AL) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 0E01 × 0308 × 0028 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
\97 0E01 Ã\97 0025 Ã·     #  Ã\97 [0.3] THAI CHARACTER KO KAI (SA_AL) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
 × 0E01 × 0020 ÷ 0025 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 0E01 Ã\97 0308 Ã· 0025 Ã·     #  Ã\97 [0.3] THAI CHARACTER KO KAI (SA_AL) Ã\97 [9.0] COMBINING DIAERESIS (CM) Ã· [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 0E01 Ã· 0024 Ã·     #  Ã\97 [0.3] THAI CHARACTER KO KAI (SA_AL) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 0E01 Ã\97 0308 Ã\97 0025 Ã·     #  Ã\97 [0.3] THAI CHARACTER KO KAI (SA_AL) Ã\97 [9.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] PERCENT SIGN (PO) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
\97 0E01 Ã\97 0024 Ã·     #  Ã\97 [0.3] THAI CHARACTER KO KAI (SA_AL) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
 × 0E01 × 0020 ÷ 0024 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 0E01 Ã\97 0308 Ã· 0024 Ã·     #  Ã\97 [0.3] THAI CHARACTER KO KAI (SA_AL) Ã\97 [9.0] COMBINING DIAERESIS (CM) Ã· [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
\97 0E01 Ã\97 0308 Ã\97 0024 Ã·     #  Ã\97 [0.3] THAI CHARACTER KO KAI (SA_AL) Ã\97 [9.0] COMBINING DIAERESIS (CM1_CM) Ã\97 [24.03] DOLLAR SIGN (PR) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 0E01 × 0022 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 0E01 × 0020 ÷ 0022 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 0E01 × 0308 × 0022 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 0E01 × 0308 × 0022 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 0E01 × 0020 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [0.3]
 × 0E01 × 0020 × 0020 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 0E01 × 0308 × 0020 × 0020 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0E01 × 0308 × 0020 × 0020 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 0E01 × 002F ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0E01 × 0020 × 002F ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 0E01 × 0308 × 002F ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 0E01 × 0308 × 0020 × 002F ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 0E01 × 0308 × 002F ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 0E01 × 0308 × 0020 × 002F ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 0E01 × 2060 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0E01 × 0020 × 2060 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0E01 × 0308 × 2060 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 0E01 × 0308 × 0020 × 2060 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0E01 × 0308 × 2060 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 0E01 × 0308 × 0020 × 2060 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 0E01 × 200B ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0E01 × 0020 × 200B ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0E01 × 0308 × 200B ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 0E01 × 0308 × 0020 × 200B ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0E01 × 0308 × 200B ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 0E01 × 0308 × 0020 × 200B ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 0E01 ÷ 1F1E6 ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 0E01 × 0020 ÷ 1F1E6 ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0E01 × 0308 ÷ 1F1E6 ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0E01 × 0308 ÷ 1F1E6 ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 0E01 ÷ 261D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0E01 × 0020 ÷ 261D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0E01 × 0308 ÷ 261D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0E01 ÷ 1F3FB ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0E01 × 0020 ÷ 1F3FB ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0E01 × 0308 ÷ 1F3FB ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0E01 × 0001 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0E01 × 0020 ÷ 0001 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0E01 × 0308 × 0001 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 0E01 × 200D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0E01 × 0020 ÷ 200D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0E01 × 0308 × 200D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 0E01 × 00A7 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0E01 × 0020 ÷ 00A7 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0E01 × 0308 × 00A7 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0E01 × 0308 × 00A7 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 0E01 × 50005 ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0E01 × 0020 ÷ 50005 ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0E01 × 0308 × 50005 ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0E01 × 0308 × 50005 ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 0E01 × 0E01 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0E01 × 0020 ÷ 0E01 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0E01 × 0308 × 0E01 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0E01 × 0308 × 0E01 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [28.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 0E01 × 3041 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 0E01 × 0020 ÷ 3041 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0E01 × 0308 × 3041 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 0E01 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0E01 × 0308 × 3041 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0E01 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 3041 ÷ 0023 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
 × 3041 × 0020 ÷ 0023 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
-× 3041 × 0308 ÷ 0023 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
+× 3041 × 0308 ÷ 0023 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 0023 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NUMBER SIGN (AL) ÷ [0.3]
 × 3041 ÷ 2014 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] EM DASH (B2) ÷ [0.3]
 × 3041 × 0020 ÷ 2014 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
-× 3041 × 0308 ÷ 2014 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
+× 3041 × 0308 ÷ 2014 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EM DASH (B2) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 2014 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EM DASH (B2) ÷ [0.3]
 × 3041 × 0009 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 3041 × 0020 ÷ 0009 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 3041 × 0308 × 0009 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 3041 × 0308 × 0009 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.01] <CHARACTER TABULATION> (BA) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 0009 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <CHARACTER TABULATION> (BA) ÷ [0.3]
 × 3041 ÷ 00B4 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 3041 × 0020 ÷ 00B4 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 3041 × 0308 ÷ 00B4 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 3041 × 0308 ÷ 00B4 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ACUTE ACCENT (BB) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 00B4 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ACUTE ACCENT (BB) ÷ [0.3]
 × 3041 × 000B ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 3041 × 0020 × 000B ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 3041 × 0308 × 000B ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
-× 3041 × 0308 × 0020 × 000B ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 3041 × 0308 × 000B ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
+× 3041 × 0308 × 0020 × 000B ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE TABULATION> (BK) ÷ [0.3]
 × 3041 ÷ FFFC ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 3041 × 0020 ÷ FFFC ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 3041 × 0308 ÷ FFFC ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 3041 × 0308 ÷ FFFC ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ FFFC ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
 × 3041 × 007D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 3041 × 0020 × 007D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 3041 × 0308 × 007D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 3041 × 0308 × 0020 × 007D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 3041 × 0308 × 007D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 3041 × 0308 × 0020 × 007D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 3041 × 0029 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 3041 × 0020 × 0029 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 3041 × 0308 × 0029 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 3041 × 0308 × 0020 × 0029 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 3041 × 0001 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 3041 × 0020 ÷ 0001 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
-× 3041 × 0308 × 0001 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [9.0] <START OF HEADING> (CM) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM) ÷ [0.3]
+× 3041 × 0308 × 0029 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 3041 × 0308 × 0020 × 0029 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 3041 × 000D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 3041 × 0020 × 000D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 3041 × 0308 × 000D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-× 3041 × 0308 × 0020 × 000D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 3041 × 0308 × 000D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+× 3041 × 0308 × 0020 × 000D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 × 3041 × 0021 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 3041 × 0020 × 0021 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 3041 × 0308 × 0021 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
-× 3041 × 0308 × 0020 × 0021 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 3041 × 0308 × 0021 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
+× 3041 × 0308 × 0020 × 0021 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 3041 × 00A0 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [12.1] NO-BREAK SPACE (GL) ÷ [0.3]
 × 3041 × 0020 ÷ 00A0 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
-× 3041 × 0308 × 00A0 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
+× 3041 × 0308 × 00A0 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 00A0 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] NO-BREAK SPACE (GL) ÷ [0.3]
 × 3041 ÷ AC00 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 3041 × 0020 ÷ AC00 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 3041 × 0308 ÷ AC00 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 3041 × 0308 ÷ AC00 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ AC00 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GA (H2) ÷ [0.3]
 × 3041 ÷ AC01 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 3041 × 0020 ÷ AC01 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 3041 × 0308 ÷ AC01 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 3041 × 0308 ÷ AC01 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ AC01 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL SYLLABLE GAG (H3) ÷ [0.3]
 × 3041 ÷ 05D0 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 3041 × 0020 ÷ 05D0 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 3041 × 0308 ÷ 05D0 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 3041 × 0308 ÷ 05D0 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 05D0 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HEBREW LETTER ALEF (HL) ÷ [0.3]
 × 3041 × 002D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
 × 3041 × 0020 ÷ 002D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
-× 3041 × 0308 × 002D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
+× 3041 × 0308 × 002D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 002D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HYPHEN-MINUS (HY) ÷ [0.3]
 × 3041 ÷ 231A ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] WATCH (ID) ÷ [0.3]
 × 3041 × 0020 ÷ 231A ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
-× 3041 × 0308 ÷ 231A ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
+× 3041 × 0308 ÷ 231A ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WATCH (ID) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 231A ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WATCH (ID) ÷ [0.3]
 × 3041 ÷ 2024 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 3041 × 0020 ÷ 2024 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 3041 × 0308 ÷ 2024 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 3041 × 0308 ÷ 2024 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] ONE DOT LEADER (IN) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 2024 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ONE DOT LEADER (IN) ÷ [0.3]
 × 3041 × 002C ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [13.02] COMMA (IS) ÷ [0.3]
 × 3041 × 0020 × 002C ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
-× 3041 × 0308 × 002C ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [13.03] COMMA (IS) ÷ [0.3]
-× 3041 × 0308 × 0020 × 002C ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
+× 3041 × 0308 × 002C ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] COMMA (IS) ÷ [0.3]
+× 3041 × 0308 × 0020 × 002C ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] COMMA (IS) ÷ [0.3]
 × 3041 ÷ 1100 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 3041 × 0020 ÷ 1100 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 3041 × 0308 ÷ 1100 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 3041 × 0308 ÷ 1100 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 1100 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL CHOSEONG KIYEOK (JL) ÷ [0.3]
 × 3041 ÷ 11A8 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 3041 × 0020 ÷ 11A8 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 3041 × 0308 ÷ 11A8 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 3041 × 0308 ÷ 11A8 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 11A8 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
 × 3041 ÷ 1160 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 3041 × 0020 ÷ 1160 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 3041 × 0308 ÷ 1160 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 3041 × 0308 ÷ 1160 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 1160 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
 × 3041 × 000A ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 3041 × 0020 × 000A ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 3041 × 0308 × 000A ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-× 3041 × 0308 × 0020 × 000A ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 3041 × 0308 × 000A ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+× 3041 × 0308 × 0020 × 000A ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 × 3041 × 0085 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 3041 × 0020 × 0085 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 3041 × 0308 × 0085 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
-× 3041 × 0308 × 0020 × 0085 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 3041 × 0308 × 0085 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
+× 3041 × 0308 × 0020 × 0085 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [6.0] <NEXT LINE (NEL)> (NL) ÷ [0.3]
 × 3041 × 17D6 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 3041 × 0020 ÷ 17D6 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 3041 × 0308 × 17D6 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 3041 × 0308 × 17D6 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 17D6 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] KHMER SIGN CAMNUC PII KUUH (NS) ÷ [0.3]
 × 3041 ÷ 0030 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
 × 3041 × 0020 ÷ 0030 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
-× 3041 × 0308 ÷ 0030 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
+× 3041 × 0308 ÷ 0030 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DIGIT ZERO (NU) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 0030 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DIGIT ZERO (NU) ÷ [0.3]
 × 3041 ÷ 0028 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 3041 × 0020 ÷ 0028 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 3041 × 0308 ÷ 0028 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 3041 × 0308 ÷ 0028 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] LEFT PARENTHESIS (OP) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 0028 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] LEFT PARENTHESIS (OP) ÷ [0.3]
 × 3041 ÷ 0025 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
 × 3041 × 0020 ÷ 0025 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
-× 3041 × 0308 ÷ 0025 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
+× 3041 × 0308 ÷ 0025 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] PERCENT SIGN (PO) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 0025 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] PERCENT SIGN (PO) ÷ [0.3]
 × 3041 ÷ 0024 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 3041 × 0020 ÷ 0024 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 3041 × 0308 ÷ 0024 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 3041 × 0308 ÷ 0024 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] DOLLAR SIGN (PR) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 0024 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] DOLLAR SIGN (PR) ÷ [0.3]
 × 3041 × 0022 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
 × 3041 × 0020 ÷ 0022 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
-× 3041 × 0308 × 0022 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
+× 3041 × 0308 × 0022 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] QUOTATION MARK (QU) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 0022 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] QUOTATION MARK (QU) ÷ [0.3]
 × 3041 × 0020 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [0.3]
 × 3041 × 0020 × 0020 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 3041 × 0308 × 0020 × 0020 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 3041 × 0308 × 0020 × 0020 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [0.3]
 × 3041 × 002F ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 3041 × 0020 × 002F ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
-× 3041 × 0308 × 002F ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
-× 3041 × 0308 × 0020 × 002F ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
+× 3041 × 0308 × 002F ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] SOLIDUS (SY) ÷ [0.3]
+× 3041 × 0308 × 0020 × 002F ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] SOLIDUS (SY) ÷ [0.3]
 × 3041 × 2060 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 3041 × 0020 × 2060 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 3041 × 0308 × 2060 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
-× 3041 × 0308 × 0020 × 2060 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 3041 × 0308 × 2060 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 3041 × 0308 × 0020 × 2060 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [11.01] WORD JOINER (WJ) ÷ [0.3]
 × 3041 × 200B ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 3041 × 0020 × 200B ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 3041 × 0308 × 200B ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
-× 3041 × 0308 × 0020 × 200B ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 3041 × 0308 × 200B ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
+× 3041 × 0308 × 0020 × 200B ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [0.3]
 × 3041 ÷ 1F1E6 ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 × 3041 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 3041 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 3041 × 0308 ÷ 1F1E6 ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 1F1E6 ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+× 3041 ÷ 261D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 3041 × 0020 ÷ 261D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 3041 × 0308 ÷ 261D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 261D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 3041 ÷ 1F3FB ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 3041 × 0020 ÷ 1F3FB ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 3041 × 0308 ÷ 1F3FB ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 1F3FB ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 3041 × 0001 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 3041 × 0020 ÷ 0001 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 3041 × 0308 × 0001 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 0001 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <START OF HEADING> (CM1_CM) ÷ [0.3]
+× 3041 × 200D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 3041 × 0020 ÷ 200D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 3041 × 0308 × 200D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 200D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) ÷ [0.3]
 × 3041 ÷ 00A7 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 3041 × 0020 ÷ 00A7 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 3041 × 0308 ÷ 00A7 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 3041 × 0308 ÷ 00A7 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] SECTION SIGN (AI_AL) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 00A7 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] SECTION SIGN (AI_AL) ÷ [0.3]
 × 3041 ÷ 50005 ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 3041 × 0020 ÷ 50005 ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 3041 × 0308 ÷ 50005 ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 3041 × 0308 ÷ 50005 ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] <reserved-50005> (XX_AL) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 50005 ÷    #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] <reserved-50005> (XX_AL) ÷ [0.3]
 × 3041 ÷ 0E01 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 3041 × 0020 ÷ 0E01 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 3041 × 0308 ÷ 0E01 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 3041 × 0308 ÷ 0E01 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [999.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 0E01 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
 × 3041 × 3041 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
 × 3041 × 0020 ÷ 3041 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 3041 × 0308 × 3041 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
-× 3041 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 3041 × 0308 × 3041 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [21.03] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 3041 × 0308 × 0020 ÷ 3041 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 000D × 000A ÷ 0061 × 000A ÷ 0308 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) × [5.01] <LINE FEED (LF)> (LF) ÷ [5.03] LATIN SMALL LETTER A (AL) × [6.0] <LINE FEED (LF)> (LF) ÷ [5.03] COMBINING DIAERESIS (CM1_CM) ÷ [0.3]
+× 0061 × 0308 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) ÷ [0.3]
+× 0020 ÷ 200D × 0646 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [28.0] ARABIC LETTER NOON (AL) ÷ [0.3]
+× 0646 × 200D × 0020 ÷     #  × [0.3] ARABIC LETTER NOON (AL) × [9.0] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 000B ÷ 3041 ÷     #  × [0.3] <LINE TABULATION> (BK) ÷ [4.0] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 000D ÷ 3041 ÷     #  × [0.3] <CARRIAGE RETURN (CR)> (CR) ÷ [5.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 0085 ÷ 3041 ÷     #  × [0.3] <NEXT LINE (NEL)> (NL) ÷ [5.04] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 200D × 261D ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [8.1] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 3041 × 2060 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [11.01] WORD JOINER (WJ) ÷ [0.3]
+× 2060 × 3041 ÷     #  × [0.3] WORD JOINER (WJ) × [11.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 3041 × 0308 × 00A0 ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [9.0] COMBINING DIAERESIS (CM1_CM) × [12.2] NO-BREAK SPACE (GL) ÷ [0.3]
+× 200D × 00A0 ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [12.3] NO-BREAK SPACE (GL) ÷ [0.3]
+× 200D × 002F ÷     #  × [0.3] ZERO WIDTH JOINER (ZWJ_O_ZWJ_CM) × [13.04] SOLIDUS (SY) ÷ [0.3]
+× 2014 × 2014 ÷     #  × [0.3] EM DASH (B2) × [17.0] EM DASH (B2) ÷ [0.3]
+× 3041 ÷ FFFC ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [20.01] OBJECT REPLACEMENT CHARACTER (CB) ÷ [0.3]
+× FFFC ÷ 3041 ÷     #  × [0.3] OBJECT REPLACEMENT CHARACTER (CB) ÷ [20.02] HIRAGANA LETTER SMALL A (CJ_NS) ÷ [0.3]
+× 3041 × 002D ÷     #  × [0.3] HIRAGANA LETTER SMALL A (CJ_NS) × [21.02] HYPHEN-MINUS (HY) ÷ [0.3]
+× 0E01 × 2024 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [22.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 0021 × 2024 ÷     #  × [0.3] EXCLAMATION MARK (EX) × [22.02] ONE DOT LEADER (IN) ÷ [0.3]
+× 2024 × 2024 ÷     #  × [0.3] ONE DOT LEADER (IN) × [22.04] ONE DOT LEADER (IN) ÷ [0.3]
+× 0030 × 2024 ÷     #  × [0.3] DIGIT ZERO (NU) × [22.05] ONE DOT LEADER (IN) ÷ [0.3]
+× 261D × 0025 ÷     #  × [0.3] WHITE UP POINTING INDEX (EB) × [23.13] PERCENT SIGN (PO) ÷ [0.3]
+× 0E01 × 0030 ÷     #  × [0.3] THAI CHARACTER KO KAI (SA_AL) × [23.02] DIGIT ZERO (NU) ÷ [0.3]
+× 0024 × 261D ÷     #  × [0.3] DOLLAR SIGN (PR) × [23.12] WHITE UP POINTING INDEX (EB) ÷ [0.3]
+× 0024 × 0E01 ÷     #  × [0.3] DOLLAR SIGN (PR) × [24.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 0025 × 0E01 ÷     #  × [0.3] PERCENT SIGN (PO) × [24.02] THAI CHARACTER KO KAI (SA_AL) ÷ [0.3]
+× 1100 × 1160 ÷     #  × [0.3] HANGUL CHOSEONG KIYEOK (JL) × [26.01] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 1160 × 1160 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [26.02] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 11A8 × 11A8 ÷     #  × [0.3] HANGUL JONGSEONG KIYEOK (JT) × [26.03] HANGUL JONGSEONG KIYEOK (JT) ÷ [0.3]
+× 1160 × 2024 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [27.01] ONE DOT LEADER (IN) ÷ [0.3]
+× 1160 × 0025 ÷     #  × [0.3] HANGUL JUNGSEONG FILLER (JV) × [27.02] PERCENT SIGN (PO) ÷ [0.3]
+× 0024 × 1160 ÷     #  × [0.3] DOLLAR SIGN (PR) × [27.03] HANGUL JUNGSEONG FILLER (JV) ÷ [0.3]
+× 261D × 1F3FB ÷    #  × [0.3] WHITE UP POINTING INDEX (EB) × [30.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (EM) ÷ [0.3]
+× 0066 × 0069 × 006E × 0061 × 006C ÷     #  × [0.3] LATIN SMALL LETTER F (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER L (AL) ÷ [0.3]
 × 0063 × 0061 × 006E × 0027 × 0074 ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [19.01] APOSTROPHE (QU) × [19.02] LATIN SMALL LETTER T (AL) ÷ [0.3]
 × 0063 × 0061 × 006E × 2019 × 0074 ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [19.01] RIGHT SINGLE QUOTATION MARK (QU) × [19.02] LATIN SMALL LETTER T (AL) ÷ [0.3]
 × 0027 × 0063 × 0061 × 006E × 0027 × 0020 ÷ 006E × 006F × 0074 ÷     #  × [0.3] APOSTROPHE (QU) × [19.02] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [19.01] APOSTROPHE (QU) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER T (AL) ÷ [0.3]
 × 4E00 × 002E ÷ 4E00 × 002E ÷     #  × [0.3] CJK UNIFIED IDEOGRAPH-4E00 (ID) × [13.02] FULL STOP (IS) ÷ [999.0] CJK UNIFIED IDEOGRAPH-4E00 (ID) × [13.02] FULL STOP (IS) ÷ [0.3]
 × 0061 × 0020 × 0020 ÷ 0062 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER B (AL) ÷ [0.3]
 × 0061 × 0020 × 0020 × 200B ÷ 0062 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) × [7.01] SPACE (SP) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [8.0] LATIN SMALL LETTER B (AL) ÷ [0.3]
-× 0061 × 0020 ÷ 0308 × 0062 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [28.0] LATIN SMALL LETTER B (AL) ÷ [0.3]
-× 0031 × 0308 × 0062 × 0028 × 0061 × 0029 × 002D ÷ 0028 × 0062 × 0029 ÷     #  × [0.3] DIGIT ONE (NU) × [9.0] COMBINING DIAERESIS (CM) × [23.03] LATIN SMALL LETTER B (AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER A (AL) × [13.02] RIGHT PARENTHESIS (CP) × [21.02] HYPHEN-MINUS (HY) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER B (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0061 × 0020 ÷ 0308 × 0062 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [7.01] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [28.0] LATIN SMALL LETTER B (AL) ÷ [0.3]
+× 0031 × 0308 × 0062 × 0028 × 0061 × 0029 × 002D ÷ 0028 × 0062 × 0029 ÷     #  × [0.3] DIGIT ONE (NU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [23.03] LATIN SMALL LETTER B (AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER A (AL) × [13.02] RIGHT PARENTHESIS (CP) × [21.02] HYPHEN-MINUS (HY) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER B (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0067 × 0069 × 0076 × 0065 × 0020 ÷ 0062 × 006F × 006F × 006B × 0028 × 0073 × 0029 × 002E ÷     #  × [0.3] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER V (AL) × [28.0] LATIN SMALL LETTER E (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER K (AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] RIGHT PARENTHESIS (CP) × [13.02] FULL STOP (IS) ÷ [0.3]
 × 307E ÷ 0028 × 3059 × 0029 ÷     #  × [0.3] HIRAGANA LETTER MA (ID) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] HIRAGANA LETTER SU (ID) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0066 × 0069 × 006E × 0064 × 0020 × 002E × 0063 × 006F × 006D ÷     #  × [0.3] LATIN SMALL LETTER F (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER D (AL) × [7.01] SPACE (SP) × [13.02] FULL STOP (IS) × [29.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER M (AL) ÷ [0.3]
 × 0063 × 006F × 0064 × 0065 × 0028 × 0073 × 002E × 0029 ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] FULL STOP (IS) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0063 × 006F × 0064 × 0065 × 0028 × 0073 × 0029 × 0021 ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] RIGHT PARENTHESIS (CP) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
 × 0063 × 006F × 0064 × 0065 × 0028 × 0073 × 0021 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER S (AL) × [13.01] EXCLAMATION MARK (EX) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
\97 0063 Ã\97 006F Ã\97 0064 Ã\97 0065 Ã· 005C Ã· 0028 Ã\97 0073 Ã· 005C Ã\97 0029 Ã·     #  Ã\97 [0.3] LATIN SMALL LETTER C (AL) Ã\97 [28.0] LATIN SMALL LETTER O (AL) Ã\97 [28.0] LATIN SMALL LETTER D (AL) Ã\97 [28.0] LATIN SMALL LETTER E (AL) Ã· [999.0] REVERSE SOLIDUS (PR) Ã· [999.0] LEFT PARENTHESIS (OP) Ã\97 [14.0] LATIN SMALL LETTER S (AL) Ã· [999.0] REVERSE SOLIDUS (PR) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
\97 0063 Ã\97 006F Ã\97 0064 Ã\97 0065 Ã\97 005C Ã· 0028 Ã\97 0073 Ã\97 005C Ã\97 0029 Ã·     #  Ã\97 [0.3] LATIN SMALL LETTER C (AL) Ã\97 [28.0] LATIN SMALL LETTER O (AL) Ã\97 [28.0] LATIN SMALL LETTER D (AL) Ã\97 [28.0] LATIN SMALL LETTER E (AL) Ã\97 [24.03] REVERSE SOLIDUS (PR) Ã· [999.0] LEFT PARENTHESIS (OP) Ã\97 [14.0] LATIN SMALL LETTER S (AL) Ã\97 [24.03] REVERSE SOLIDUS (PR) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0063 × 006F × 0064 × 0065 × 0028 × 0020 × 0073 × 0020 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [30.01] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0063 × 006F × 0064 × 0065 × 007B × 0073 × 007D ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [30.01] LEFT CURLY BRACKET (OP) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0063 × 006F × 0064 × 0065 × 007B × 0073 × 007D × 002E ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [30.01] LEFT CURLY BRACKET (OP) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] RIGHT CURLY BRACKET (CL) × [13.02] FULL STOP (IS) ÷ [0.3]
 × 0063 × 006F × 0064 × 0065 × 007B × 0073 × 007D × 0021 ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [30.01] LEFT CURLY BRACKET (OP) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] RIGHT CURLY BRACKET (CL) × [13.01] EXCLAMATION MARK (EX) ÷ [0.3]
\97 0063 Ã\97 006F Ã\97 0064 Ã\97 0065 Ã· 005C Ã· 007B Ã\97 0073 Ã· 005C Ã\97 007D Ã·     #  Ã\97 [0.3] LATIN SMALL LETTER C (AL) Ã\97 [28.0] LATIN SMALL LETTER O (AL) Ã\97 [28.0] LATIN SMALL LETTER D (AL) Ã\97 [28.0] LATIN SMALL LETTER E (AL) Ã· [999.0] REVERSE SOLIDUS (PR) Ã· [999.0] LEFT CURLY BRACKET (OP) Ã\97 [14.0] LATIN SMALL LETTER S (AL) Ã· [999.0] REVERSE SOLIDUS (PR) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
\97 0063 Ã\97 006F Ã\97 0064 Ã\97 0065 Ã\97 005C Ã· 007B Ã\97 0073 Ã\97 005C Ã\97 007D Ã·     #  Ã\97 [0.3] LATIN SMALL LETTER C (AL) Ã\97 [28.0] LATIN SMALL LETTER O (AL) Ã\97 [28.0] LATIN SMALL LETTER D (AL) Ã\97 [28.0] LATIN SMALL LETTER E (AL) Ã\97 [24.03] REVERSE SOLIDUS (PR) Ã· [999.0] LEFT CURLY BRACKET (OP) Ã\97 [14.0] LATIN SMALL LETTER S (AL) Ã\97 [24.03] REVERSE SOLIDUS (PR) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0063 × 006F × 0064 × 0065 × 007B × 0020 × 0073 × 0020 × 007D ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER D (AL) × [28.0] LATIN SMALL LETTER E (AL) × [30.01] LEFT CURLY BRACKET (OP) × [7.01] SPACE (SP) × [14.0] LATIN SMALL LETTER S (AL) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
 × 0063 × 006F × 0064 × 0028 × 0065 × 0029 ÷ 2026 ÷ 0028 × 0073 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER D (AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [999.0] HORIZONTAL ELLIPSIS (IN) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0028 × 0063 × 006F × 0064 × 0028 × 0065 × 0029 ÷ 2026 × 0029 × 0073 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER D (AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [999.0] HORIZONTAL ELLIPSIS (IN) × [13.02] RIGHT PARENTHESIS (CP) × [30.02] LATIN SMALL LETTER S (AL) ÷ [0.3]
 × 007B × 0063 × 006F × 006E × 007D × 002D ÷ 006C × 0061 × 006E × 0067 ÷     #  × [0.3] LEFT CURLY BRACKET (OP) × [14.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [13.02] RIGHT CURLY BRACKET (CL) × [21.02] HYPHEN-MINUS (HY) ÷ [999.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER G (AL) ÷ [0.3]
 × 007B × 0063 × 006F × 006E × 007D × 00AD ÷ 006C × 0061 × 006E × 0067 ÷     #  × [0.3] LEFT CURLY BRACKET (OP) × [14.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [13.02] RIGHT CURLY BRACKET (CL) × [21.01] SOFT HYPHEN (BA) ÷ [999.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER G (AL) ÷ [0.3]
 × 007B × 0063 × 006F × 006E × 007D × 2011 × 006C × 0061 × 006E × 0067 ÷     #  × [0.3] LEFT CURLY BRACKET (OP) × [14.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [13.02] RIGHT CURLY BRACKET (CL) × [12.1] NON-BREAKING HYPHEN (GL) × [12.0] LATIN SMALL LETTER L (AL) × [28.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER G (AL) ÷ [0.3]
-× 0063 × 0072 × 0065 × 0301 × 0028 × 0065 × 0301 × 0029 ÷ 0028 × 0065 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0063 × 0072 × 0065 × 0301 × 005B × 0065 × 0072 × 007C ÷ 0065 × 0301 × 0028 × 0065 × 0029 ÷ 0028 × 0073 × 0029 × 005D ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM) × [30.01] LEFT SQUARE BRACKET (OP) × [14.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [21.01] VERTICAL LINE (BA) ÷ [999.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] RIGHT PARENTHESIS (CP) × [13.02] RIGHT SQUARE BRACKET (CP) ÷ [0.3]
-× 0063 × 0072 × 0065 × 0301 × 007B × 0065 × 0072 × 007C ÷ 0065 × 0301 × 0028 × 0065 × 0029 ÷ 0028 × 0073 × 0029 × 007D ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM) × [30.01] LEFT CURLY BRACKET (OP) × [14.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [21.01] VERTICAL LINE (BA) ÷ [999.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] RIGHT PARENTHESIS (CP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 0028 × 0308 × 0029 ÷ 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 0028 × 00AB × 0308 × 00BB × 0029 ÷ 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.01] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [13.02] RIGHT PARENTHESIS (CP) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 0028 × 00AB × 0020 ÷ 0308 × 0020 ÷ 00BB × 0029 ÷ 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [13.02] RIGHT PARENTHESIS (CP) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 0020 × 0028 × 0020 × 0308 × 0020 × 0029 × 0020 ÷ 00BB × 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [7.01] SPACE (SP) × [15.0] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 202F × 0028 × 0020 × 0308 × 0020 × 0029 × 202F × 00BB × 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 007B × 0308 × 007D ÷ 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT CURLY BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 007B × 00AB × 0308 × 00BB × 007D ÷ 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT CURLY BRACKET (OP) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM) × [19.01] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 007B × 00AB × 0020 ÷ 0308 × 0020 ÷ 00BB × 007D ÷ 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT CURLY BRACKET (OP) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 0020 × 007B × 0020 × 0308 × 0020 × 007D × 0020 ÷ 00BB × 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [7.01] SPACE (SP) × [15.0] LEFT CURLY BRACKET (OP) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
-× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 202F × 007B × 0020 × 0308 × 0020 × 007D × 202F × 00BB × 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] LEFT CURLY BRACKET (OP) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0063 × 0072 × 0065 × 0301 × 0028 × 0065 × 0301 × 0029 ÷ 0028 × 0065 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0063 × 0072 × 0065 × 0301 × 005B × 0065 × 0072 × 007C ÷ 0065 × 0301 × 0028 × 0065 × 0029 ÷ 0028 × 0073 × 0029 × 005D ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM1_CM) × [30.01] LEFT SQUARE BRACKET (OP) × [14.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [21.01] VERTICAL LINE (BA) ÷ [999.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] RIGHT PARENTHESIS (CP) × [13.02] RIGHT SQUARE BRACKET (CP) ÷ [0.3]
+× 0063 × 0072 × 0065 × 0301 × 007B × 0065 × 0072 × 007C ÷ 0065 × 0301 × 0028 × 0065 × 0029 ÷ 0028 × 0073 × 0029 × 007D ÷     #  × [0.3] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM1_CM) × [30.01] LEFT CURLY BRACKET (OP) × [14.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [21.01] VERTICAL LINE (BA) ÷ [999.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING ACUTE ACCENT (CM1_CM) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER S (AL) × [13.02] RIGHT PARENTHESIS (CP) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 0028 × 0308 × 0029 ÷ 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT PARENTHESIS (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 0028 × 00AB × 0308 × 00BB × 0029 ÷ 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [13.02] RIGHT PARENTHESIS (CP) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 0028 × 00AB × 0020 ÷ 0308 × 0020 ÷ 00BB × 0029 ÷ 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [13.02] RIGHT PARENTHESIS (CP) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 0020 × 0028 × 0020 × 0308 × 0020 × 0029 × 0020 ÷ 00BB × 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [7.01] SPACE (SP) × [15.0] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 202F × 0028 × 0020 × 0308 × 0020 × 0029 × 202F × 00BB × 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] LEFT PARENTHESIS (OP) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT PARENTHESIS (CP) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 007B × 0308 × 007D ÷ 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT CURLY BRACKET (OP) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT CURLY BRACKET (CL) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 007B × 00AB × 0308 × 00BB × 007D ÷ 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT CURLY BRACKET (OP) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [9.0] COMBINING DIAERESIS (CM1_CM) × [19.01] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 007B × 00AB × 0020 ÷ 0308 × 0020 ÷ 00BB × 007D ÷ 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [30.01] LEFT CURLY BRACKET (OP) × [14.0] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [7.01] SPACE (SP) ÷ [18.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 0020 × 007B × 0020 × 0308 × 0020 × 007D × 0020 ÷ 00BB × 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [7.01] SPACE (SP) × [15.0] LEFT CURLY BRACKET (OP) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) × [7.01] SPACE (SP) ÷ [18.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
+× 0061 × 006D × 0062 × 0069 × 0067 × 0075 × 00AB × 202F × 007B × 0020 × 0308 × 0020 × 007D × 202F × 00BB × 0028 × 0065 × 0308 × 0029 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER M (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER G (AL) × [28.0] LATIN SMALL LETTER U (AL) × [19.01] LEFT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] LEFT CURLY BRACKET (OP) × [7.01] SPACE (SP) × [14.0] COMBINING DIAERESIS (CM1_CM) × [7.01] SPACE (SP) × [13.02] RIGHT CURLY BRACKET (CL) × [12.1] NARROW NO-BREAK SPACE (GL) × [12.0] RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (QU) × [15.0] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER E (AL) × [9.0] COMBINING DIAERESIS (CM1_CM) × [13.03] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0028 × 0063 × 007A × 0065 × 0072 × 0077 × 006F × 006E × 006F × 00AD ÷ 2011 × 0029 × 006E × 0069 × 0065 × 0062 × 0069 × 0065 × 0073 × 006B × 0061 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER Z (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER W (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER O (AL) × [21.01] SOFT HYPHEN (BA) ÷ [999.0] NON-BREAKING HYPHEN (GL) × [12.0] RIGHT PARENTHESIS (CP) × [30.02] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER K (AL) × [28.0] LATIN SMALL LETTER A (AL) ÷ [0.3]
 × 0028 × 0063 × 007A × 0065 × 0072 × 0077 × 006F × 006E × 006F × 00AD × 0029 × 2011 × 006E × 0069 × 0065 × 0062 × 0069 × 0065 × 0073 × 006B × 0061 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER Z (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER W (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER O (AL) × [21.01] SOFT HYPHEN (BA) × [13.02] RIGHT PARENTHESIS (CP) × [12.1] NON-BREAKING HYPHEN (GL) × [12.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER K (AL) × [28.0] LATIN SMALL LETTER A (AL) ÷ [0.3]
 × 0028 × 0063 × 007A × 0065 × 0072 × 0077 × 006F × 006E × 006F × 0029 × 00AD ÷ 2011 × 006E × 0069 × 0065 × 0062 × 0069 × 0065 × 0073 × 006B × 0061 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER C (AL) × [28.0] LATIN SMALL LETTER Z (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER R (AL) × [28.0] LATIN SMALL LETTER W (AL) × [28.0] LATIN SMALL LETTER O (AL) × [28.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER O (AL) × [13.02] RIGHT PARENTHESIS (CP) × [21.01] SOFT HYPHEN (BA) ÷ [999.0] NON-BREAKING HYPHEN (GL) × [12.0] LATIN SMALL LETTER N (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER B (AL) × [28.0] LATIN SMALL LETTER I (AL) × [28.0] LATIN SMALL LETTER E (AL) × [28.0] LATIN SMALL LETTER S (AL) × [28.0] LATIN SMALL LETTER K (AL) × [28.0] LATIN SMALL LETTER A (AL) ÷ [0.3]
 × 0028 × 30CB × 30E5 × 30FC × 0029 × 30FB ÷ 30E8 × 30FC ÷ 30AF ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] KATAKANA LETTER NI (ID) × [21.03] KATAKANA LETTER SMALL YU (CJ_NS) × [21.03] KATAKANA-HIRAGANA PROLONGED SOUND MARK (CJ_NS) × [13.02] RIGHT PARENTHESIS (CP) × [16.0] KATAKANA MIDDLE DOT (NS) ÷ [999.0] KATAKANA LETTER YO (ID) × [21.03] KATAKANA-HIRAGANA PROLONGED SOUND MARK (CJ_NS) ÷ [999.0] KATAKANA LETTER KU (ID) ÷ [0.3]
 × 007B × 30CB × 30E5 × 30FC × 30FB × 007D ÷ 30E8 × 30FC ÷ 30AF ÷     #  × [0.3] LEFT CURLY BRACKET (OP) × [14.0] KATAKANA LETTER NI (ID) × [21.03] KATAKANA LETTER SMALL YU (CJ_NS) × [21.03] KATAKANA-HIRAGANA PROLONGED SOUND MARK (CJ_NS) × [21.03] KATAKANA MIDDLE DOT (NS) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] KATAKANA LETTER YO (ID) × [21.03] KATAKANA-HIRAGANA PROLONGED SOUND MARK (CJ_NS) ÷ [999.0] KATAKANA LETTER KU (ID) ÷ [0.3]
 × 007B × 30CB × 30E5 × 30FC × 007D × 30FB ÷ 30E8 × 30FC ÷ 30AF ÷     #  × [0.3] LEFT CURLY BRACKET (OP) × [14.0] KATAKANA LETTER NI (ID) × [21.03] KATAKANA LETTER SMALL YU (CJ_NS) × [21.03] KATAKANA-HIRAGANA PROLONGED SOUND MARK (CJ_NS) × [13.02] RIGHT CURLY BRACKET (CL) × [16.0] KATAKANA MIDDLE DOT (NS) ÷ [999.0] KATAKANA LETTER YO (ID) × [21.03] KATAKANA-HIRAGANA PROLONGED SOUND MARK (CJ_NS) ÷ [999.0] KATAKANA LETTER KU (ID) ÷ [0.3]
-× 0028 × 1850 × 1846 × 1851 × 1846 ÷ 1806 × 0029 × 182A × 1822 × 1834 × 1822 × 182D × 180C ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] MONGOLIAN LETTER TODO TA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) × [28.0] MONGOLIAN LETTER TODO DA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) ÷ [999.0] MONGOLIAN TODO SOFT HYPHEN (BB) × [13.02] RIGHT PARENTHESIS (CP) × [30.02] MONGOLIAN LETTER BA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER CHA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER GA (AL) × [9.0] MONGOLIAN FREE VARIATION SELECTOR TWO (CM) ÷ [0.3]
-× 0028 × 1850 × 1846 × 1851 × 1846 × 0029 ÷ 1806 × 182A × 1822 × 1834 × 1822 × 182D × 180C ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] MONGOLIAN LETTER TODO TA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) × [28.0] MONGOLIAN LETTER TODO DA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [999.0] MONGOLIAN TODO SOFT HYPHEN (BB) × [21.04] MONGOLIAN LETTER BA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER CHA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER GA (AL) × [9.0] MONGOLIAN FREE VARIATION SELECTOR TWO (CM) ÷ [0.3]
-× 007B × 1850 × 1846 × 1851 × 1846 ÷ 1806 × 007D ÷ 182A × 1822 × 1834 × 1822 × 182D × 180C ÷     #  × [0.3] LEFT CURLY BRACKET (OP) × [14.0] MONGOLIAN LETTER TODO TA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) × [28.0] MONGOLIAN LETTER TODO DA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) ÷ [999.0] MONGOLIAN TODO SOFT HYPHEN (BB) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] MONGOLIAN LETTER BA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER CHA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER GA (AL) × [9.0] MONGOLIAN FREE VARIATION SELECTOR TWO (CM) ÷ [0.3]
-× 007B × 1850 × 1846 × 1851 × 1846 × 007D ÷ 1806 × 182A × 1822 × 1834 × 1822 × 182D × 180C ÷     #  × [0.3] LEFT CURLY BRACKET (OP) × [14.0] MONGOLIAN LETTER TODO TA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) × [28.0] MONGOLIAN LETTER TODO DA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] MONGOLIAN TODO SOFT HYPHEN (BB) × [21.04] MONGOLIAN LETTER BA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER CHA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER GA (AL) × [9.0] MONGOLIAN FREE VARIATION SELECTOR TWO (CM) ÷ [0.3]
+× 0028 × 1850 × 1846 × 1851 × 1846 ÷ 1806 × 0029 × 182A × 1822 × 1834 × 1822 × 182D × 180C ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] MONGOLIAN LETTER TODO TA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) × [28.0] MONGOLIAN LETTER TODO DA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) ÷ [999.0] MONGOLIAN TODO SOFT HYPHEN (BB) × [13.02] RIGHT PARENTHESIS (CP) × [30.02] MONGOLIAN LETTER BA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER CHA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER GA (AL) × [9.0] MONGOLIAN FREE VARIATION SELECTOR TWO (CM1_CM) ÷ [0.3]
+× 0028 × 1850 × 1846 × 1851 × 1846 × 0029 ÷ 1806 × 182A × 1822 × 1834 × 1822 × 182D × 180C ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] MONGOLIAN LETTER TODO TA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) × [28.0] MONGOLIAN LETTER TODO DA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) × [13.02] RIGHT PARENTHESIS (CP) ÷ [999.0] MONGOLIAN TODO SOFT HYPHEN (BB) × [21.04] MONGOLIAN LETTER BA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER CHA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER GA (AL) × [9.0] MONGOLIAN FREE VARIATION SELECTOR TWO (CM1_CM) ÷ [0.3]
+× 007B × 1850 × 1846 × 1851 × 1846 ÷ 1806 × 007D ÷ 182A × 1822 × 1834 × 1822 × 182D × 180C ÷     #  × [0.3] LEFT CURLY BRACKET (OP) × [14.0] MONGOLIAN LETTER TODO TA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) × [28.0] MONGOLIAN LETTER TODO DA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) ÷ [999.0] MONGOLIAN TODO SOFT HYPHEN (BB) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] MONGOLIAN LETTER BA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER CHA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER GA (AL) × [9.0] MONGOLIAN FREE VARIATION SELECTOR TWO (CM1_CM) ÷ [0.3]
+× 007B × 1850 × 1846 × 1851 × 1846 × 007D ÷ 1806 × 182A × 1822 × 1834 × 1822 × 182D × 180C ÷     #  × [0.3] LEFT CURLY BRACKET (OP) × [14.0] MONGOLIAN LETTER TODO TA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) × [28.0] MONGOLIAN LETTER TODO DA (AL) × [28.0] MONGOLIAN LETTER TODO O (AL) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] MONGOLIAN TODO SOFT HYPHEN (BB) × [21.04] MONGOLIAN LETTER BA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER CHA (AL) × [28.0] MONGOLIAN LETTER I (AL) × [28.0] MONGOLIAN LETTER GA (AL) × [9.0] MONGOLIAN FREE VARIATION SELECTOR TWO (CM1_CM) ÷ [0.3]
 × 0028 × 0068 × 0074 × 0074 × 0070 × 003A × 002F × 002F × 0029 × 0078 × 006E × 002D × 002D ÷ 0061 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER P (AL) × [13.02] COLON (IS) × [13.02] SOLIDUS (SY) × [13.02] SOLIDUS (SY) × [13.02] RIGHT PARENTHESIS (CP) × [30.02] LATIN SMALL LETTER X (AL) × [28.0] LATIN SMALL LETTER N (AL) × [21.02] HYPHEN-MINUS (HY) × [21.02] HYPHEN-MINUS (HY) ÷ [999.0] LATIN SMALL LETTER A (AL) ÷ [0.3]
 × 007B × 0068 × 0074 × 0074 × 0070 × 003A × 002F × 002F × 007D ÷ 0078 × 006E × 002D × 002D ÷ 0061 ÷     #  × [0.3] LEFT CURLY BRACKET (OP) × [14.0] LATIN SMALL LETTER H (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER T (AL) × [28.0] LATIN SMALL LETTER P (AL) × [13.02] COLON (IS) × [13.02] SOLIDUS (SY) × [13.02] SOLIDUS (SY) × [13.02] RIGHT CURLY BRACKET (CL) ÷ [999.0] LATIN SMALL LETTER X (AL) × [28.0] LATIN SMALL LETTER N (AL) × [21.02] HYPHEN-MINUS (HY) × [21.02] HYPHEN-MINUS (HY) ÷ [999.0] LATIN SMALL LETTER A (AL) ÷ [0.3]
 × 0028 × 0030 × 002C × 0031 × 0029 × 002B × 0028 × 0032 × 002C × 0033 × 0029 × 2295 × 0028 × 2212 × 0034 × 002C × 0035 × 0029 × 2296 × 0028 × 0036 × 002C × 0037 × 0029 ÷     #  × [0.3] LEFT PARENTHESIS (OP) × [14.0] DIGIT ZERO (NU) × [25.03] COMMA (IS) × [25.04] DIGIT ONE (NU) × [25.04] RIGHT PARENTHESIS (CP) × [25.05] PLUS SIGN (PR) × [25.01] LEFT PARENTHESIS (OP) × [14.0] DIGIT TWO (NU) × [25.03] COMMA (IS) × [25.04] DIGIT THREE (NU) × [25.04] RIGHT PARENTHESIS (CP) × [30.02] CIRCLED PLUS (AI_AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] MINUS SIGN (PR) × [25.01] DIGIT FOUR (NU) × [25.03] COMMA (IS) × [25.04] DIGIT FIVE (NU) × [25.04] RIGHT PARENTHESIS (CP) × [30.02] CIRCLED MINUS (AL) × [30.01] LEFT PARENTHESIS (OP) × [14.0] DIGIT SIX (NU) × [25.03] COMMA (IS) × [25.04] DIGIT SEVEN (NU) × [25.04] RIGHT PARENTHESIS (CP) ÷ [0.3]
 × 0061 × 0062 × 0020 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER B (AL) × [7.01] SPACE (SP) ÷ [0.3]
 × 0061 × 0062 × 0020 ÷ 0063 ÷     #  × [0.3] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER B (AL) × [7.01] SPACE (SP) ÷ [18.0] LATIN SMALL LETTER C (AL) ÷ [0.3]
 × 0061 ÷ 307E ÷     #  × [0.3] LATIN SMALL LETTER A (AL) ÷ [999.0] HIRAGANA LETTER MA (ID) ÷ [0.3]
-× 0939 × 093F × 0928 × 094D × 0926 × 0940 × 0020 ÷     #  × [0.3] DEVANAGARI LETTER HA (AL) × [9.0] DEVANAGARI VOWEL SIGN I (CM) × [28.0] DEVANAGARI LETTER NA (AL) × [9.0] DEVANAGARI SIGN VIRAMA (CM) × [28.0] DEVANAGARI LETTER DA (AL) × [9.0] DEVANAGARI VOWEL SIGN II (CM) × [7.01] SPACE (SP) ÷ [0.3]
-× 092F × 0938 × 0917 × 0941 × 091A × 093F × 0924 × 0940 × 092F × 0938 × 093E × 0020 ÷     #  × [0.3] DEVANAGARI LETTER YA (AL) × [28.0] DEVANAGARI LETTER SA (AL) × [28.0] DEVANAGARI LETTER GA (AL) × [9.0] DEVANAGARI VOWEL SIGN U (CM) × [28.0] DEVANAGARI LETTER CA (AL) × [9.0] DEVANAGARI VOWEL SIGN I (CM) × [28.0] DEVANAGARI LETTER TA (AL) × [9.0] DEVANAGARI VOWEL SIGN II (CM) × [28.0] DEVANAGARI LETTER YA (AL) × [28.0] DEVANAGARI LETTER SA (AL) × [9.0] DEVANAGARI VOWEL SIGN AA (CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 0939 × 093F × 0928 × 094D × 0926 × 0940 × 0020 ÷     #  × [0.3] DEVANAGARI LETTER HA (AL) × [9.0] DEVANAGARI VOWEL SIGN I (CM1_CM) × [28.0] DEVANAGARI LETTER NA (AL) × [9.0] DEVANAGARI SIGN VIRAMA (CM1_CM) × [28.0] DEVANAGARI LETTER DA (AL) × [9.0] DEVANAGARI VOWEL SIGN II (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
+× 092F × 0938 × 0917 × 0941 × 091A × 093F × 0924 × 0940 × 092F × 0938 × 093E × 0020 ÷     #  × [0.3] DEVANAGARI LETTER YA (AL) × [28.0] DEVANAGARI LETTER SA (AL) × [28.0] DEVANAGARI LETTER GA (AL) × [9.0] DEVANAGARI VOWEL SIGN U (CM1_CM) × [28.0] DEVANAGARI LETTER CA (AL) × [9.0] DEVANAGARI VOWEL SIGN I (CM1_CM) × [28.0] DEVANAGARI LETTER TA (AL) × [9.0] DEVANAGARI VOWEL SIGN II (CM1_CM) × [28.0] DEVANAGARI LETTER YA (AL) × [28.0] DEVANAGARI LETTER SA (AL) × [9.0] DEVANAGARI VOWEL SIGN AA (CM1_CM) × [7.01] SPACE (SP) ÷ [0.3]
 × 5370 ÷ 672C ÷     #  × [0.3] CJK UNIFIED IDEOGRAPH-5370 (ID) ÷ [999.0] CJK UNIFIED IDEOGRAPH-672C (ID) ÷ [0.3]
 × 8AAD ÷ 3080 ÷     #  × [0.3] CJK UNIFIED IDEOGRAPH-8AAD (ID) ÷ [999.0] HIRAGANA LETTER MU (ID) ÷ [0.3]
 × 5165 ÷ 529B ÷ 3057 ÷ 30A8 ÷     #  × [0.3] CJK UNIFIED IDEOGRAPH-5165 (ID) ÷ [999.0] CJK UNIFIED IDEOGRAPH-529B (ID) ÷ [999.0] HIRAGANA LETTER SI (ID) ÷ [999.0] KATAKANA LETTER E (ID) ÷ [0.3]
 × 3057 × 3001 ÷ 0061 × 0062 ÷ 3068 ÷     #  × [0.3] HIRAGANA LETTER SI (ID) × [13.02] IDEOGRAPHIC COMMA (CL) ÷ [999.0] LATIN SMALL LETTER A (AL) × [28.0] LATIN SMALL LETTER B (AL) ÷ [999.0] HIRAGANA LETTER TO (ID) ÷ [0.3]
 × 0061 ÷ 1F1E6 ÷ 0062 ÷    #  × [0.3] LATIN SMALL LETTER A (AL) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LATIN SMALL LETTER B (AL) ÷ [0.3]
 × 1F1F7 × 1F1FA ÷   #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER R (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER U (RI) ÷ [0.3]
\97 1F1F7 Ã\97 1F1FA Ã\97 1F1F8 Ã·  #  Ã\97 [0.3] REGIONAL INDICATOR SYMBOL LETTER R (RI) Ã\97 [30.11] REGIONAL INDICATOR SYMBOL LETTER U (RI) Ã\97 [30.11] REGIONAL INDICATOR SYMBOL LETTER S (RI) ÷ [0.3]
\97 1F1F7 Ã\97 1F1FA Ã\97 1F1F8 Ã\97 1F1EA Ã· #  Ã\97 [0.3] REGIONAL INDICATOR SYMBOL LETTER R (RI) Ã\97 [30.11] REGIONAL INDICATOR SYMBOL LETTER U (RI) Ã\97 [30.11] REGIONAL INDICATOR SYMBOL LETTER S (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER E (RI) ÷ [0.3]
-× 1F1F7 × 1F1FA × 200B ÷ 1F1F8 × 1F1EA ÷ #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER R (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER U (RI) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [8.0] REGIONAL INDICATOR SYMBOL LETTER S (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER E (RI) ÷ [0.3]
\97 1F1F7 Ã\97 1F1FA Ã· 1F1F8 Ã·  #  Ã\97 [0.3] REGIONAL INDICATOR SYMBOL LETTER R (RI) Ã\97 [30.11] REGIONAL INDICATOR SYMBOL LETTER U (RI) Ã· [30.13] REGIONAL INDICATOR SYMBOL LETTER S (RI) ÷ [0.3]
\97 1F1F7 Ã\97 1F1FA Ã· 1F1F8 Ã\97 1F1EA Ã· #  Ã\97 [0.3] REGIONAL INDICATOR SYMBOL LETTER R (RI) Ã\97 [30.11] REGIONAL INDICATOR SYMBOL LETTER U (RI) Ã· [30.13] REGIONAL INDICATOR SYMBOL LETTER S (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER E (RI) ÷ [0.3]
+× 1F1F7 × 1F1FA × 200B ÷ 1F1F8 × 1F1EA ÷ #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER R (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER U (RI) × [7.02] ZERO WIDTH SPACE (ZW) ÷ [8.0] REGIONAL INDICATOR SYMBOL LETTER S (RI) × [30.12] REGIONAL INDICATOR SYMBOL LETTER E (RI) ÷ [0.3]
 × 05D0 × 002D × 05D0 ÷     #  × [0.3] HEBREW LETTER ALEF (HL) × [21.02] HYPHEN-MINUS (HY) × [21.1] HEBREW LETTER ALEF (HL) ÷ [0.3]
-× 1F1E6 × 1F1E7 × 1F1E8 ÷  #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [0.3]
-× 1F1E6 × 200D × 1F1E7 × 1F1E8 ÷  #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [9.0] ZERO WIDTH JOINER (CM) × [30.11] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [0.3]
-× 1F1E6 × 1F1E7 × 200D × 1F1E8 ÷  #  × [0.3] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [30.11] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [9.0] ZERO WIDTH JOINER (CM) × [30.11] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [0.3]
-× 0020 ÷ 200D × 0646 ÷     #  × [0.3] SPACE (SP) ÷ [18.0] ZERO WIDTH JOINER (CM) × [28.0] ARABIC LETTER NOON (AL) ÷ [0.3]
-× 0646 × 200D × 0020 ÷     #  × [0.3] ARABIC LETTER NOON (AL) × [9.0] ZERO WIDTH JOINER (CM) × [7.01] SPACE (SP) ÷ [0.3]
 #
-# Lines: 6311
+# Lines: 7312
 #
 # EOF
index 279e6db..c7b6465 100644 (file)
@@ -1,10 +1,11 @@
-# SentenceBreakTest-8.0.0.txt
-# Date: 2015-04-30, 09:40:15 GMT [MD]
+# SentenceBreakTest-9.0.0.txt
+# Date: 2016-06-02, 18:28:30 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Default Sentence Break Test
 #
 #
 # These samples may be extended or changed in the future.
 #
-÷ 0001 × 0001 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0001 × 0308 × 0001 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0001 × 000D ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0001 × 0308 × 000D ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0001 × 000A ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0001 × 0308 × 000A ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0001 × 0085 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0001 × 0308 × 0085 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0001 × 0009 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0001 × 0308 × 0009 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0001 × 0061 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0001 × 0308 × 0061 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0001 × 0041 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0001 × 0308 × 0041 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0001 × 01BB ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0001 × 0308 × 01BB ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0001 × 0030 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0001 × 0308 × 0030 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0001 × 002E ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0001 × 0308 × 002E ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0001 × 0021 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0001 × 0308 × 0021 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0001 × 0022 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0001 × 0308 × 0022 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0001 × 002C ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [12.0] COMMA (SContinue) ÷ [0.3]
-÷ 0001 × 0308 × 002C ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
+÷ 0001 × 0001 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0001 × 0308 × 0001 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0001 × 000D ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0001 × 0308 × 000D ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0001 × 000A ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0001 × 0308 × 000A ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0001 × 0085 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0001 × 0308 × 0085 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0001 × 0009 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0001 × 0308 × 0009 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0001 × 0061 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0001 × 0308 × 0061 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0001 × 0041 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0001 × 0308 × 0041 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0001 × 01BB ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0001 × 0308 × 01BB ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0001 × 0030 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0001 × 0308 × 0030 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0001 × 002E ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0001 × 0308 × 002E ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0001 × 0021 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0001 × 0308 × 0021 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0001 × 0022 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0001 × 0308 × 0022 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0001 × 002C ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [998.0] COMMA (SContinue) ÷ [0.3]
+÷ 0001 × 0308 × 002C ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
 ÷ 0001 × 00AD ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0001 × 0308 × 00AD ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0001 × 0300 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0001 × 0308 × 0300 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 000D ÷ 0001 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 000D ÷ 0308 × 0001 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 000D ÷ 0308 × 0001 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
 ÷ 000D ÷ 000D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 000D ÷ 0308 × 000D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 000D ÷ 0308 × 000D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 ÷ 000D × 000A ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 000D ÷ 0308 × 000A ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 000D ÷ 0308 × 000A ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 ÷ 000D ÷ 0085 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 000D ÷ 0308 × 0085 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 000D ÷ 0308 × 0085 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
 ÷ 000D ÷ 0009 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 000D ÷ 0308 × 0009 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 000D ÷ 0308 × 0009 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
 ÷ 000D ÷ 0061 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 000D ÷ 0308 × 0061 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 000D ÷ 0308 × 0061 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
 ÷ 000D ÷ 0041 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 000D ÷ 0308 × 0041 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 000D ÷ 0308 × 0041 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
 ÷ 000D ÷ 01BB ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 000D ÷ 0308 × 01BB ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 000D ÷ 0308 × 01BB ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
 ÷ 000D ÷ 0030 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 000D ÷ 0308 × 0030 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 000D ÷ 0308 × 0030 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 000D ÷ 002E ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 000D ÷ 0308 × 002E ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 000D ÷ 0308 × 002E ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
 ÷ 000D ÷ 0021 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 000D ÷ 0308 × 0021 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 000D ÷ 0308 × 0021 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
 ÷ 000D ÷ 0022 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 000D ÷ 0308 × 0022 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 000D ÷ 0308 × 0022 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
 ÷ 000D ÷ 002C ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMMA (SContinue) ÷ [0.3]
-÷ 000D ÷ 0308 × 002C ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
+÷ 000D ÷ 0308 × 002C ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
 ÷ 000D ÷ 00AD ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000D ÷ 0308 × 00AD ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000D ÷ 0300 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 000D ÷ 0308 × 0300 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 000A ÷ 0001 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 000A ÷ 0308 × 0001 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 000A ÷ 0308 × 0001 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
 ÷ 000A ÷ 000D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 000A ÷ 0308 × 000D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 000A ÷ 0308 × 000D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 ÷ 000A ÷ 000A ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 000A ÷ 0308 × 000A ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 000A ÷ 0308 × 000A ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 ÷ 000A ÷ 0085 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 000A ÷ 0308 × 0085 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 000A ÷ 0308 × 0085 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
 ÷ 000A ÷ 0009 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 000A ÷ 0308 × 0009 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 000A ÷ 0308 × 0009 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
 ÷ 000A ÷ 0061 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 000A ÷ 0308 × 0061 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 000A ÷ 0308 × 0061 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
 ÷ 000A ÷ 0041 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 000A ÷ 0308 × 0041 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 000A ÷ 0308 × 0041 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
 ÷ 000A ÷ 01BB ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 000A ÷ 0308 × 01BB ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 000A ÷ 0308 × 01BB ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
 ÷ 000A ÷ 0030 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 000A ÷ 0308 × 0030 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 000A ÷ 0308 × 0030 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 000A ÷ 002E ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 000A ÷ 0308 × 002E ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 000A ÷ 0308 × 002E ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
 ÷ 000A ÷ 0021 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 000A ÷ 0308 × 0021 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 000A ÷ 0308 × 0021 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
 ÷ 000A ÷ 0022 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 000A ÷ 0308 × 0022 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 000A ÷ 0308 × 0022 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
 ÷ 000A ÷ 002C ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMMA (SContinue) ÷ [0.3]
-÷ 000A ÷ 0308 × 002C ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
+÷ 000A ÷ 0308 × 002C ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
 ÷ 000A ÷ 00AD ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000A ÷ 0308 × 00AD ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000A ÷ 0300 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 000A ÷ 0308 × 0300 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0085 ÷ 0001 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0085 ÷ 0308 × 0001 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0085 ÷ 0308 × 0001 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
 ÷ 0085 ÷ 000D ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0085 ÷ 0308 × 000D ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0085 ÷ 0308 × 000D ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 ÷ 0085 ÷ 000A ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0085 ÷ 0308 × 000A ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0085 ÷ 0308 × 000A ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
 ÷ 0085 ÷ 0085 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0085 ÷ 0308 × 0085 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0085 ÷ 0308 × 0085 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
 ÷ 0085 ÷ 0009 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0085 ÷ 0308 × 0009 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0085 ÷ 0308 × 0009 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
 ÷ 0085 ÷ 0061 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0085 ÷ 0308 × 0061 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0085 ÷ 0308 × 0061 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
 ÷ 0085 ÷ 0041 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0085 ÷ 0308 × 0041 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0085 ÷ 0308 × 0041 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
 ÷ 0085 ÷ 01BB ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0085 ÷ 0308 × 01BB ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0085 ÷ 0308 × 01BB ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
 ÷ 0085 ÷ 0030 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0085 ÷ 0308 × 0030 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0085 ÷ 0308 × 0030 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0085 ÷ 002E ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0085 ÷ 0308 × 002E ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0085 ÷ 0308 × 002E ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
 ÷ 0085 ÷ 0021 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0085 ÷ 0308 × 0021 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0085 ÷ 0308 × 0021 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
 ÷ 0085 ÷ 0022 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0085 ÷ 0308 × 0022 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0085 ÷ 0308 × 0022 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
 ÷ 0085 ÷ 002C ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMMA (SContinue) ÷ [0.3]
-÷ 0085 ÷ 0308 × 002C ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
+÷ 0085 ÷ 0308 × 002C ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
 ÷ 0085 ÷ 00AD ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0085 ÷ 0308 × 00AD ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0085 ÷ 0300 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0085 ÷ 0308 × 0300 ÷     #  ÷ [0.2] <NEXT LINE (NEL)> (Sep) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 0009 × 0001 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0009 × 0308 × 0001 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0009 × 000D ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0009 × 0308 × 000D ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0009 × 000A ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0009 × 0308 × 000A ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0009 × 0085 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0009 × 0308 × 0085 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0009 × 0009 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0009 × 0308 × 0009 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0009 × 0061 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0009 × 0308 × 0061 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0009 × 0041 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0009 × 0308 × 0041 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0009 × 01BB ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0009 × 0308 × 01BB ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0009 × 0030 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0009 × 0308 × 0030 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0009 × 002E ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0009 × 0308 × 002E ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0009 × 0021 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0009 × 0308 × 0021 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0009 × 0022 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0009 × 0308 × 0022 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0009 × 002C ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [12.0] COMMA (SContinue) ÷ [0.3]
-÷ 0009 × 0308 × 002C ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
+÷ 0009 × 0001 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0009 × 0308 × 0001 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0009 × 000D ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0009 × 0308 × 000D ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0009 × 000A ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0009 × 0308 × 000A ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0009 × 0085 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0009 × 0308 × 0085 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0009 × 0009 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0009 × 0308 × 0009 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0009 × 0061 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0009 × 0308 × 0061 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0009 × 0041 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0009 × 0308 × 0041 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0009 × 01BB ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0009 × 0308 × 01BB ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0009 × 0030 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0009 × 0308 × 0030 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0009 × 002E ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0009 × 0308 × 002E ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0009 × 0021 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0009 × 0308 × 0021 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0009 × 0022 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0009 × 0308 × 0022 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0009 × 002C ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [998.0] COMMA (SContinue) ÷ [0.3]
+÷ 0009 × 0308 × 002C ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
 ÷ 0009 × 00AD ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0009 × 0308 × 00AD ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0009 × 0300 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0009 × 0308 × 0300 ÷     #  ÷ [0.2] <CHARACTER TABULATION> (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 0061 × 0001 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0061 × 0308 × 0001 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0061 × 000D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0061 × 0308 × 000D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0061 × 000A ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0061 × 0308 × 000A ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0061 × 0085 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0061 × 0308 × 0085 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0061 × 0009 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0061 × 0308 × 0009 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0061 × 0061 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0061 × 0308 × 0061 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0061 × 0041 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0061 × 0308 × 0041 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0061 × 01BB ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0061 × 0308 × 01BB ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0061 × 0030 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0061 × 0308 × 0030 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0061 × 002E ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0061 × 0308 × 002E ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0061 × 0021 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0061 × 0308 × 0021 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0061 × 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0061 × 0308 × 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0061 × 002C ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [12.0] COMMA (SContinue) ÷ [0.3]
-÷ 0061 × 0308 × 002C ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
+÷ 0061 × 0001 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0061 × 0308 × 0001 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0061 × 000D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0061 × 0308 × 000D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0061 × 000A ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0061 × 0308 × 000A ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0061 × 0085 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0061 × 0308 × 0085 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0061 × 0009 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0061 × 0308 × 0009 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0061 × 0061 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0061 × 0308 × 0061 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0061 × 0041 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0061 × 0308 × 0041 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0061 × 01BB ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0061 × 0308 × 01BB ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0061 × 0030 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0061 × 0308 × 0030 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0061 × 002E ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0061 × 0308 × 002E ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0061 × 0021 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0061 × 0308 × 0021 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0061 × 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0061 × 0308 × 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0061 × 002C ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [998.0] COMMA (SContinue) ÷ [0.3]
+÷ 0061 × 0308 × 002C ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
 ÷ 0061 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 × 0308 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 × 0300 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0061 × 0308 × 0300 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 0041 × 0001 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0041 × 0308 × 0001 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0041 × 000D ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0041 × 0308 × 000D ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0041 × 000A ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0041 × 0308 × 000A ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0041 × 0085 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0041 × 0308 × 0085 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0041 × 0009 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0041 × 0308 × 0009 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0041 × 0061 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0041 × 0308 × 0061 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0041 × 0041 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0041 × 0308 × 0041 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0041 × 01BB ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0041 × 0308 × 01BB ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0041 × 0030 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0041 × 0308 × 0030 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0041 × 002E ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0041 × 0308 × 002E ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0041 × 0021 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0041 × 0308 × 0021 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0041 × 0022 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0041 × 0308 × 0022 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0041 × 002C ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [12.0] COMMA (SContinue) ÷ [0.3]
-÷ 0041 × 0308 × 002C ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
+÷ 0041 × 0001 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0041 × 0308 × 0001 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0041 × 000D ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0041 × 0308 × 000D ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0041 × 000A ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0041 × 0308 × 000A ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0041 × 0085 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0041 × 0308 × 0085 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0041 × 0009 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0041 × 0308 × 0009 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0041 × 0061 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0041 × 0308 × 0061 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0041 × 0041 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0041 × 0308 × 0041 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0041 × 01BB ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0041 × 0308 × 01BB ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0041 × 0030 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0041 × 0308 × 0030 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0041 × 002E ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0041 × 0308 × 002E ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0041 × 0021 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0041 × 0308 × 0021 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0041 × 0022 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0041 × 0308 × 0022 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0041 × 002C ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [998.0] COMMA (SContinue) ÷ [0.3]
+÷ 0041 × 0308 × 002C ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
 ÷ 0041 × 00AD ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0041 × 0308 × 00AD ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0041 × 0300 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0041 × 0308 × 0300 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 01BB × 0001 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 01BB × 0308 × 0001 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 01BB × 000D ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 01BB × 0308 × 000D ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 01BB × 000A ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 01BB × 0308 × 000A ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 01BB × 0085 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 01BB × 0308 × 0085 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 01BB × 0009 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 01BB × 0308 × 0009 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 01BB × 0061 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 01BB × 0308 × 0061 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 01BB × 0041 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 01BB × 0308 × 0041 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 01BB × 01BB ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 01BB × 0308 × 01BB ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 01BB × 0030 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 01BB × 0308 × 0030 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 01BB × 002E ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 01BB × 0308 × 002E ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 01BB × 0021 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 01BB × 0308 × 0021 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 01BB × 0022 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 01BB × 0308 × 0022 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 01BB × 002C ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [12.0] COMMA (SContinue) ÷ [0.3]
-÷ 01BB × 0308 × 002C ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
+÷ 01BB × 0001 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 01BB × 0308 × 0001 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 01BB × 000D ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 01BB × 0308 × 000D ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 01BB × 000A ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 01BB × 0308 × 000A ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 01BB × 0085 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 01BB × 0308 × 0085 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 01BB × 0009 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 01BB × 0308 × 0009 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 01BB × 0061 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 01BB × 0308 × 0061 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 01BB × 0041 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 01BB × 0308 × 0041 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 01BB × 01BB ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 01BB × 0308 × 01BB ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 01BB × 0030 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 01BB × 0308 × 0030 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 01BB × 002E ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 01BB × 0308 × 002E ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 01BB × 0021 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 01BB × 0308 × 0021 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 01BB × 0022 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 01BB × 0308 × 0022 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 01BB × 002C ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [998.0] COMMA (SContinue) ÷ [0.3]
+÷ 01BB × 0308 × 002C ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
 ÷ 01BB × 00AD ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 01BB × 0308 × 00AD ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 01BB × 0300 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 01BB × 0308 × 0300 ÷     #  ÷ [0.2] LATIN LETTER TWO WITH STROKE (OLetter) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 0030 × 0001 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0030 × 0308 × 0001 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0030 × 000D ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0030 × 0308 × 000D ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0030 × 000A ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0030 × 0308 × 000A ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0030 × 0085 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0030 × 0308 × 0085 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0030 × 0009 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0030 × 0308 × 0009 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0030 × 0061 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0030 × 0308 × 0061 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0030 × 0041 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0030 × 0308 × 0041 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0030 × 01BB ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0030 × 0308 × 01BB ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0030 × 0030 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0030 × 0308 × 0030 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0030 × 002E ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0030 × 0308 × 002E ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0030 × 0021 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0030 × 0308 × 0021 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0030 × 0022 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0030 × 0308 × 0022 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0030 × 002C ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] COMMA (SContinue) ÷ [0.3]
-÷ 0030 × 0308 × 002C ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
+÷ 0030 × 0001 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0030 × 0308 × 0001 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0030 × 000D ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0030 × 0308 × 000D ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0030 × 000A ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0030 × 0308 × 000A ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0030 × 0085 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0030 × 0308 × 0085 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0030 × 0009 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0030 × 0308 × 0009 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0030 × 0061 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0030 × 0308 × 0061 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0030 × 0041 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0030 × 0308 × 0041 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0030 × 01BB ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0030 × 0308 × 01BB ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0030 × 0030 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0030 × 0308 × 0030 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0030 × 002E ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0030 × 0308 × 002E ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0030 × 0021 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0030 × 0308 × 0021 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0030 × 0022 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0030 × 0308 × 0022 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0030 × 002C ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [998.0] COMMA (SContinue) ÷ [0.3]
+÷ 0030 × 0308 × 002C ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
 ÷ 0030 × 00AD ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0030 × 0308 × 00AD ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0030 × 0300 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0021 × 0308 × 00AD ÷     #  ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0021 × 0300 ÷     #  ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0021 × 0308 × 0300 ÷     #  ÷ [0.2] EXCLAMATION MARK (STerm) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 0022 × 0001 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0022 × 0308 × 0001 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0022 × 000D ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0022 × 0308 × 000D ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0022 × 000A ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0022 × 0308 × 000A ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0022 × 0085 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0022 × 0308 × 0085 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0022 × 0009 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0022 × 0308 × 0009 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0022 × 0061 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0022 × 0308 × 0061 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0022 × 0041 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0022 × 0308 × 0041 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0022 × 01BB ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0022 × 0308 × 01BB ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0022 × 0030 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0022 × 0308 × 0030 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0022 × 002E ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0022 × 0308 × 002E ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0022 × 0021 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0022 × 0308 × 0021 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0022 × 0022 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0022 × 0308 × 0022 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0022 × 002C ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [12.0] COMMA (SContinue) ÷ [0.3]
-÷ 0022 × 0308 × 002C ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
+÷ 0022 × 0001 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0022 × 0308 × 0001 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0022 × 000D ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0022 × 0308 × 000D ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0022 × 000A ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0022 × 0308 × 000A ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0022 × 0085 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0022 × 0308 × 0085 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0022 × 0009 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0022 × 0308 × 0009 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0022 × 0061 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0022 × 0308 × 0061 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0022 × 0041 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0022 × 0308 × 0041 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0022 × 01BB ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0022 × 0308 × 01BB ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0022 × 0030 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0022 × 0308 × 0030 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0022 × 002E ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0022 × 0308 × 002E ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0022 × 0021 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0022 × 0308 × 0021 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0022 × 0022 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0022 × 0308 × 0022 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0022 × 002C ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [998.0] COMMA (SContinue) ÷ [0.3]
+÷ 0022 × 0308 × 002C ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
 ÷ 0022 × 00AD ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0022 × 0308 × 00AD ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0022 × 0300 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0022 × 0308 × 0300 ÷     #  ÷ [0.2] QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 002C × 0001 ÷     #  ÷ [0.2] COMMA (SContinue) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 002C × 0308 × 0001 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 002C × 000D ÷     #  ÷ [0.2] COMMA (SContinue) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 002C × 0308 × 000D ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 002C × 000A ÷     #  ÷ [0.2] COMMA (SContinue) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 002C × 0308 × 000A ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 002C × 0085 ÷     #  ÷ [0.2] COMMA (SContinue) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 002C × 0308 × 0085 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 002C × 0009 ÷     #  ÷ [0.2] COMMA (SContinue) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 002C × 0308 × 0009 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 002C × 0061 ÷     #  ÷ [0.2] COMMA (SContinue) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 002C × 0308 × 0061 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 002C × 0041 ÷     #  ÷ [0.2] COMMA (SContinue) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 002C × 0308 × 0041 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 002C × 01BB ÷     #  ÷ [0.2] COMMA (SContinue) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 002C × 0308 × 01BB ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 002C × 0030 ÷     #  ÷ [0.2] COMMA (SContinue) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 002C × 0308 × 0030 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 002C × 002E ÷     #  ÷ [0.2] COMMA (SContinue) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 002C × 0308 × 002E ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 002C × 0021 ÷     #  ÷ [0.2] COMMA (SContinue) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 002C × 0308 × 0021 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 002C × 0022 ÷     #  ÷ [0.2] COMMA (SContinue) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 002C × 0308 × 0022 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 002C × 002C ÷     #  ÷ [0.2] COMMA (SContinue) × [12.0] COMMA (SContinue) ÷ [0.3]
-÷ 002C × 0308 × 002C ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
+÷ 002C × 0001 ÷     #  ÷ [0.2] COMMA (SContinue) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 002C × 0308 × 0001 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 002C × 000D ÷     #  ÷ [0.2] COMMA (SContinue) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 002C × 0308 × 000D ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 002C × 000A ÷     #  ÷ [0.2] COMMA (SContinue) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 002C × 0308 × 000A ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 002C × 0085 ÷     #  ÷ [0.2] COMMA (SContinue) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 002C × 0308 × 0085 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 002C × 0009 ÷     #  ÷ [0.2] COMMA (SContinue) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 002C × 0308 × 0009 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 002C × 0061 ÷     #  ÷ [0.2] COMMA (SContinue) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 002C × 0308 × 0061 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 002C × 0041 ÷     #  ÷ [0.2] COMMA (SContinue) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 002C × 0308 × 0041 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 002C × 01BB ÷     #  ÷ [0.2] COMMA (SContinue) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 002C × 0308 × 01BB ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 002C × 0030 ÷     #  ÷ [0.2] COMMA (SContinue) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 002C × 0308 × 0030 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 002C × 002E ÷     #  ÷ [0.2] COMMA (SContinue) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 002C × 0308 × 002E ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 002C × 0021 ÷     #  ÷ [0.2] COMMA (SContinue) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 002C × 0308 × 0021 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 002C × 0022 ÷     #  ÷ [0.2] COMMA (SContinue) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 002C × 0308 × 0022 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 002C × 002C ÷     #  ÷ [0.2] COMMA (SContinue) × [998.0] COMMA (SContinue) ÷ [0.3]
+÷ 002C × 0308 × 002C ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
 ÷ 002C × 00AD ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 002C × 0308 × 00AD ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 002C × 0300 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 002C × 0308 × 0300 ÷     #  ÷ [0.2] COMMA (SContinue) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 00AD × 0001 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 00AD × 0308 × 0001 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 00AD × 000D ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 00AD × 0308 × 000D ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 00AD × 000A ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 00AD × 0308 × 000A ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 00AD × 0085 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 00AD × 0308 × 0085 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 00AD × 0009 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 00AD × 0308 × 0009 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 00AD × 0061 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 00AD × 0308 × 0061 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 00AD × 0041 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 00AD × 0308 × 0041 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 00AD × 01BB ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 00AD × 0308 × 01BB ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 00AD × 0030 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 00AD × 0308 × 0030 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 00AD × 002E ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 00AD × 0308 × 002E ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 00AD × 0021 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 00AD × 0308 × 0021 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 00AD × 0022 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 00AD × 0308 × 0022 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 00AD × 002C ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
-÷ 00AD × 0308 × 002C ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
+÷ 00AD × 0001 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 00AD × 0308 × 0001 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 00AD × 000D ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 00AD × 0308 × 000D ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 00AD × 000A ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 00AD × 0308 × 000A ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 00AD × 0085 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 00AD × 0308 × 0085 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 00AD × 0009 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 00AD × 0308 × 0009 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 00AD × 0061 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 00AD × 0308 × 0061 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 00AD × 0041 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 00AD × 0308 × 0041 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 00AD × 01BB ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 00AD × 0308 × 01BB ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 00AD × 0030 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 00AD × 0308 × 0030 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 00AD × 002E ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 00AD × 0308 × 002E ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 00AD × 0021 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 00AD × 0308 × 0021 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 00AD × 0022 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 00AD × 0308 × 0022 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 00AD × 002C ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
+÷ 00AD × 0308 × 002C ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
 ÷ 00AD × 00AD ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 00AD × 0308 × 00AD ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 00AD × 0300 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 00AD × 0308 × 0300 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 0300 × 0001 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0300 × 0308 × 0001 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 0300 × 000D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0300 × 0308 × 000D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 0300 × 000A ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0300 × 0308 × 000A ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 0300 × 0085 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0300 × 0308 × 0085 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
-÷ 0300 × 0009 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0300 × 0308 × 0009 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
-÷ 0300 × 0061 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0300 × 0308 × 0061 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
-÷ 0300 × 0041 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0300 × 0308 × 0041 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
-÷ 0300 × 01BB ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0300 × 0308 × 01BB ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
-÷ 0300 × 0030 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0300 × 0308 × 0030 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 0300 × 002E ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0300 × 0308 × 002E ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0300 × 0021 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0300 × 0308 × 0021 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] EXCLAMATION MARK (STerm) ÷ [0.3]
-÷ 0300 × 0022 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0300 × 0308 × 0022 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] QUOTATION MARK (Close) ÷ [0.3]
-÷ 0300 × 002C ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
-÷ 0300 × 0308 × 002C ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [12.0] COMMA (SContinue) ÷ [0.3]
+÷ 0300 × 0001 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0300 × 0308 × 0001 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 0300 × 000D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0300 × 0308 × 000D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 0300 × 000A ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0300 × 0308 × 000A ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 0300 × 0085 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0300 × 0308 × 0085 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <NEXT LINE (NEL)> (Sep) ÷ [0.3]
+÷ 0300 × 0009 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0300 × 0308 × 0009 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] <CHARACTER TABULATION> (Sp) ÷ [0.3]
+÷ 0300 × 0061 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0300 × 0308 × 0061 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN SMALL LETTER A (Lower) ÷ [0.3]
+÷ 0300 × 0041 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0300 × 0308 × 0041 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER A (Upper) ÷ [0.3]
+÷ 0300 × 01BB ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0300 × 0308 × 01BB ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN LETTER TWO WITH STROKE (OLetter) ÷ [0.3]
+÷ 0300 × 0030 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0300 × 0308 × 0030 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0300 × 002E ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0300 × 0308 × 002E ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0300 × 0021 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0300 × 0308 × 0021 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] EXCLAMATION MARK (STerm) ÷ [0.3]
+÷ 0300 × 0022 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0300 × 0308 × 0022 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] QUOTATION MARK (Close) ÷ [0.3]
+÷ 0300 × 002C ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
+÷ 0300 × 0308 × 002C ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [998.0] COMMA (SContinue) ÷ [0.3]
 ÷ 0300 × 00AD ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0300 × 0308 × 00AD ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0300 × 0300 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0300 × 0308 × 0300 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 0028 × 0022 × 0047 × 006F × 002E × 0022 × 0029 × 0020 ÷ 0028 × 0048 × 0065 × 0020 × 0064 × 0069 × 0064 × 002E × 0029 ÷     #  ÷ [0.2] LEFT PARENTHESIS (Close) × [12.0] QUOTATION MARK (Close) × [12.0] LATIN CAPITAL LETTER G (Upper) × [12.0] LATIN SMALL LETTER O (Lower) × [12.0] FULL STOP (ATerm) × [9.0] QUOTATION MARK (Close) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] SPACE (Sp) ÷ [11.0] LEFT PARENTHESIS (Close) × [12.0] LATIN CAPITAL LETTER H (Upper) × [12.0] LATIN SMALL LETTER E (Lower) × [12.0] SPACE (Sp) × [12.0] LATIN SMALL LETTER D (Lower) × [12.0] LATIN SMALL LETTER I (Lower) × [12.0] LATIN SMALL LETTER D (Lower) × [12.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) ÷ [0.3]
-÷ 0028 × 201C × 0047 × 006F × 003F × 201D × 0029 × 0020 ÷ 0028 × 0048 × 0065 × 0020 × 0064 × 0069 × 0064 × 002E × 0029 ÷     #  ÷ [0.2] LEFT PARENTHESIS (Close) × [12.0] LEFT DOUBLE QUOTATION MARK (Close) × [12.0] LATIN CAPITAL LETTER G (Upper) × [12.0] LATIN SMALL LETTER O (Lower) × [12.0] QUESTION MARK (STerm) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] SPACE (Sp) ÷ [11.0] LEFT PARENTHESIS (Close) × [12.0] LATIN CAPITAL LETTER H (Upper) × [12.0] LATIN SMALL LETTER E (Lower) × [12.0] SPACE (Sp) × [12.0] LATIN SMALL LETTER D (Lower) × [12.0] LATIN SMALL LETTER I (Lower) × [12.0] LATIN SMALL LETTER D (Lower) × [12.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) ÷ [0.3]
-÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 002E × 0020 × 0069 × 0073 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] FULL STOP (ATerm) × [8.0] SPACE (Sp) × [8.0] LATIN SMALL LETTER I (Lower) × [12.0] LATIN SMALL LETTER S (Lower) ÷ [0.3]
-÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 003F × 0020 ÷ 0048 × 0065 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] QUESTION MARK (STerm) × [9.0] SPACE (Sp) ÷ [11.0] LATIN CAPITAL LETTER H (Upper) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
-÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 002E ÷     #  ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] FULL STOP (ATerm) ÷ [0.3]
-÷ 0033 × 002E × 0034 ÷     #  ÷ [0.2] DIGIT THREE (Numeric) × [12.0] FULL STOP (ATerm) × [6.0] DIGIT FOUR (Numeric) ÷ [0.3]
-÷ 0063 × 002E × 0064 ÷     #  ÷ [0.2] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER D (Lower) ÷ [0.3]
-÷ 0043 × 002E × 0064 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER C (Upper) × [12.0] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER D (Lower) ÷ [0.3]
-÷ 0063 × 002E × 0044 ÷     #  ÷ [0.2] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER D (Upper) ÷ [0.3]
-÷ 0043 × 002E × 0044 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER C (Upper) × [12.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER D (Upper) ÷ [0.3]
-÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0074 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [8.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
-÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 ÷ 0054 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
-÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 2018 × 0028 × 0074 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [8.0] LEFT SINGLE QUOTATION MARK (Close) × [12.0] LEFT PARENTHESIS (Close) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
-÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 ÷ 2018 × 0028 × 0054 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) ÷ [11.0] LEFT SINGLE QUOTATION MARK (Close) × [12.0] LEFT PARENTHESIS (Close) × [12.0] LATIN CAPITAL LETTER T (Upper) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
-÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0308 × 0074 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
-÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0308 ÷ 0054 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
-÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 0308 ÷ 0054 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
-÷ 0065 × 0074 × 0063 × 002E × 0029 × 000A ÷ 0308 × 0054 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [12.0] LATIN CAPITAL LETTER T (Upper) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
-÷ 0074 × 0068 × 0065 × 0020 × 0072 × 0065 × 0073 × 0070 × 002E × 0020 × 006C × 0065 × 0061 × 0064 × 0065 × 0072 × 0073 × 0020 × 0061 × 0072 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER H (Lower) × [12.0] LATIN SMALL LETTER E (Lower) × [12.0] SPACE (Sp) × [12.0] LATIN SMALL LETTER R (Lower) × [12.0] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER S (Lower) × [12.0] LATIN SMALL LETTER P (Lower) × [12.0] FULL STOP (ATerm) × [8.0] SPACE (Sp) × [8.0] LATIN SMALL LETTER L (Lower) × [12.0] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER A (Lower) × [12.0] LATIN SMALL LETTER D (Lower) × [12.0] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER R (Lower) × [12.0] LATIN SMALL LETTER S (Lower) × [12.0] SPACE (Sp) × [12.0] LATIN SMALL LETTER A (Lower) × [12.0] LATIN SMALL LETTER R (Lower) × [12.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
-÷ 5B57 × 002E ÷ 5B57 ÷     #  ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [12.0] FULL STOP (ATerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) ÷ [0.3]
-÷ 0065 × 0074 × 0063 × 002E ÷ 5B83 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3]
-÷ 0065 × 0074 × 0063 × 002E × 3002 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [12.0] LATIN SMALL LETTER T (Lower) × [12.0] LATIN SMALL LETTER C (Lower) × [12.0] FULL STOP (ATerm) × [8.1] IDEOGRAPHIC FULL STOP (STerm) ÷ [0.3]
-÷ 5B57 × 3002 ÷ 5B83 ÷     #  ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [12.0] IDEOGRAPHIC FULL STOP (STerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3]
+÷ 000D × 000A ÷ 0061 × 000A ÷ 0308 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [4.0] LATIN SMALL LETTER A (Lower) × [998.0] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [0.3]
+÷ 0061 × 0308 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (Lower) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [0.3]
+÷ 0020 × 200D × 0646 ÷     #  ÷ [0.2] SPACE (Sp) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [998.0] ARABIC LETTER NOON (OLetter) ÷ [0.3]
+÷ 0646 × 200D × 0020 ÷     #  ÷ [0.2] ARABIC LETTER NOON (OLetter) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [998.0] SPACE (Sp) ÷ [0.3]
+÷ 0028 × 0022 × 0047 × 006F × 002E × 0022 × 0029 × 0020 ÷ 0028 × 0048 × 0065 × 0020 × 0064 × 0069 × 0064 × 002E × 0029 ÷     #  ÷ [0.2] LEFT PARENTHESIS (Close) × [998.0] QUOTATION MARK (Close) × [998.0] LATIN CAPITAL LETTER G (Upper) × [998.0] LATIN SMALL LETTER O (Lower) × [998.0] FULL STOP (ATerm) × [9.0] QUOTATION MARK (Close) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] SPACE (Sp) ÷ [11.0] LEFT PARENTHESIS (Close) × [998.0] LATIN CAPITAL LETTER H (Upper) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] LATIN SMALL LETTER I (Lower) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) ÷ [0.3]
+÷ 0028 × 201C × 0047 × 006F × 003F × 201D × 0029 × 0020 ÷ 0028 × 0048 × 0065 × 0020 × 0064 × 0069 × 0064 × 002E × 0029 ÷     #  ÷ [0.2] LEFT PARENTHESIS (Close) × [998.0] LEFT DOUBLE QUOTATION MARK (Close) × [998.0] LATIN CAPITAL LETTER G (Upper) × [998.0] LATIN SMALL LETTER O (Lower) × [998.0] QUESTION MARK (STerm) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] SPACE (Sp) ÷ [11.0] LEFT PARENTHESIS (Close) × [998.0] LATIN CAPITAL LETTER H (Upper) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] LATIN SMALL LETTER I (Lower) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) ÷ [0.3]
+÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 002E × 0020 × 0069 × 0073 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) × [8.0] SPACE (Sp) × [8.0] LATIN SMALL LETTER I (Lower) × [998.0] LATIN SMALL LETTER S (Lower) ÷ [0.3]
+÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 003F × 0020 ÷ 0048 × 0065 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] QUESTION MARK (STerm) × [9.0] SPACE (Sp) ÷ [11.0] LATIN CAPITAL LETTER H (Upper) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 0055 × 002E × 0053 × 002E × 0041 × 0300 × 002E ÷     #  ÷ [0.2] LATIN CAPITAL LETTER U (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER S (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) ÷ [0.3]
+÷ 0033 × 002E × 0034 ÷     #  ÷ [0.2] DIGIT THREE (Numeric) × [998.0] FULL STOP (ATerm) × [6.0] DIGIT FOUR (Numeric) ÷ [0.3]
+÷ 0063 × 002E × 0064 ÷     #  ÷ [0.2] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER D (Lower) ÷ [0.3]
+÷ 0043 × 002E × 0064 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER C (Upper) × [998.0] FULL STOP (ATerm) × [8.0] LATIN SMALL LETTER D (Lower) ÷ [0.3]
+÷ 0063 × 002E × 0044 ÷     #  ÷ [0.2] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER D (Upper) ÷ [0.3]
+÷ 0043 × 002E × 0044 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER C (Upper) × [998.0] FULL STOP (ATerm) × [7.0] LATIN CAPITAL LETTER D (Upper) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0074 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [8.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 ÷ 0054 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 2018 × 0028 × 0074 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [8.0] LEFT SINGLE QUOTATION MARK (Close) × [998.0] LEFT PARENTHESIS (Close) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 ÷ 2018 × 0028 × 0054 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) ÷ [11.0] LEFT SINGLE QUOTATION MARK (Close) × [998.0] LEFT PARENTHESIS (Close) × [998.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0308 × 0074 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.0] RIGHT PARENTHESIS (Close) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [8.0] NO-BREAK SPACE (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 00A0 × 0308 ÷ 0054 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [9.0] NO-BREAK SPACE (Sp) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E × 0029 × 2019 × 0308 ÷ 0054 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E × 0029 × 000A ÷ 0308 × 0054 × 0068 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [9.0] RIGHT PARENTHESIS (Close) × [9.0] <LINE FEED (LF)> (LF) ÷ [4.0] COMBINING DIAERESIS (Extend_FE) × [998.0] LATIN CAPITAL LETTER T (Upper) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 0074 × 0068 × 0065 × 0020 × 0072 × 0065 × 0073 × 0070 × 002E × 0020 × 006C × 0065 × 0061 × 0064 × 0065 × 0072 × 0073 × 0020 × 0061 × 0072 × 0065 ÷     #  ÷ [0.2] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER H (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER R (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER S (Lower) × [998.0] LATIN SMALL LETTER P (Lower) × [998.0] FULL STOP (ATerm) × [8.0] SPACE (Sp) × [8.0] LATIN SMALL LETTER L (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER A (Lower) × [998.0] LATIN SMALL LETTER D (Lower) × [998.0] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER R (Lower) × [998.0] LATIN SMALL LETTER S (Lower) × [998.0] SPACE (Sp) × [998.0] LATIN SMALL LETTER A (Lower) × [998.0] LATIN SMALL LETTER R (Lower) × [998.0] LATIN SMALL LETTER E (Lower) ÷ [0.3]
+÷ 5B57 × 002E ÷ 5B57 ÷     #  ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [998.0] FULL STOP (ATerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E ÷ 5B83 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3]
+÷ 0065 × 0074 × 0063 × 002E × 3002 ÷     #  ÷ [0.2] LATIN SMALL LETTER E (Lower) × [998.0] LATIN SMALL LETTER T (Lower) × [998.0] LATIN SMALL LETTER C (Lower) × [998.0] FULL STOP (ATerm) × [8.1] IDEOGRAPHIC FULL STOP (STerm) ÷ [0.3]
+÷ 5B57 × 3002 ÷ 5B83 ÷     #  ÷ [0.2] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [998.0] IDEOGRAPHIC FULL STOP (STerm) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) ÷ [0.3]
 ÷ 0021 × 0020 × 0020 ÷     #  ÷ [0.2] EXCLAMATION MARK (STerm) × [9.0] SPACE (Sp) × [10.0] SPACE (Sp) ÷ [0.3]
-÷ 2060 × 0028 × 2060 × 0022 × 2060 × 0047 × 2060 × 006F × 2060 × 002E × 2060 × 0022 × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0028 × 2060 × 201C × 2060 × 0047 × 2060 × 006F × 2060 × 003F × 2060 × 201D × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LEFT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 0020 × 2060 × 0069 × 2060 × 0073 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 003F × 2060 × 0020 × 2060 ÷ 0048 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0033 × 2060 × 002E × 2060 × 0034 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] DIGIT THREE (Numeric) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [6.0] DIGIT FOUR (Numeric) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0063 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0043 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER C (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0063 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0043 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER C (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 2018 × 2060 × 0028 × 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LEFT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 ÷ 2018 × 2060 × 0028 × 2060 × 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0308 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0308 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 0308 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 000A ÷ 2060 × 0308 × 2060 × 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] <LINE FEED (LF)> (LF) ÷ [4.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 0020 × 2060 × 0072 × 2060 × 0065 × 2060 × 0073 × 2060 × 0070 × 2060 × 002E × 2060 × 0020 × 2060 × 006C × 2060 × 0065 × 2060 × 0061 × 2060 × 0064 × 2060 × 0065 × 2060 × 0072 × 2060 × 0073 × 2060 × 0020 × 2060 × 0061 × 2060 × 0072 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER P (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER L (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 5B57 × 2060 × 002E × 2060 ÷ 5B57 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 ÷ 5B83 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 3002 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.1] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 5B57 × 2060 × 3002 × 2060 ÷ 5B83 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [12.0] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 × 0021 × 2060 × 0020 × 2060 × 0020 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [12.0] EXCLAMATION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [10.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 1F1E6 × 1F1E7 × 1F1E8 ÷  #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Other) × [12.0] REGIONAL INDICATOR SYMBOL LETTER B (Other) × [12.0] REGIONAL INDICATOR SYMBOL LETTER C (Other) ÷ [0.3]
-÷ 1F1E6 × 200D × 1F1E7 × 1F1E8 ÷  #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Other) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [12.0] REGIONAL INDICATOR SYMBOL LETTER B (Other) × [12.0] REGIONAL INDICATOR SYMBOL LETTER C (Other) ÷ [0.3]
-÷ 1F1E6 × 1F1E7 × 200D × 1F1E8 ÷  #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Other) × [12.0] REGIONAL INDICATOR SYMBOL LETTER B (Other) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [12.0] REGIONAL INDICATOR SYMBOL LETTER C (Other) ÷ [0.3]
-÷ 0020 × 200D × 0646 ÷     #  ÷ [0.2] SPACE (Sp) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [12.0] ARABIC LETTER NOON (OLetter) ÷ [0.3]
-÷ 0646 × 200D × 0020 ÷     #  ÷ [0.2] ARABIC LETTER NOON (OLetter) × [5.0] ZERO WIDTH JOINER (Extend_FE) × [12.0] SPACE (Sp) ÷ [0.3]
+÷ 2060 × 0028 × 2060 × 0022 × 2060 × 0047 × 2060 × 006F × 2060 × 002E × 2060 × 0022 × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0028 × 2060 × 201C × 2060 × 0047 × 2060 × 006F × 2060 × 003F × 2060 × 201D × 2060 × 0029 × 2060 × 0020 × 2060 ÷ 0028 × 2060 × 0048 × 2060 × 0065 × 2060 × 0020 × 2060 × 0064 × 2060 × 0069 × 2060 × 0064 × 2060 × 002E × 2060 × 0029 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LEFT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER G (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER O (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT DOUBLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 0020 × 2060 × 0069 × 2060 × 0073 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER I (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 003F × 2060 × 0020 × 2060 ÷ 0048 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] QUESTION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LATIN CAPITAL LETTER H (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0055 × 2060 × 002E × 2060 × 0053 × 2060 × 002E × 2060 × 0041 × 2060 × 0300 × 002E × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER U (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER S (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER A (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING GRAVE ACCENT (Extend_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0033 × 2060 × 002E × 2060 × 0034 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] DIGIT THREE (Numeric) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [6.0] DIGIT FOUR (Numeric) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0063 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0043 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER C (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0063 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0043 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER C (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (Upper) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 2018 × 2060 × 0028 × 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LEFT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 ÷ 2018 × 2060 × 0028 × 2060 × 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] LEFT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LEFT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0308 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [8.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [8.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 00A0 × 2060 × 0308 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] NO-BREAK SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 2019 × 2060 × 0308 ÷ 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT SINGLE QUOTATION MARK (Close) × [5.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) ÷ [11.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 0029 × 2060 × 000A ÷ 2060 × 0308 × 2060 × 0054 × 2060 × 0068 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [9.0] RIGHT PARENTHESIS (Close) × [5.0] WORD JOINER (Format_FE) × [9.0] <LINE FEED (LF)> (LF) ÷ [4.0] WORD JOINER (Format_FE) × [5.0] COMBINING DIAERESIS (Extend_FE) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN CAPITAL LETTER T (Upper) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0074 × 2060 × 0068 × 2060 × 0065 × 2060 × 0020 × 2060 × 0072 × 2060 × 0065 × 2060 × 0073 × 2060 × 0070 × 2060 × 002E × 2060 × 0020 × 2060 × 006C × 2060 × 0065 × 2060 × 0061 × 2060 × 0064 × 2060 × 0065 × 2060 × 0072 × 2060 × 0073 × 2060 × 0020 × 2060 × 0061 × 2060 × 0072 × 2060 × 0065 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER H (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER P (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [8.0] LATIN SMALL LETTER L (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER D (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER S (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER A (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER R (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 5B57 × 2060 × 002E × 2060 ÷ 5B57 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 ÷ 5B83 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0065 × 2060 × 0074 × 2060 × 0063 × 2060 × 002E × 2060 × 3002 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER E (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER T (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] LATIN SMALL LETTER C (Lower) × [5.0] WORD JOINER (Format_FE) × [998.0] FULL STOP (ATerm) × [5.0] WORD JOINER (Format_FE) × [8.1] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 5B57 × 2060 × 3002 × 2060 ÷ 5B83 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] CJK UNIFIED IDEOGRAPH-5B57 (OLetter) × [5.0] WORD JOINER (Format_FE) × [998.0] IDEOGRAPHIC FULL STOP (STerm) × [5.0] WORD JOINER (Format_FE) ÷ [11.0] CJK UNIFIED IDEOGRAPH-5B83 (OLetter) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2060 × 0021 × 2060 × 0020 × 2060 × 0020 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) × [998.0] EXCLAMATION MARK (STerm) × [5.0] WORD JOINER (Format_FE) × [9.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [10.0] SPACE (Sp) × [5.0] WORD JOINER (Format_FE) × [5.0] WORD JOINER (Format_FE) ÷ [0.3]
 #
-# Lines: 503
+# Lines: 502
 #
 # EOF
index 8dd1abf..9309493 100644 (file)
@@ -1,10 +1,11 @@
-# SentenceBreakProperty-8.0.0.txt
-# Date: 2015-03-11, 22:29:43 GMT [MD]
+# SentenceBreakProperty-9.0.0.txt
+# Date: 2016-06-01, 10:34:38 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
@@ -53,6 +54,7 @@
 0825..0827    ; Extend # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
 0829..082D    ; Extend # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
 0859..085B    ; Extend # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+08D4..08E1    ; Extend # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
 08E3..0902    ; Extend # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
 0903          ; Extend # Mc       DEVANAGARI SIGN VISARGA
 093A          ; Extend # Mn       DEVANAGARI VOWEL SIGN OE
 17C9..17D3    ; Extend # Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
 17DD          ; Extend # Mn       KHMER SIGN ATTHACAN
 180B..180D    ; Extend # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+1885..1886    ; Extend # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
 18A9          ; Extend # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 1920..1922    ; Extend # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
 1923..1926    ; Extend # Mc   [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
 1CF4          ; Extend # Mn       VEDIC TONE CANDRA ABOVE
 1CF8..1CF9    ; Extend # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
 1DC0..1DF5    ; Extend # Mn  [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF    ; Extend # Mn   [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+1DFB..1DFF    ; Extend # Mn   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
 200C..200D    ; Extend # Cf   [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
 20D0..20DC    ; Extend # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
 20DD..20E0    ; Extend # Me   [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
@@ -299,7 +302,7 @@ A825..A826    ; Extend # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL
 A827          ; Extend # Mc       SYLOTI NAGRI VOWEL SIGN OO
 A880..A881    ; Extend # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
 A8B4..A8C3    ; Extend # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
-A8C4          ; Extend # Mn       SAURASHTRA SIGN VIRAMA
+A8C4..A8C5    ; Extend # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8E0..A8F1    ; Extend # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
 A926..A92D    ; Extend # Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
 A947..A951    ; Extend # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
@@ -381,6 +384,7 @@ FF9E..FF9F    ; Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
 11234         ; Extend # Mn       KHOJKI SIGN ANUSVARA
 11235         ; Extend # Mc       KHOJKI SIGN VIRAMA
 11236..11237  ; Extend # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E         ; Extend # Mn       KHOJKI SIGN SUKUN
 112DF         ; Extend # Mn       KHUDAWADI SIGN ANUSVARA
 112E0..112E2  ; Extend # Mc   [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
 112E3..112EA  ; Extend # Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
@@ -396,6 +400,12 @@ FF9E..FF9F    ; Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
 11362..11363  ; Extend # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
 11366..1136C  ; Extend # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; Extend # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11435..11437  ; Extend # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F  ; Extend # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441  ; Extend # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11442..11444  ; Extend # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11445         ; Extend # Mc       NEWA SIGN VISARGA
+11446         ; Extend # Mn       NEWA SIGN NUKTA
 114B0..114B2  ; Extend # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B3..114B8  ; Extend # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
 114B9         ; Extend # Mc       TIRHUTA VOWEL SIGN E
@@ -429,6 +439,18 @@ FF9E..FF9F    ; Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
 11722..11725  ; Extend # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
 11726         ; Extend # Mc       AHOM VOWEL SIGN E
 11727..1172B  ; Extend # Mn   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+11C2F         ; Extend # Mc       BHAIKSUKI VOWEL SIGN AA
+11C30..11C36  ; Extend # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; Extend # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3E         ; Extend # Mc       BHAIKSUKI SIGN VISARGA
+11C3F         ; Extend # Mn       BHAIKSUKI SIGN VIRAMA
+11C92..11CA7  ; Extend # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9         ; Extend # Mc       MARCHEN SUBJOINED LETTER YA
+11CAA..11CB0  ; Extend # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB1         ; Extend # Mc       MARCHEN VOWEL SIGN I
+11CB2..11CB3  ; Extend # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4         ; Extend # Mc       MARCHEN VOWEL SIGN O
+11CB5..11CB6  ; Extend # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 16AF0..16AF4  ; Extend # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
 16B30..16B36  ; Extend # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
 16F51..16F7E  ; Extend # Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
@@ -447,10 +469,17 @@ FF9E..FF9F    ; Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
 1DA84         ; Extend # Mn       SIGNWRITING LOCATION HEAD NECK
 1DA9B..1DA9F  ; Extend # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF  ; Extend # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006  ; Extend # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; Extend # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; Extend # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; Extend # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; Extend # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E8D0..1E8D6  ; Extend # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E944..1E94A  ; Extend # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+E0020..E007F  ; Extend # Cf  [96] TAG SPACE..CANCEL TAG
 E0100..E01EF  ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 
-# Total code points: 1967
+# Total code points: 2197
 
 # ================================================
 
@@ -467,6 +496,7 @@ E0100..E01EF  ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 061C          ; Format # Cf       ARABIC LETTER MARK
 06DD          ; Format # Cf       ARABIC END OF AYAH
 070F          ; Format # Cf       SYRIAC ABBREVIATION MARK
+08E2          ; Format # Cf       ARABIC DISPUTED END OF AYAH
 180E          ; Format # Cf       MONGOLIAN VOWEL SEPARATOR
 200B          ; Format # Cf       ZERO WIDTH SPACE
 200E..200F    ; Format # Cf   [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
@@ -479,9 +509,8 @@ FFF9..FFFB    ; Format # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANN
 1BCA0..1BCA3  ; Format # Cf   [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
 1D173..1D17A  ; Format # Cf   [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
 E0001         ; Format # Cf       LANGUAGE TAG
-E0020..E007F  ; Format # Cf  [96] TAG SPACE..CANCEL TAG
 
-# Total code points: 148
+# Total code points: 53
 
 # ================================================
 
@@ -776,6 +805,7 @@ E0020..E007F  ; Format # Cf  [96] TAG SPACE..CANCEL TAG
 052F          ; Lower # L&       CYRILLIC SMALL LETTER EL WITH DESCENDER
 0561..0587    ; Lower # L&  [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
 13F8..13FD    ; Lower # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+1C80..1C88    ; Lower # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1D00..1D2B    ; Lower # L&  [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
 1D2C..1D6A    ; Lower # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
 1D6B..1D77    ; Lower # L&  [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
@@ -1118,6 +1148,7 @@ FB00..FB06    ; Lower # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE S
 FB13..FB17    ; Lower # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
 FF41..FF5A    ; Lower # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
 10428..1044F  ; Lower # L&  [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW
+104D8..104FB  ; Lower # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10CC0..10CF2  ; Lower # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
 118C0..118DF  ; Lower # L&  [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
 1D41A..1D433  ; Lower # L&  [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z
@@ -1148,8 +1179,9 @@ FF41..FF5A    ; Lower # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN
 1D7AA..1D7C2  ; Lower # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
 1D7C4..1D7C9  ; Lower # L&   [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
 1D7CB         ; Lower # L&       MATHEMATICAL BOLD SMALL DIGAMMA
+1E922..1E943  ; Lower # L&  [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
 
-# Total code points: 2172
+# Total code points: 2251
 
 # ================================================
 
@@ -1745,11 +1777,12 @@ A7A2          ; Upper # L&       LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
 A7A4          ; Upper # L&       LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
 A7A6          ; Upper # L&       LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
 A7A8          ; Upper # L&       LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
-A7AA..A7AD    ; Upper # L&   [4] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER L WITH BELT
+A7AA..A7AE    ; Upper # L&   [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B4    ; Upper # L&   [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA
 A7B6          ; Upper # L&       LATIN CAPITAL LETTER OMEGA
 FF21..FF3A    ; Upper # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
 10400..10427  ; Upper # L&  [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
+104B0..104D3  ; Upper # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
 10C80..10CB2  ; Upper # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
 118A0..118BF  ; Upper # L&  [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
 1D400..1D419  ; Upper # L&  [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z
@@ -1783,11 +1816,12 @@ FF21..FF3A    ; Upper # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LAT
 1D756..1D76E  ; Upper # L&  [25] MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
 1D790..1D7A8  ; Upper # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
 1D7CA         ; Upper # L&       MATHEMATICAL BOLD CAPITAL DIGAMMA
+1E900..1E921  ; Upper # L&  [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
 1F130..1F149  ; Upper # So  [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z
 1F150..1F169  ; Upper # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
 1F170..1F189  ; Upper # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
 
-# Total code points: 1782
+# Total code points: 1853
 
 # ================================================
 
@@ -1826,6 +1860,7 @@ FF21..FF3A    ; Upper # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LAT
 0828          ; OLetter # Lm       SAMARITAN MODIFIER LETTER I
 0840..0858    ; OLetter # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
 08A0..08B4    ; OLetter # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD    ; OLetter # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
 0904..0939    ; OLetter # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
 093D          ; OLetter # Lo       DEVANAGARI SIGN AVAGRAHA
 0950          ; OLetter # Lo       DEVANAGARI OM
@@ -1891,6 +1926,7 @@ FF21..FF3A    ; Upper # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LAT
 0C3D          ; OLetter # Lo       TELUGU SIGN AVAGRAHA
 0C58..0C5A    ; OLetter # Lo   [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
 0C60..0C61    ; OLetter # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C80          ; OLetter # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C85..0C8C    ; OLetter # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0C8E..0C90    ; OLetter # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
 0C92..0CA8    ; OLetter # Lo  [23] KANNADA LETTER O..KANNADA LETTER NA
@@ -1905,6 +1941,7 @@ FF21..FF3A    ; Upper # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LAT
 0D12..0D3A    ; OLetter # Lo  [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
 0D3D          ; OLetter # Lo       MALAYALAM SIGN AVAGRAHA
 0D4E          ; OLetter # Lo       MALAYALAM LETTER DOT REPH
+0D54..0D56    ; OLetter # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D5F..0D61    ; OLetter # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D7A..0D7F    ; OLetter # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 0D85..0D96    ; OLetter # Lo  [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
@@ -1983,7 +2020,8 @@ FF21..FF3A    ; Upper # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LAT
 1820..1842    ; OLetter # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; OLetter # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877    ; OLetter # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; OLetter # Lo  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; OLetter # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1887..18A8    ; OLetter # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18AA          ; OLetter # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5    ; OLetter # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
 1900..191E    ; OLetter # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
@@ -2207,6 +2245,8 @@ FFDA..FFDC    ; OLetter # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 1133D         ; OLetter # Lo       GRANTHA SIGN AVAGRAHA
 11350         ; OLetter # Lo       GRANTHA OM
 1135D..11361  ; OLetter # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+11400..11434  ; OLetter # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+11447..1144A  ; OLetter # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
 11480..114AF  ; OLetter # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114C4..114C5  ; OLetter # Lo   [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
 114C7         ; OLetter # Lo       TIRHUTA OM
@@ -2218,6 +2258,10 @@ FFDA..FFDC    ; OLetter # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 11700..11719  ; OLetter # Lo  [26] AHOM LETTER KA..AHOM LETTER JHA
 118FF         ; OLetter # Lo       WARANG CITI OM
 11AC0..11AF8  ; OLetter # Lo  [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08  ; OLetter # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; OLetter # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C40         ; OLetter # Lo       BHAIKSUKI SIGN AVAGRAHA
+11C72..11C8F  ; OLetter # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
 12000..12399  ; OLetter # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E  ; OLetter # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12480..12543  ; OLetter # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
@@ -2233,6 +2277,9 @@ FFDA..FFDC    ; OLetter # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 16F00..16F44  ; OLetter # Lo  [69] MIAO LETTER PA..MIAO LETTER HHA
 16F50         ; OLetter # Lo       MIAO LETTER NASALIZATION
 16F93..16F9F  ; OLetter # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0         ; OLetter # Lm       TANGUT ITERATION MARK
+17000..187EC  ; OLetter # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; OLetter # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B000..1B001  ; OLetter # Lo   [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
 1BC00..1BC6A  ; OLetter # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
 1BC70..1BC7C  ; OLetter # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
@@ -2278,7 +2325,7 @@ FFDA..FFDC    ; OLetter # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 2B820..2CEA1  ; OLetter # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
 2F800..2FA1D  ; OLetter # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 
-# Total code points: 106002
+# Total code points: 113027
 
 # ================================================
 
@@ -2325,16 +2372,19 @@ ABF0..ABF9    ; Numeric # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT N
 11136..1113F  ; Numeric # Nd  [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
 111D0..111D9  ; Numeric # Nd  [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
 112F0..112F9  ; Numeric # Nd  [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
+11450..11459  ; Numeric # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
 114D0..114D9  ; Numeric # Nd  [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
 11650..11659  ; Numeric # Nd  [10] MODI DIGIT ZERO..MODI DIGIT NINE
 116C0..116C9  ; Numeric # Nd  [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
 11730..11739  ; Numeric # Nd  [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
 118E0..118E9  ; Numeric # Nd  [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
+11C50..11C59  ; Numeric # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
 16A60..16A69  ; Numeric # Nd  [10] MRO DIGIT ZERO..MRO DIGIT NINE
 16B50..16B59  ; Numeric # Nd  [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
 1D7CE..1D7FF  ; Numeric # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+1E950..1E959  ; Numeric # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
 
-# Total code points: 542
+# Total code points: 572
 
 # ================================================
 
@@ -2398,10 +2448,12 @@ FF61          ; STerm # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
 11238..11239  ; STerm # Po   [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA
 1123B..1123C  ; STerm # Po   [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK
 112A9         ; STerm # Po       MULTANI SECTION MARK
+1144B..1144C  ; STerm # Po   [2] NEWA DANDA..NEWA DOUBLE DANDA
 115C2..115C3  ; STerm # Po   [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA
 115C9..115D7  ; STerm # Po  [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
 11641..11642  ; STerm # Po   [2] MODI DANDA..MODI DOUBLE DANDA
 1173C..1173E  ; STerm # Po   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
+11C41..11C42  ; STerm # Po   [2] BHAIKSUKI DANDA..BHAIKSUKI DOUBLE DANDA
 16A6E..16A6F  ; STerm # Po   [2] MRO DANDA..MRO DOUBLE DANDA
 16AF5         ; STerm # Po       BASSA VAH FULL STOP
 16B37..16B38  ; STerm # Po   [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB
@@ -2409,7 +2461,7 @@ FF61          ; STerm # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
 1BC9F         ; STerm # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
 1DA88         ; STerm # Po       SIGNWRITING FULL STOP
 
-# Total code points: 117
+# Total code points: 121
 
 # ================================================
 
index 7e163f1..a3a4b05 100644 (file)
@@ -1,10 +1,11 @@
-# WordBreakTest-8.0.0.txt
-# Date: 2015-05-02, 14:48:55 GMT [MD]
+# WordBreakTest-9.0.0.txt
+# Date: 2016-06-02, 18:28:31 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 #
 # Default Word Break Test
 #
 ÷ 0001 × 0308 ÷ 0030 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0001 ÷ 005F ÷     #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0001 × 0308 ÷ 005F ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0001 ÷ 1F1E6 ÷    #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0001 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0001 ÷ 1F1E6 ÷    #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0001 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0001 ÷ 05D0 ÷     #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0001 × 0308 ÷ 05D0 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0001 ÷ 0022 ÷     #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0001 × 0308 ÷ 0022 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0001 ÷ 0027 ÷     #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0001 × 0308 ÷ 0027 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0001 ÷ 261D ÷     #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0001 × 0308 ÷ 261D ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0001 ÷ 1F3FB ÷    #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0001 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0001 ÷ 2764 ÷     #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0001 × 0308 ÷ 2764 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0001 ÷ 1F466 ÷    #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0001 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0001 × 00AD ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0001 × 0308 × 00AD ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0001 × 0300 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0001 × 0308 × 0300 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0001 × 200D ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0001 × 0308 × 200D ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0001 ÷ 0061 × 2060 ÷     #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0001 × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0001 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 0030 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 000D ÷ 005F ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 005F ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 000D ÷ 1F1E6 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 000D ÷ 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 000D ÷ 1F1E6 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 000D ÷ 05D0 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 05D0 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 000D ÷ 0022 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 0022 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 000D ÷ 0027 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 0027 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 000D ÷ 261D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 261D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 000D ÷ 1F3FB ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 000D ÷ 2764 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000D ÷ 1F466 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] BOY (EBG) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 000D ÷ 00AD ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000D ÷ 0308 × 00AD ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000D ÷ 0300 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 000D ÷ 0308 × 0300 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 000D ÷ 200D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 000D ÷ 0308 × 200D ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 000D ÷ 0061 × 2060 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 000D ÷ 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 000D ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 0030 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 000A ÷ 005F ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 005F ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 000A ÷ 1F1E6 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 000A ÷ 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 000A ÷ 1F1E6 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 000A ÷ 05D0 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 05D0 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 000A ÷ 0022 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 0022 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 000A ÷ 0027 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 0027 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 000A ÷ 261D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 261D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 000A ÷ 1F3FB ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 000A ÷ 2764 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000A ÷ 1F466 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] BOY (EBG) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 000A ÷ 00AD ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000A ÷ 0308 × 00AD ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000A ÷ 0300 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 000A ÷ 0308 × 0300 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 000A ÷ 200D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 000A ÷ 0308 × 200D ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 000A ÷ 0061 × 2060 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 000A ÷ 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 000A ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 000B ÷ 0308 ÷ 0030 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 000B ÷ 005F ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 000B ÷ 0308 ÷ 005F ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 000B ÷ 1F1E6 ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 000B ÷ 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 000B ÷ 1F1E6 ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 000B ÷ 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 000B ÷ 05D0 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 000B ÷ 0308 ÷ 05D0 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 000B ÷ 0022 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 000B ÷ 0308 ÷ 0022 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 000B ÷ 0027 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 000B ÷ 0308 ÷ 0027 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 000B ÷ 261D ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 000B ÷ 0308 ÷ 261D ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 000B ÷ 1F3FB ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 000B ÷ 0308 ÷ 1F3FB ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 000B ÷ 2764 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000B ÷ 0308 ÷ 2764 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 000B ÷ 1F466 ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] BOY (EBG) ÷ [0.3]
+÷ 000B ÷ 0308 ÷ 1F466 ÷    #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 000B ÷ 00AD ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000B ÷ 0308 × 00AD ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 000B ÷ 0300 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 000B ÷ 0308 × 0300 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 000B ÷ 200D ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 000B ÷ 0308 × 200D ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 000B ÷ 0061 × 2060 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 000B ÷ 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 000B ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 3031 × 0308 ÷ 0030 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 3031 × 005F ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 3031 × 0308 × 005F ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 3031 ÷ 1F1E6 ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 3031 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 3031 ÷ 1F1E6 ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 3031 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 3031 ÷ 05D0 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 3031 × 0308 ÷ 05D0 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 3031 ÷ 0022 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 3031 × 0308 ÷ 0022 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 3031 ÷ 0027 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 3031 × 0308 ÷ 0027 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 3031 ÷ 261D ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 3031 × 0308 ÷ 261D ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 3031 ÷ 1F3FB ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 3031 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 3031 ÷ 2764 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 3031 × 0308 ÷ 2764 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 3031 ÷ 1F466 ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 3031 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 3031 × 00AD ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 3031 × 0308 × 00AD ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 3031 × 0300 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 3031 × 0308 × 0300 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 3031 × 200D ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 3031 × 0308 × 200D ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 3031 ÷ 0061 × 2060 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 3031 × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 3031 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0041 × 0308 × 0030 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0041 × 005F ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0041 × 0308 × 005F ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0041 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0041 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0041 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0041 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0041 × 05D0 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0041 × 0308 × 05D0 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0041 ÷ 0022 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0041 × 0308 ÷ 0022 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0041 ÷ 0027 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0041 × 0308 ÷ 0027 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0041 ÷ 261D ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0041 × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0041 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0041 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0041 ÷ 2764 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0041 × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0041 ÷ 1F466 ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0041 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0041 × 00AD ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0041 × 0308 × 00AD ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0041 × 0300 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0041 × 0308 × 0300 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0041 × 200D ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0041 × 0308 × 200D ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0041 × 0061 × 2060 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0041 × 0308 × 0061 × 2060 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0041 × 0061 ÷ 003A ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 003A × 0308 ÷ 0030 ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 003A ÷ 005F ÷     #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 003A × 0308 ÷ 005F ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 003A ÷ 1F1E6 ÷    #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 003A × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 003A ÷ 1F1E6 ÷    #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 003A × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 003A ÷ 05D0 ÷     #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 003A × 0308 ÷ 05D0 ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 003A ÷ 0022 ÷     #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 003A × 0308 ÷ 0022 ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 003A ÷ 0027 ÷     #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 003A × 0308 ÷ 0027 ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 003A ÷ 261D ÷     #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 003A × 0308 ÷ 261D ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 003A ÷ 1F3FB ÷    #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 003A × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 003A ÷ 2764 ÷     #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 003A × 0308 ÷ 2764 ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 003A ÷ 1F466 ÷    #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 003A × 0308 ÷ 1F466 ÷    #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 003A × 00AD ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 003A × 0308 × 00AD ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 003A × 0300 ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 003A × 0308 × 0300 ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 003A × 200D ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 003A × 0308 × 200D ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 003A ÷ 0061 × 2060 ÷     #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 003A × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 003A ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 002C × 0308 ÷ 0030 ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 002C ÷ 005F ÷     #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 002C × 0308 ÷ 005F ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 002C ÷ 1F1E6 ÷    #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 002C × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 002C ÷ 1F1E6 ÷    #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 002C × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 002C ÷ 05D0 ÷     #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 002C × 0308 ÷ 05D0 ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 002C ÷ 0022 ÷     #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 002C × 0308 ÷ 0022 ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 002C ÷ 0027 ÷     #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 002C × 0308 ÷ 0027 ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 002C ÷ 261D ÷     #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 002C × 0308 ÷ 261D ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 002C ÷ 1F3FB ÷    #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 002C × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 002C ÷ 2764 ÷     #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 002C × 0308 ÷ 2764 ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 002C ÷ 1F466 ÷    #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 002C × 0308 ÷ 1F466 ÷    #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 002C × 00AD ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 002C × 0308 × 00AD ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 002C × 0300 ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 002C × 0308 × 0300 ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 002C × 200D ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 002C × 0308 × 200D ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 002C ÷ 0061 × 2060 ÷     #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 002C × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 002C ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 002E × 0308 ÷ 0030 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 002E ÷ 005F ÷     #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 002E × 0308 ÷ 005F ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 002E ÷ 1F1E6 ÷    #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 002E × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 002E ÷ 1F1E6 ÷    #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 002E × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 002E ÷ 05D0 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 002E × 0308 ÷ 05D0 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 002E ÷ 0022 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 002E × 0308 ÷ 0022 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 002E ÷ 0027 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 002E × 0308 ÷ 0027 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 002E ÷ 261D ÷     #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 002E × 0308 ÷ 261D ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 002E ÷ 1F3FB ÷    #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 002E × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 002E ÷ 2764 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 002E × 0308 ÷ 2764 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 002E ÷ 1F466 ÷    #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 002E × 0308 ÷ 1F466 ÷    #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 002E × 00AD ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 002E × 0308 × 00AD ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 002E × 0300 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 002E × 0308 × 0300 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 002E × 200D ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 002E × 0308 × 200D ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 002E ÷ 0061 × 2060 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 002E × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] FULL STOP (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 002E ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] FULL STOP (MidNumLet) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0030 × 0308 × 0030 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [8.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0030 × 005F ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0030 × 0308 × 005F ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0030 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0030 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0030 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0030 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0030 × 05D0 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0030 × 0308 × 05D0 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [10.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0030 ÷ 0022 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0030 × 0308 ÷ 0022 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0030 ÷ 0027 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0030 × 0308 ÷ 0027 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0030 ÷ 261D ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0030 × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0030 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0030 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0030 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0030 × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0030 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0030 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0030 × 00AD ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0030 × 0308 × 00AD ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0030 × 0300 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0030 × 0308 × 0300 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0030 × 200D ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0030 × 0308 × 200D ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0030 × 0061 × 2060 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0030 × 0308 × 0061 × 2060 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [10.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0030 × 0061 ÷ 003A ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 005F × 0308 × 0030 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 005F × 005F ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 005F × 0308 × 005F ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 005F ÷ 1F1E6 ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 005F × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 005F ÷ 1F1E6 ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 005F × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 005F × 05D0 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 005F × 0308 × 05D0 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 005F ÷ 0022 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 005F × 0308 ÷ 0022 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 005F ÷ 0027 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 005F × 0308 ÷ 0027 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 005F ÷ 261D ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 005F × 0308 ÷ 261D ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 005F ÷ 1F3FB ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 005F × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 005F ÷ 2764 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 005F × 0308 ÷ 2764 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 005F ÷ 1F466 ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 005F × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 005F × 00AD ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 005F × 0308 × 00AD ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 005F × 0300 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 005F × 0308 × 0300 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 005F × 200D ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 005F × 0308 × 200D ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 005F × 0061 × 2060 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 005F × 0308 × 0061 × 2060 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 005F × 0061 ÷ 003A ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 005F × 0308 × 0031 ÷ 002C ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
 ÷ 005F × 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 005F × 0308 × 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 1F1E6 ÷ 0001 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0001 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
-÷ 1F1E6 ÷ 000D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 000D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
-÷ 1F1E6 ÷ 000A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 000A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
-÷ 1F1E6 ÷ 000B ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 000B ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
-÷ 1F1E6 ÷ 3031 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 3031 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
-÷ 1F1E6 ÷ 0041 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0041 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
-÷ 1F1E6 ÷ 003A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 003A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 1F1E6 ÷ 002C ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 002C ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 1F1E6 ÷ 002E ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 002E ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
-÷ 1F1E6 ÷ 0030 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0030 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
-÷ 1F1E6 ÷ 005F ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 005F ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 1F1E6 × 1F1E6 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 1F1E6 × 0308 × 1F1E6 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.3] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 1F1E6 ÷ 05D0 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 05D0 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
-÷ 1F1E6 ÷ 0022 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0022 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
-÷ 1F1E6 ÷ 0027 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0027 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 1F1E6 × 00AD ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
-÷ 1F1E6 × 0308 × 00AD ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
-÷ 1F1E6 × 0300 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 1F1E6 × 0308 × 0300 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
-÷ 1F1E6 ÷ 0061 × 2060 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0061 × 2060 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 1F1E6 ÷ 0061 ÷ 003A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0061 ÷ 003A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 1F1E6 ÷ 0061 ÷ 0027 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0061 ÷ 0027 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 1F1E6 ÷ 0061 ÷ 0027 × 2060 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 1F1E6 ÷ 0061 ÷ 002C ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0061 ÷ 002C ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 1F1E6 ÷ 0031 ÷ 003A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0031 ÷ 003A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
-÷ 1F1E6 ÷ 0031 ÷ 0027 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0031 ÷ 0027 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
-÷ 1F1E6 ÷ 0031 ÷ 002C ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0031 ÷ 002C ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
-÷ 1F1E6 ÷ 0031 ÷ 002E × 2060 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 1F1E6 × 0308 ÷ 0031 ÷ 002E × 2060 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F1E6 ÷ 0001 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0001 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 1F1E6 ÷ 000D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 000D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F1E6 ÷ 000A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 000A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F1E6 ÷ 000B ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 000B ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 1F1E6 ÷ 3031 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 3031 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 1F1E6 ÷ 0041 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0041 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 1F1E6 ÷ 003A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 003A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F1E6 ÷ 002C ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 002C ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F1E6 ÷ 002E ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 002E ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 1F1E6 ÷ 0030 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0030 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 1F1E6 ÷ 005F ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 005F ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 1F1E6 × 1F1E6 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [15.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1F1E6 × 0308 × 1F1E6 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) × [15.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1F1E6 ÷ 05D0 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 05D0 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 1F1E6 ÷ 0022 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0022 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 1F1E6 ÷ 0027 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0027 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F1E6 ÷ 261D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 261D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F1E6 ÷ 1F3FB ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 1F3FB ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1F1E6 ÷ 2764 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 2764 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F1E6 ÷ 1F466 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 1F466 ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1F1E6 × 00AD ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 1F1E6 × 0308 × 00AD ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 1F1E6 × 0300 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 1F1E6 × 0308 × 0300 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 1F1E6 × 200D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 1F1E6 × 0308 × 200D ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 1F1E6 ÷ 0061 × 2060 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0061 × 2060 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F1E6 ÷ 0061 ÷ 003A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0061 ÷ 003A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F1E6 ÷ 0061 ÷ 0027 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0061 ÷ 0027 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F1E6 ÷ 0061 ÷ 0027 × 2060 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F1E6 ÷ 0061 ÷ 002C ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0061 ÷ 002C ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F1E6 ÷ 0031 ÷ 003A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0031 ÷ 003A ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F1E6 ÷ 0031 ÷ 0027 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0031 ÷ 0027 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F1E6 ÷ 0031 ÷ 002C ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0031 ÷ 002C ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F1E6 ÷ 0031 ÷ 002E × 2060 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0031 ÷ 002E × 2060 ÷    #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 05D0 ÷ 0001 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
 ÷ 05D0 × 0308 ÷ 0001 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
 ÷ 05D0 ÷ 000D ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 ÷ 05D0 × 0308 × 0030 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 05D0 × 005F ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 05D0 × 0308 × 005F ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 05D0 ÷ 1F1E6 ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 05D0 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 05D0 ÷ 1F1E6 ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 05D0 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 05D0 × 05D0 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [5.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 05D0 × 0308 × 05D0 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 05D0 ÷ 0022 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 05D0 × 0308 ÷ 0022 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 05D0 × 0027 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [7.1] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 05D0 × 0308 × 0027 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.1] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 05D0 ÷ 261D ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 05D0 × 0308 ÷ 261D ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 05D0 ÷ 1F3FB ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 05D0 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 05D0 ÷ 2764 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 05D0 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 05D0 ÷ 1F466 ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 05D0 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 05D0 × 00AD ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 05D0 × 0308 × 00AD ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 05D0 × 0300 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 05D0 × 0308 × 0300 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 05D0 × 200D ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 05D0 × 0308 × 200D ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 05D0 × 0061 × 2060 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 05D0 × 0308 × 0061 × 2060 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 05D0 × 0061 ÷ 003A ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0022 × 0308 ÷ 0030 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0022 ÷ 005F ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0022 × 0308 ÷ 005F ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0022 ÷ 1F1E6 ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0022 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0022 ÷ 1F1E6 ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0022 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0022 ÷ 05D0 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0022 × 0308 ÷ 05D0 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0022 ÷ 0022 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0022 × 0308 ÷ 0022 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0022 ÷ 0027 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0022 × 0308 ÷ 0027 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0022 ÷ 261D ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0022 × 0308 ÷ 261D ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0022 ÷ 1F3FB ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0022 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0022 ÷ 2764 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0022 × 0308 ÷ 2764 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0022 ÷ 1F466 ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0022 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0022 × 00AD ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0022 × 0308 × 00AD ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0022 × 0300 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0022 × 0308 × 0300 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0022 × 200D ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0022 × 0308 × 200D ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0022 ÷ 0061 × 2060 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0022 × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0022 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] QUOTATION MARK (Double_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 0030 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0027 ÷ 005F ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 005F ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0027 ÷ 1F1E6 ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0027 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0027 ÷ 1F1E6 ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0027 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0027 ÷ 05D0 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 05D0 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0027 ÷ 0022 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 0022 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0027 ÷ 0027 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 0027 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0027 ÷ 261D ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0027 × 0308 ÷ 261D ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0027 ÷ 1F3FB ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0027 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0027 ÷ 2764 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0027 × 0308 ÷ 2764 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0027 ÷ 1F466 ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0027 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0027 × 00AD ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0027 × 0308 × 00AD ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0027 × 0300 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0027 × 0308 × 0300 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0027 × 200D ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0027 × 0308 × 200D ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0027 ÷ 0061 × 2060 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0027 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
 ÷ 0027 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0027 × 0308 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 261D ÷ 0001 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 261D × 0308 ÷ 0001 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 261D ÷ 000D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 261D × 0308 ÷ 000D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 261D ÷ 000A ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 261D × 0308 ÷ 000A ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 261D ÷ 000B ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 261D × 0308 ÷ 000B ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 261D ÷ 3031 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 261D × 0308 ÷ 3031 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 261D ÷ 0041 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 261D × 0308 ÷ 0041 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 261D ÷ 003A ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 261D × 0308 ÷ 003A ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 261D ÷ 002C ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 261D × 0308 ÷ 002C ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 261D ÷ 002E ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 261D × 0308 ÷ 002E ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 261D ÷ 0030 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 261D × 0308 ÷ 0030 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 261D ÷ 005F ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 261D × 0308 ÷ 005F ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 261D ÷ 1F1E6 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 261D × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 261D ÷ 05D0 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 261D × 0308 ÷ 05D0 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 261D ÷ 0022 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 261D × 0308 ÷ 0022 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 261D ÷ 0027 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 261D × 0308 ÷ 0027 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 261D ÷ 261D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 261D × 0308 ÷ 261D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 261D × 1F3FB ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 261D × 0308 × 1F3FB ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 261D ÷ 2764 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 261D × 0308 ÷ 2764 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 261D ÷ 1F466 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 261D × 0308 ÷ 1F466 ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 261D × 00AD ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 261D × 0308 × 00AD ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 261D × 0300 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 261D × 0308 × 0300 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 261D × 200D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 261D × 0308 × 200D ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 261D ÷ 0061 × 2060 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 261D × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 261D ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 261D × 0308 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 261D ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 261D × 0308 ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 261D ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 261D × 0308 ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 261D ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 261D × 0308 ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 261D ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 261D × 0308 ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 261D ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 261D × 0308 ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 261D ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 261D × 0308 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 261D ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 261D × 0308 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F3FB ÷ 0001 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0001 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 1F3FB ÷ 000D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 000D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F3FB ÷ 000A ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 000A ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F3FB ÷ 000B ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 000B ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 1F3FB ÷ 3031 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 3031 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 1F3FB ÷ 0041 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0041 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 1F3FB ÷ 003A ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 003A ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F3FB ÷ 002C ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 002C ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F3FB ÷ 002E ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 002E ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 1F3FB ÷ 0030 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0030 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 1F3FB ÷ 005F ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 005F ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 1F3FB ÷ 1F1E6 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 1F1E6 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1F3FB ÷ 05D0 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 05D0 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 1F3FB ÷ 0022 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0022 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 1F3FB ÷ 0027 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0027 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F3FB ÷ 261D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 261D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F3FB ÷ 1F3FB ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 1F3FB ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1F3FB ÷ 2764 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 2764 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F3FB ÷ 1F466 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 1F466 ÷   #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1F3FB × 00AD ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 1F3FB × 0308 × 00AD ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 1F3FB × 0300 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 1F3FB × 0308 × 0300 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 1F3FB × 200D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 1F3FB × 0308 × 200D ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 1F3FB ÷ 0061 × 2060 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0061 × 2060 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F3FB ÷ 0061 ÷ 003A ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0061 ÷ 003A ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F3FB ÷ 0061 ÷ 0027 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0061 ÷ 0027 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F3FB ÷ 0061 ÷ 0027 × 2060 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0061 ÷ 0027 × 2060 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F3FB ÷ 0061 ÷ 002C ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0061 ÷ 002C ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F3FB ÷ 0031 ÷ 003A ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0031 ÷ 003A ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F3FB ÷ 0031 ÷ 0027 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0031 ÷ 0027 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F3FB ÷ 0031 ÷ 002C ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0031 ÷ 002C ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F3FB ÷ 0031 ÷ 002E × 2060 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F3FB × 0308 ÷ 0031 ÷ 002E × 2060 ÷    #  ÷ [0.2] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2764 ÷ 0001 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0001 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 2764 ÷ 000D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 2764 × 0308 ÷ 000D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 2764 ÷ 000A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 2764 × 0308 ÷ 000A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 2764 ÷ 000B ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 2764 × 0308 ÷ 000B ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 2764 ÷ 3031 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 2764 × 0308 ÷ 3031 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 2764 ÷ 0041 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0041 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 2764 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2764 × 0308 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2764 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2764 × 0308 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2764 ÷ 002E ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 2764 × 0308 ÷ 002E ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 2764 ÷ 0030 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0030 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 2764 ÷ 005F ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 2764 × 0308 ÷ 005F ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 2764 ÷ 1F1E6 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 2764 ÷ 05D0 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 2764 × 0308 ÷ 05D0 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 2764 ÷ 0022 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0022 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 2764 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2764 ÷ 261D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 2764 × 0308 ÷ 261D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 2764 ÷ 1F3FB ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 2764 ÷ 2764 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 2764 × 0308 ÷ 2764 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 2764 ÷ 1F466 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 2764 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 2764 × 00AD ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 2764 × 0308 × 00AD ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 2764 × 0300 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 2764 × 0308 × 0300 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 2764 × 200D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 2764 × 0308 × 200D ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 2764 ÷ 0061 × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2764 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2764 ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2764 ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2764 ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2764 ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 2764 ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 2764 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 2764 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 2764 × 0308 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] HEAVY BLACK HEART (Glue_After_Zwj) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F466 ÷ 0001 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0001 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 1F466 ÷ 000D ÷    #  ÷ [0.2] BOY (EBG) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 000D ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F466 ÷ 000A ÷    #  ÷ [0.2] BOY (EBG) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 000A ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F466 ÷ 000B ÷    #  ÷ [0.2] BOY (EBG) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 000B ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 1F466 ÷ 3031 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 3031 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 1F466 ÷ 0041 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0041 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 1F466 ÷ 003A ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 003A ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F466 ÷ 002C ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 002C ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F466 ÷ 002E ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 002E ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 1F466 ÷ 0030 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0030 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 1F466 ÷ 005F ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 005F ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 1F466 ÷ 1F1E6 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 1F1E6 ÷   #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 1F466 ÷ 05D0 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 05D0 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 1F466 ÷ 0022 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0022 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 1F466 ÷ 0027 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0027 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F466 ÷ 261D ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 261D ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F466 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1F466 × 0308 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 1F466 ÷ 2764 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 2764 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 1F466 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 1F466 × 00AD ÷    #  ÷ [0.2] BOY (EBG) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 1F466 × 0308 × 00AD ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 1F466 × 0300 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 1F466 × 0308 × 0300 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 1F466 × 200D ÷    #  ÷ [0.2] BOY (EBG) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 1F466 × 0308 × 200D ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 1F466 ÷ 0061 × 2060 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0061 × 2060 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F466 ÷ 0061 ÷ 003A ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0061 ÷ 003A ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F466 ÷ 0061 ÷ 0027 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0061 ÷ 0027 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F466 ÷ 0061 ÷ 0027 × 2060 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F466 ÷ 0061 ÷ 002C ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0061 ÷ 002C ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F466 ÷ 0031 ÷ 003A ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0031 ÷ 003A ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F466 ÷ 0031 ÷ 0027 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0031 ÷ 0027 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 1F466 ÷ 0031 ÷ 002C ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0031 ÷ 002C ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F466 ÷ 0031 ÷ 002E × 2060 ÷    #  ÷ [0.2] BOY (EBG) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F466 × 0308 ÷ 0031 ÷ 002E × 2060 ÷    #  ÷ [0.2] BOY (EBG) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 00AD ÷ 0001 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
 ÷ 00AD × 0308 ÷ 0001 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
 ÷ 00AD ÷ 000D ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 ÷ 00AD × 0308 ÷ 0030 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 00AD ÷ 005F ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 00AD × 0308 ÷ 005F ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 00AD ÷ 1F1E6 ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 00AD × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 00AD ÷ 1F1E6 ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 00AD × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 00AD ÷ 05D0 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 00AD × 0308 ÷ 05D0 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 00AD ÷ 0022 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 00AD × 0308 ÷ 0022 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 00AD ÷ 0027 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 00AD × 0308 ÷ 0027 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 00AD ÷ 261D ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 00AD × 0308 ÷ 261D ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 00AD ÷ 1F3FB ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 00AD × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 00AD ÷ 2764 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 00AD × 0308 ÷ 2764 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 00AD ÷ 1F466 ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 00AD × 0308 ÷ 1F466 ÷    #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 00AD × 00AD ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 00AD × 0308 × 00AD ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 00AD × 0300 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 00AD × 0308 × 0300 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 00AD × 200D ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 00AD × 0308 × 200D ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 00AD ÷ 0061 × 2060 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 00AD × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 00AD ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 0030 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0300 ÷ 005F ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 005F ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0300 ÷ 1F1E6 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0300 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0300 ÷ 1F1E6 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0300 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0300 ÷ 05D0 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 05D0 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0300 ÷ 0022 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 0022 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0300 ÷ 0027 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 0027 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0300 ÷ 261D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0300 × 0308 ÷ 261D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0300 ÷ 1F3FB ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0300 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0300 ÷ 2764 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0300 × 0308 ÷ 2764 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0300 ÷ 1F466 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0300 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0300 × 00AD ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0300 × 0308 × 00AD ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0300 × 0300 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0300 × 0308 × 0300 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0300 × 200D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0300 × 0308 × 200D ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0300 ÷ 0061 × 2060 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0300 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
 ÷ 0300 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0300 × 0308 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 200D ÷ 0001 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 200D × 0308 ÷ 0001 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 200D ÷ 000D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 200D × 0308 ÷ 000D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 200D ÷ 000A ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 200D × 0308 ÷ 000A ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 200D ÷ 000B ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 200D × 0308 ÷ 000B ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 200D ÷ 3031 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 200D × 0308 ÷ 3031 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 200D ÷ 0041 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 200D × 0308 ÷ 0041 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 200D ÷ 003A ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 200D × 0308 ÷ 003A ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 200D ÷ 002C ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 200D × 0308 ÷ 002C ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 200D ÷ 002E ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 200D × 0308 ÷ 002E ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] FULL STOP (MidNumLet) ÷ [0.3]
+÷ 200D ÷ 0030 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 200D × 0308 ÷ 0030 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 200D ÷ 005F ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 200D × 0308 ÷ 005F ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 200D ÷ 1F1E6 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 200D × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 200D ÷ 05D0 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 200D × 0308 ÷ 05D0 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
+÷ 200D ÷ 0022 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 200D × 0308 ÷ 0022 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
+÷ 200D ÷ 0027 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 200D × 0308 ÷ 0027 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 200D ÷ 261D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 200D × 0308 ÷ 261D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 200D ÷ 1F3FB ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 200D × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 200D × 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 0308 ÷ 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] BOY (EBG) ÷ [0.3]
+÷ 200D × 0308 ÷ 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 200D × 00AD ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 200D × 0308 × 00AD ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 200D × 0300 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 200D × 0308 × 0300 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 200D × 200D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 200D × 0308 × 200D ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 200D ÷ 0061 × 2060 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 200D × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 200D ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 200D × 0308 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 200D ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 200D × 0308 ÷ 0061 ÷ 0027 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 200D ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 200D × 0308 ÷ 0061 ÷ 0027 × 2060 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 200D ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 200D × 0308 ÷ 0061 ÷ 002C ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 200D ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 200D × 0308 ÷ 0031 ÷ 003A ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 200D ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 200D × 0308 ÷ 0031 ÷ 0027 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 200D ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 200D × 0308 ÷ 0031 ÷ 002C ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 200D ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 200D × 0308 ÷ 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0061 × 2060 ÷ 0001 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 ÷ 0001 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
 ÷ 0061 × 2060 ÷ 000D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 × 0030 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0061 × 2060 × 005F ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 × 005F ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0061 × 2060 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0061 × 2060 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0061 × 2060 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0061 × 2060 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0061 × 2060 × 05D0 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 × 05D0 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0061 × 2060 ÷ 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 ÷ 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0061 × 2060 ÷ 0027 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 ÷ 0027 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0061 × 2060 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0061 × 2060 × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0061 × 2060 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0061 × 2060 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0061 × 2060 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 × 2060 × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 × 2060 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0061 × 2060 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 × 2060 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 × 2060 × 0300 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 × 0300 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0061 × 2060 × 200D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0061 × 2060 × 0308 × 200D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0061 × 2060 × 0061 × 2060 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0061 × 2060 × 0308 × 0061 × 2060 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0061 × 2060 × 0061 ÷ 003A ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0061 ÷ 003A × 0308 ÷ 0030 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0061 ÷ 003A ÷ 005F ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0061 ÷ 003A × 0308 ÷ 005F ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0061 ÷ 003A ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0061 ÷ 003A × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0061 ÷ 003A × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0061 × 003A × 05D0 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0061 × 003A × 0308 × 05D0 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0061 ÷ 003A ÷ 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0061 ÷ 003A × 0308 ÷ 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0061 ÷ 003A ÷ 0027 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0061 ÷ 003A × 0308 ÷ 0027 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0061 ÷ 003A × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0061 ÷ 003A × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 003A × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0061 ÷ 003A × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 003A × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 003A × 0308 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 003A × 0300 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0061 ÷ 003A × 0308 × 0300 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0061 ÷ 003A × 200D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0061 ÷ 003A × 0308 × 200D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0061 × 003A × 0061 × 2060 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0061 × 003A × 0308 × 0061 × 2060 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0061 × 003A × 0061 ÷ 003A ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 0308 ÷ 0030 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0061 ÷ 0027 ÷ 005F ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 0308 ÷ 005F ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0061 ÷ 0027 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0061 ÷ 0027 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0061 ÷ 0027 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0061 × 0027 × 05D0 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [7.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0061 × 0027 × 0308 × 05D0 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0061 ÷ 0027 ÷ 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 0308 ÷ 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0061 ÷ 0027 ÷ 0027 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 0308 ÷ 0027 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0061 ÷ 0027 × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0061 ÷ 0027 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 0027 × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0061 ÷ 0027 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 0308 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 0300 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 0308 × 0300 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0061 ÷ 0027 × 200D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0061 ÷ 0027 × 0308 × 200D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0061 × 0027 × 0061 × 2060 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0061 × 0027 × 0308 × 0061 × 2060 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0061 × 0027 × 0061 ÷ 003A ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 0030 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 ÷ 005F ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 005F ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0061 ÷ 0027 × 2060 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0061 × 0027 × 2060 × 05D0 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [7.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0061 × 0027 × 2060 × 0308 × 05D0 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 ÷ 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 ÷ 0027 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 0027 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 0308 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 0300 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0061 ÷ 0027 × 2060 × 0308 × 0300 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 × 200D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 × 0308 × 200D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0061 × 0027 × 2060 × 0061 × 2060 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0061 × 0027 × 2060 × 0308 × 0061 × 2060 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [7.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0061 × 0027 × 2060 × 0061 ÷ 003A ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 ÷ 0030 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0061 ÷ 002C ÷ 005F ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 ÷ 005F ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0061 ÷ 002C ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0061 ÷ 002C × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0061 ÷ 002C × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0061 ÷ 002C ÷ 05D0 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 ÷ 05D0 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0061 ÷ 002C ÷ 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 ÷ 0022 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0061 ÷ 002C ÷ 0027 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 ÷ 0027 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0061 ÷ 002C × 0308 ÷ 261D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0061 ÷ 002C × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 002C × 0308 ÷ 2764 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0061 ÷ 002C × 0308 ÷ 1F466 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0061 ÷ 002C × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 × 00AD ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0300 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 × 0300 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0061 ÷ 002C × 200D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0061 ÷ 002C × 0308 × 200D ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0061 ÷ 002C ÷ 0061 × 2060 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 002C × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0061 ÷ 002C ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 ÷ 0030 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0031 ÷ 003A ÷ 005F ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 ÷ 005F ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0031 ÷ 003A ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0031 ÷ 003A × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0031 ÷ 003A × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0031 ÷ 003A ÷ 05D0 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 ÷ 05D0 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0031 ÷ 003A ÷ 0022 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 ÷ 0022 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0031 ÷ 003A ÷ 0027 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 ÷ 0027 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0031 ÷ 003A × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0031 ÷ 003A × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 003A × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0031 ÷ 003A × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 003A × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0300 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 × 0300 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0031 ÷ 003A × 200D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0031 ÷ 003A × 0308 × 200D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0031 ÷ 003A ÷ 0061 × 2060 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 003A × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 003A ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0031 × 0027 × 0308 × 0030 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) × [12.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0031 ÷ 0027 ÷ 005F ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0308 ÷ 005F ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0031 ÷ 0027 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0031 ÷ 0027 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0031 ÷ 0027 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0031 ÷ 0027 ÷ 05D0 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0308 ÷ 05D0 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0031 ÷ 0027 ÷ 0022 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0308 ÷ 0022 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0031 ÷ 0027 ÷ 0027 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0308 ÷ 0027 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0031 ÷ 0027 × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0031 ÷ 0027 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 0027 × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0031 ÷ 0027 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0308 × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0300 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0308 × 0300 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0031 ÷ 0027 × 200D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0031 ÷ 0027 × 0308 × 200D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0031 ÷ 0027 ÷ 0061 × 2060 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 0027 × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 0027 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0031 × 002C × 0308 × 0030 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0031 ÷ 002C ÷ 005F ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0308 ÷ 005F ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0031 ÷ 002C ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0031 ÷ 002C × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0031 ÷ 002C × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0031 ÷ 002C ÷ 05D0 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0308 ÷ 05D0 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0031 ÷ 002C ÷ 0022 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0308 ÷ 0022 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0031 ÷ 002C ÷ 0027 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0308 ÷ 0027 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0031 ÷ 002C × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0031 ÷ 002C × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 002C × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0031 ÷ 002C × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 002C × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0308 × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0300 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0308 × 0300 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0031 ÷ 002C × 200D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0031 ÷ 002C × 0308 × 200D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0031 ÷ 002C ÷ 0061 × 2060 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 002C × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 002C ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0031 × 002E × 2060 × 0308 × 0030 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 ÷ 005F ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 005F ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
-÷ 0031 ÷ 002E × 2060 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
-÷ 0031 ÷ 002E × 2060 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 × 0308 ÷ 1F1E6 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 ÷ 05D0 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 05D0 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 ÷ 0022 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 0022 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] QUOTATION MARK (Double_Quote) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 ÷ 0027 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 0027 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (Single_Quote) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 × 0308 ÷ 261D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 × 0308 ÷ 1F3FB ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 × 0308 ÷ 2764 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 × 0308 ÷ 1F466 ÷    #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] BOY (EBG) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0308 × 00AD ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0300 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0308 × 0300 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 × 200D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 × 0308 × 200D ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 ÷ 0061 × 2060 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 × 0308 ÷ 0061 × 2060 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0031 ÷ 002E × 2060 ÷ 0061 ÷ 003A ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
 ÷ 0031 × 002E × 2060 × 0308 × 0031 ÷ 002C ÷     #  ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
 ÷ 0031 × 002E × 2060 × 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
 ÷ 0031 × 002E × 2060 × 0308 × 0031 ÷ 002E × 2060 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 0063 × 0061 × 006E × 0027 × 0074 ÷     #  ÷ [0.2] LATIN SMALL LETTER C (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER N (ALetter) × [6.0] APOSTROPHE (Single_Quote) × [7.0] LATIN SMALL LETTER T (ALetter) ÷ [0.3]
-÷ 0063 × 0061 × 006E × 2019 × 0074 ÷     #  ÷ [0.2] LATIN SMALL LETTER C (ALetter) × [5.0] LATIN SMALL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER N (ALetter) × [6.0] RIGHT SINGLE QUOTATION MARK (MidNumLet) × [7.0] LATIN SMALL LETTER T (ALetter) ÷ [0.3]
-÷ 0061 × 0062 × 00AD × 0062 × 0079 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [5.0] LATIN SMALL LETTER B (ALetter) × [4.0] SOFT HYPHEN (Format_FE) × [5.0] LATIN SMALL LETTER B (ALetter) × [5.0] LATIN SMALL LETTER Y (ALetter) ÷ [0.3]
-÷ 0061 ÷ 0024 ÷ 002D ÷ 0033 × 0034 × 002C × 0035 × 0036 × 0037 × 002E × 0031 × 0034 ÷ 0025 ÷ 0062 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] DOLLAR SIGN (Other) ÷ [999.0] HYPHEN-MINUS (Other) ÷ [999.0] DIGIT THREE (Numeric) × [8.0] DIGIT FOUR (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT FIVE (Numeric) × [8.0] DIGIT SIX (Numeric) × [8.0] DIGIT SEVEN (Numeric) × [12.0] FULL STOP (MidNumLet) × [11.0] DIGIT ONE (Numeric) × [8.0] DIGIT FOUR (Numeric) ÷ [999.0] PERCENT SIGN (Other) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3]
-÷ 0033 × 0061 ÷     #  ÷ [0.2] DIGIT THREE (Numeric) × [10.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3]
-÷ 0063 × 002E × 0064 ÷     #  ÷ [0.2] LATIN SMALL LETTER C (ALetter) × [6.0] FULL STOP (MidNumLet) × [7.0] LATIN SMALL LETTER D (ALetter) ÷ [0.3]
-÷ 0043 × 002E × 0064 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER C (ALetter) × [6.0] FULL STOP (MidNumLet) × [7.0] LATIN SMALL LETTER D (ALetter) ÷ [0.3]
-÷ 0063 × 002E × 0044 ÷     #  ÷ [0.2] LATIN SMALL LETTER C (ALetter) × [6.0] FULL STOP (MidNumLet) × [7.0] LATIN CAPITAL LETTER D (ALetter) ÷ [0.3]
-÷ 0043 × 002E × 0044 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER C (ALetter) × [6.0] FULL STOP (MidNumLet) × [7.0] LATIN CAPITAL LETTER D (ALetter) ÷ [0.3]
-÷ 2060 ÷ 0063 × 2060 × 0061 × 2060 × 006E × 2060 × 0027 × 2060 × 0074 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER C (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER N (ALetter) × [4.0] WORD JOINER (Format_FE) × [6.0] APOSTROPHE (Single_Quote) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER T (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 ÷ 0063 × 2060 × 0061 × 2060 × 006E × 2060 × 2019 × 2060 × 0074 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER C (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER N (ALetter) × [4.0] WORD JOINER (Format_FE) × [6.0] RIGHT SINGLE QUOTATION MARK (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER T (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 ÷ 0061 × 2060 × 0062 × 2060 × 00AD × 2060 × 0062 × 2060 × 0079 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER B (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER B (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER Y (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 ÷ 0061 × 2060 ÷ 0024 × 2060 ÷ 002D × 2060 ÷ 0033 × 2060 × 0034 × 2060 × 002C × 2060 × 0035 × 2060 × 0036 × 2060 × 0037 × 2060 × 002E × 2060 × 0031 × 2060 × 0034 × 2060 ÷ 0025 × 2060 ÷ 0062 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] DOLLAR SIGN (Other) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HYPHEN-MINUS (Other) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] DIGIT THREE (Numeric) × [4.0] WORD JOINER (Format_FE) × [8.0] DIGIT FOUR (Numeric) × [4.0] WORD JOINER (Format_FE) × [12.0] COMMA (MidNum) × [4.0] WORD JOINER (Format_FE) × [11.0] DIGIT FIVE (Numeric) × [4.0] WORD JOINER (Format_FE) × [8.0] DIGIT SIX (Numeric) × [4.0] WORD JOINER (Format_FE) × [8.0] DIGIT SEVEN (Numeric) × [4.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [11.0] DIGIT ONE (Numeric) × [4.0] WORD JOINER (Format_FE) × [8.0] DIGIT FOUR (Numeric) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] PERCENT SIGN (Other) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER B (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 ÷ 0033 × 2060 × 0061 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] DIGIT THREE (Numeric) × [4.0] WORD JOINER (Format_FE) × [10.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 ÷ 0063 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER C (ALetter) × [4.0] WORD JOINER (Format_FE) × [6.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER D (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 ÷ 0043 × 2060 × 002E × 2060 × 0064 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN CAPITAL LETTER C (ALetter) × [4.0] WORD JOINER (Format_FE) × [6.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN SMALL LETTER D (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 ÷ 0063 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER C (ALetter) × [4.0] WORD JOINER (Format_FE) × [6.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 2060 ÷ 0043 × 2060 × 002E × 2060 × 0044 × 2060 × 2060 ÷     #  ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN CAPITAL LETTER C (ALetter) × [4.0] WORD JOINER (Format_FE) × [6.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [7.0] LATIN CAPITAL LETTER D (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-÷ 0061 ÷ 1F1E6 ÷ 0062 ÷    #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3]
-÷ 1F1F7 × 1F1FA ÷   #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) ÷ [0.3]
-÷ 1F1F7 × 1F1FA × 1F1F8 ÷  #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER S (Regional_Indicator) ÷ [0.3]
-÷ 1F1F7 × 1F1FA × 1F1F8 × 1F1EA ÷ #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER S (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER E (Regional_Indicator) ÷ [0.3]
-÷ 1F1F7 × 1F1FA ÷ 200B ÷ 1F1F8 × 1F1EA ÷ #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) ÷ [999.0] ZERO WIDTH SPACE (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER S (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER E (Regional_Indicator) ÷ [0.3]
+÷ 000D × 000A ÷ 0061 ÷ 000A ÷ 0308 ÷     #  ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) × [3.0] <LINE FEED (LF)> (LF) ÷ [3.1] LATIN SMALL LETTER A (ALetter) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [0.3]
+÷ 0061 × 0308 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [0.3]
+÷ 0020 × 200D ÷ 0646 ÷     #  ÷ [0.2] SPACE (Other) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] ARABIC LETTER NOON (ALetter) ÷ [0.3]
+÷ 0646 × 200D ÷ 0020 ÷     #  ÷ [0.2] ARABIC LETTER NOON (ALetter) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0041 × 0041 × 0041 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN CAPITAL LETTER A (ALetter) × [5.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0041 × 003A × 0041 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [6.0] COLON (MidLetter) × [7.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0041 ÷ 003A ÷ 003A ÷ 0041 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 05D0 × 0027 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [7.1] APOSTROPHE (Single_Quote) ÷ [0.3]
 ÷ 05D0 × 0022 × 05D0 ÷     #  ÷ [0.2] HEBREW LETTER ALEF (Hebrew_Letter) × [7.2] QUOTATION MARK (Double_Quote) × [7.3] HEBREW LETTER ALEF (Hebrew_Letter) ÷ [0.3]
-÷ 1F1E6 × 1F1E7 × 1F1E8 ÷  #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER B (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER C (Regional_Indicator) ÷ [0.3]
-÷ 1F1E6 × 200D × 1F1E7 × 1F1E8 ÷  #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] ZERO WIDTH JOINER (Extend_FE) × [13.3] REGIONAL INDICATOR SYMBOL LETTER B (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER C (Regional_Indicator) ÷ [0.3]
-÷ 1F1E6 × 1F1E7 × 200D × 1F1E8 ÷  #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER B (Regional_Indicator) × [4.0] ZERO WIDTH JOINER (Extend_FE) × [13.3] REGIONAL INDICATOR SYMBOL LETTER C (Regional_Indicator) ÷ [0.3]
-÷ 0020 × 200D ÷ 0646 ÷     #  ÷ [0.2] SPACE (Other) × [4.0] ZERO WIDTH JOINER (Extend_FE) ÷ [999.0] ARABIC LETTER NOON (ALetter) ÷ [0.3]
-÷ 0646 × 200D ÷ 0020 ÷     #  ÷ [0.2] ARABIC LETTER NOON (ALetter) × [4.0] ZERO WIDTH JOINER (Extend_FE) ÷ [999.0] SPACE (Other) ÷ [0.3]
+÷ 0041 × 0030 × 0030 × 0041 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [9.0] DIGIT ZERO (Numeric) × [8.0] DIGIT ZERO (Numeric) × [10.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 0030 × 002C × 0030 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) × [12.0] COMMA (MidNum) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 0030 ÷ 002C ÷ 002C ÷ 0030 ÷     #  ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 3031 × 3031 ÷     #  ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [13.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 0041 × 005F × 0030 × 005F × 3031 × 005F ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ZERO (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] VERTICAL KANA REPEAT MARK (Katakana) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0041 × 005F × 005F × 0041 ÷     #  ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷  #  ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [15.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3]
+÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷  #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [16.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3]
+÷ 0061 ÷ 1F1E6 × 1F1E7 × 200D ÷ 1F1E8 ÷ 0062 ÷  #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [16.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3]
+÷ 0061 ÷ 1F1E6 × 200D × 1F1E7 ÷ 1F1E8 ÷ 0062 ÷  #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) × [16.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3]
+÷ 0061 ÷ 1F1E6 × 1F1E7 ÷ 1F1E8 × 1F1E9 ÷ 0062 ÷ #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (RI) × [16.0] REGIONAL INDICATOR SYMBOL LETTER B (RI) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER C (RI) × [16.0] REGIONAL INDICATOR SYMBOL LETTER D (RI) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3]
+÷ 261D × 1F3FB ÷ 261D ÷    #  ÷ [0.2] WHITE UP POINTING INDEX (E_Base) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [999.0] WHITE UP POINTING INDEX (E_Base) ÷ [0.3]
+÷ 1F466 × 1F3FB ÷   #  ÷ [0.2] BOY (EBG) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 200D × 1F466 × 1F3FB ÷   #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] BOY (EBG) × [14.0] EMOJI MODIFIER FITZPATRICK TYPE-1-2 (E_Modifier) ÷ [0.3]
+÷ 200D × 2764 ÷     #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] HEAVY BLACK HEART (Glue_After_Zwj) ÷ [0.3]
+÷ 200D × 1F466 ÷    #  ÷ [0.2] ZERO WIDTH JOINER (ZWJ_FE) × [3.3] BOY (EBG) ÷ [0.3]
+÷ 1F466 ÷ 1F466 ÷   #  ÷ [0.2] BOY (EBG) ÷ [999.0] BOY (EBG) ÷ [0.3]
+÷ 0061 × 0308 × 200D × 0308 × 0062 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] ZERO WIDTH JOINER (ZWJ_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [5.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3]
 ÷ 0031 ÷ 003A ÷ 003A ÷ 0031 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3]
 ÷ 0031 × 005F × 0031 ÷ 003A ÷ 003A ÷ 0031 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3]
 ÷ 0031 × 005F × 0061 ÷ 003A ÷ 003A ÷ 0031 ÷     #  ÷ [0.2] DIGIT ONE (Numeric) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] DIGIT ONE (Numeric) ÷ [0.3]
 ÷ 0061 × 005F × 0031 ÷ 002C ÷ 002C ÷ 0061 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3]
 ÷ 0061 × 005F × 0061 ÷ 002C ÷ 002C ÷ 0061 ÷     #  ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) × [13.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [0.3]
 #
-# Lines: 1489
+# Lines: 2057
 #
 # EOF
index dc8e820..6ccba54 100644 (file)
@@ -1,10 +1,11 @@
-# WordBreakProperty-8.0.0.txt
-# Date: 2015-02-14, 10:26:15 GMT [MD]
+# WordBreakProperty-9.0.0.txt
+# Date: 2016-06-01, 10:34:38 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
@@ -89,6 +90,7 @@ FB46..FB4F    ; Hebrew_Letter # Lo  [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW
 0825..0827    ; Extend # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
 0829..082D    ; Extend # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
 0859..085B    ; Extend # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+08D4..08E1    ; Extend # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
 08E3..0902    ; Extend # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
 0903          ; Extend # Mc       DEVANAGARI SIGN VISARGA
 093A          ; Extend # Mn       DEVANAGARI VOWEL SIGN OE
@@ -243,6 +245,7 @@ FB46..FB4F    ; Hebrew_Letter # Lo  [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW
 17C9..17D3    ; Extend # Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
 17DD          ; Extend # Mn       KHMER SIGN ATTHACAN
 180B..180D    ; Extend # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+1885..1886    ; Extend # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
 18A9          ; Extend # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 1920..1922    ; Extend # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
 1923..1926    ; Extend # Mc   [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
@@ -309,8 +312,8 @@ FB46..FB4F    ; Hebrew_Letter # Lo  [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW
 1CF4          ; Extend # Mn       VEDIC TONE CANDRA ABOVE
 1CF8..1CF9    ; Extend # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
 1DC0..1DF5    ; Extend # Mn  [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF    ; Extend # Mn   [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
-200C..200D    ; Extend # Cf   [2] ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
+1DFB..1DFF    ; Extend # Mn   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+200C          ; Extend # Cf       ZERO WIDTH NON-JOINER
 20D0..20DC    ; Extend # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
 20DD..20E0    ; Extend # Me   [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
 20E1          ; Extend # Mn       COMBINING LEFT RIGHT ARROW ABOVE
@@ -335,7 +338,7 @@ A825..A826    ; Extend # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL
 A827          ; Extend # Mc       SYLOTI NAGRI VOWEL SIGN OO
 A880..A881    ; Extend # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
 A8B4..A8C3    ; Extend # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
-A8C4          ; Extend # Mn       SAURASHTRA SIGN VIRAMA
+A8C4..A8C5    ; Extend # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8E0..A8F1    ; Extend # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
 A926..A92D    ; Extend # Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
 A947..A951    ; Extend # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
@@ -417,6 +420,7 @@ FF9E..FF9F    ; Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
 11234         ; Extend # Mn       KHOJKI SIGN ANUSVARA
 11235         ; Extend # Mc       KHOJKI SIGN VIRAMA
 11236..11237  ; Extend # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E         ; Extend # Mn       KHOJKI SIGN SUKUN
 112DF         ; Extend # Mn       KHUDAWADI SIGN ANUSVARA
 112E0..112E2  ; Extend # Mc   [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
 112E3..112EA  ; Extend # Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
@@ -432,6 +436,12 @@ FF9E..FF9F    ; Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
 11362..11363  ; Extend # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
 11366..1136C  ; Extend # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; Extend # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11435..11437  ; Extend # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F  ; Extend # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441  ; Extend # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11442..11444  ; Extend # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11445         ; Extend # Mc       NEWA SIGN VISARGA
+11446         ; Extend # Mn       NEWA SIGN NUKTA
 114B0..114B2  ; Extend # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B3..114B8  ; Extend # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
 114B9         ; Extend # Mc       TIRHUTA VOWEL SIGN E
@@ -465,6 +475,18 @@ FF9E..FF9F    ; Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
 11722..11725  ; Extend # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
 11726         ; Extend # Mc       AHOM VOWEL SIGN E
 11727..1172B  ; Extend # Mn   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+11C2F         ; Extend # Mc       BHAIKSUKI VOWEL SIGN AA
+11C30..11C36  ; Extend # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; Extend # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3E         ; Extend # Mc       BHAIKSUKI SIGN VISARGA
+11C3F         ; Extend # Mn       BHAIKSUKI SIGN VIRAMA
+11C92..11CA7  ; Extend # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9         ; Extend # Mc       MARCHEN SUBJOINED LETTER YA
+11CAA..11CB0  ; Extend # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB1         ; Extend # Mc       MARCHEN VOWEL SIGN I
+11CB2..11CB3  ; Extend # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4         ; Extend # Mc       MARCHEN VOWEL SIGN O
+11CB5..11CB6  ; Extend # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 16AF0..16AF4  ; Extend # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
 16B30..16B36  ; Extend # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
 16F51..16F7E  ; Extend # Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
@@ -483,10 +505,17 @@ FF9E..FF9F    ; Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDT
 1DA84         ; Extend # Mn       SIGNWRITING LOCATION HEAD NECK
 1DA9B..1DA9F  ; Extend # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF  ; Extend # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006  ; Extend # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; Extend # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; Extend # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; Extend # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; Extend # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E8D0..1E8D6  ; Extend # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E944..1E94A  ; Extend # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+E0020..E007F  ; Extend # Cf  [96] TAG SPACE..CANCEL TAG
 E0100..E01EF  ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 
-# Total code points: 1967
+# Total code points: 2196
 
 # ================================================
 
@@ -501,6 +530,7 @@ E0100..E01EF  ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 061C          ; Format # Cf       ARABIC LETTER MARK
 06DD          ; Format # Cf       ARABIC END OF AYAH
 070F          ; Format # Cf       SYRIAC ABBREVIATION MARK
+08E2          ; Format # Cf       ARABIC DISPUTED END OF AYAH
 180E          ; Format # Cf       MONGOLIAN VOWEL SEPARATOR
 200E..200F    ; Format # Cf   [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
 202A..202E    ; Format # Cf   [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
@@ -512,9 +542,8 @@ FFF9..FFFB    ; Format # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANN
 1BCA0..1BCA3  ; Format # Cf   [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
 1D173..1D17A  ; Format # Cf   [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
 E0001         ; Format # Cf       LANGUAGE TAG
-E0020..E007F  ; Format # Cf  [96] TAG SPACE..CANCEL TAG
 
-# Total code points: 147
+# Total code points: 52
 
 # ================================================
 
@@ -595,6 +624,7 @@ FF71..FF9D    ; Katakana # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK
 0828          ; ALetter # Lm       SAMARITAN MODIFIER LETTER I
 0840..0858    ; ALetter # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
 08A0..08B4    ; ALetter # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD    ; ALetter # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
 0904..0939    ; ALetter # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
 093D          ; ALetter # Lo       DEVANAGARI SIGN AVAGRAHA
 0950          ; ALetter # Lo       DEVANAGARI OM
@@ -660,6 +690,7 @@ FF71..FF9D    ; Katakana # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK
 0C3D          ; ALetter # Lo       TELUGU SIGN AVAGRAHA
 0C58..0C5A    ; ALetter # Lo   [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
 0C60..0C61    ; ALetter # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C80          ; ALetter # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C85..0C8C    ; ALetter # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0C8E..0C90    ; ALetter # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
 0C92..0CA8    ; ALetter # Lo  [23] KANNADA LETTER O..KANNADA LETTER NA
@@ -674,6 +705,7 @@ FF71..FF9D    ; Katakana # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK
 0D12..0D3A    ; ALetter # Lo  [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
 0D3D          ; ALetter # Lo       MALAYALAM SIGN AVAGRAHA
 0D4E          ; ALetter # Lo       MALAYALAM LETTER DOT REPH
+0D54..0D56    ; ALetter # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D5F..0D61    ; ALetter # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D7A..0D7F    ; ALetter # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 0D85..0D96    ; ALetter # Lo  [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
@@ -724,7 +756,8 @@ FF71..FF9D    ; Katakana # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK
 1820..1842    ; ALetter # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; ALetter # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877    ; ALetter # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; ALetter # Lo  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; ALetter # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1887..18A8    ; ALetter # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18AA          ; ALetter # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5    ; ALetter # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
 1900..191E    ; ALetter # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
@@ -738,6 +771,7 @@ FF71..FF9D    ; Katakana # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK
 1C4D..1C4F    ; ALetter # Lo   [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
 1C5A..1C77    ; ALetter # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
 1C78..1C7D    ; ALetter # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+1C80..1C88    ; ALetter # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1CE9..1CEC    ; ALetter # Lo   [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
 1CEE..1CF1    ; ALetter # Lo   [4] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ANUSVARA UBHAYATO MUKHA
 1CF5..1CF6    ; ALetter # Lo   [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
@@ -839,7 +873,7 @@ A771..A787    ; ALetter # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER IN
 A788          ; ALetter # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
 A78B..A78E    ; ALetter # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; ALetter # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AD    ; ALetter # L&  [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE    ; ALetter # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; ALetter # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7          ; ALetter # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; ALetter # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -915,6 +949,8 @@ FFDA..FFDC    ; ALetter # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 103D1..103D5  ; ALetter # Nl   [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
 10400..1044F  ; ALetter # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
 10450..1049D  ; ALetter # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+104B0..104D3  ; ALetter # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; ALetter # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10500..10527  ; ALetter # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
 10530..10563  ; ALetter # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
 10600..10736  ; ALetter # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
@@ -976,6 +1012,8 @@ FFDA..FFDC    ; ALetter # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 1133D         ; ALetter # Lo       GRANTHA SIGN AVAGRAHA
 11350         ; ALetter # Lo       GRANTHA OM
 1135D..11361  ; ALetter # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+11400..11434  ; ALetter # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+11447..1144A  ; ALetter # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
 11480..114AF  ; ALetter # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114C4..114C5  ; ALetter # Lo   [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
 114C7         ; ALetter # Lo       TIRHUTA OM
@@ -987,6 +1025,10 @@ FFDA..FFDC    ; ALetter # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 118A0..118DF  ; ALetter # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
 118FF         ; ALetter # Lo       WARANG CITI OM
 11AC0..11AF8  ; ALetter # Lo  [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08  ; ALetter # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; ALetter # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C40         ; ALetter # Lo       BHAIKSUKI SIGN AVAGRAHA
+11C72..11C8F  ; ALetter # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
 12000..12399  ; ALetter # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E  ; ALetter # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12480..12543  ; ALetter # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
@@ -1002,6 +1044,7 @@ FFDA..FFDC    ; ALetter # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 16F00..16F44  ; ALetter # Lo  [69] MIAO LETTER PA..MIAO LETTER HHA
 16F50         ; ALetter # Lo       MIAO LETTER NASALIZATION
 16F93..16F9F  ; ALetter # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0         ; ALetter # Lm       TANGUT ITERATION MARK
 1BC00..1BC6A  ; ALetter # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
 1BC70..1BC7C  ; ALetter # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
 1BC80..1BC88  ; ALetter # Lo   [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
@@ -1037,6 +1080,7 @@ FFDA..FFDC    ; ALetter # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 1D7AA..1D7C2  ; ALetter # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
 1D7C4..1D7CB  ; ALetter # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
 1E800..1E8C4  ; ALetter # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
+1E900..1E943  ; ALetter # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
 1EE00..1EE03  ; ALetter # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
 1EE05..1EE1F  ; ALetter # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
 1EE21..1EE22  ; ALetter # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -1074,7 +1118,7 @@ FFDA..FFDC    ; ALetter # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL
 1F150..1F169  ; ALetter # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
 1F170..1F189  ; ALetter # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
 
-# Total code points: 27697
+# Total code points: 27992
 
 # ================================================
 
@@ -1166,26 +1210,89 @@ ABF0..ABF9    ; Numeric # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT N
 11136..1113F  ; Numeric # Nd  [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
 111D0..111D9  ; Numeric # Nd  [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
 112F0..112F9  ; Numeric # Nd  [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
+11450..11459  ; Numeric # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
 114D0..114D9  ; Numeric # Nd  [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
 11650..11659  ; Numeric # Nd  [10] MODI DIGIT ZERO..MODI DIGIT NINE
 116C0..116C9  ; Numeric # Nd  [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
 11730..11739  ; Numeric # Nd  [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
 118E0..118E9  ; Numeric # Nd  [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
+11C50..11C59  ; Numeric # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
 16A60..16A69  ; Numeric # Nd  [10] MRO DIGIT ZERO..MRO DIGIT NINE
 16B50..16B59  ; Numeric # Nd  [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
 1D7CE..1D7FF  ; Numeric # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+1E950..1E959  ; Numeric # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
 
-# Total code points: 541
+# Total code points: 571
 
 # ================================================
 
 005F          ; ExtendNumLet # Pc       LOW LINE
+202F          ; ExtendNumLet # Zs       NARROW NO-BREAK SPACE
 203F..2040    ; ExtendNumLet # Pc   [2] UNDERTIE..CHARACTER TIE
 2054          ; ExtendNumLet # Pc       INVERTED UNDERTIE
 FE33..FE34    ; ExtendNumLet # Pc   [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
 FE4D..FE4F    ; ExtendNumLet # Pc   [3] DASHED LOW LINE..WAVY LOW LINE
 FF3F          ; ExtendNumLet # Pc       FULLWIDTH LOW LINE
 
-# Total code points: 10
+# Total code points: 11
+
+# ================================================
+
+261D          ; E_Base # So       WHITE UP POINTING INDEX
+26F9          ; E_Base # So       PERSON WITH BALL
+270A..270D    ; E_Base # So   [4] RAISED FIST..WRITING HAND
+1F385         ; E_Base # So       FATHER CHRISTMAS
+1F3C3..1F3C4  ; E_Base # So   [2] RUNNER..SURFER
+1F3CA..1F3CB  ; E_Base # So   [2] SWIMMER..WEIGHT LIFTER
+1F442..1F443  ; E_Base # So   [2] EAR..NOSE
+1F446..1F450  ; E_Base # So  [11] WHITE UP POINTING BACKHAND INDEX..OPEN HANDS SIGN
+1F46E         ; E_Base # So       POLICE OFFICER
+1F470..1F478  ; E_Base # So   [9] BRIDE WITH VEIL..PRINCESS
+1F47C         ; E_Base # So       BABY ANGEL
+1F481..1F483  ; E_Base # So   [3] INFORMATION DESK PERSON..DANCER
+1F485..1F487  ; E_Base # So   [3] NAIL POLISH..HAIRCUT
+1F4AA         ; E_Base # So       FLEXED BICEPS
+1F575         ; E_Base # So       SLEUTH OR SPY
+1F57A         ; E_Base # So       MAN DANCING
+1F590         ; E_Base # So       RAISED HAND WITH FINGERS SPLAYED
+1F595..1F596  ; E_Base # So   [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
+1F645..1F647  ; E_Base # So   [3] FACE WITH NO GOOD GESTURE..PERSON BOWING DEEPLY
+1F64B..1F64F  ; E_Base # So   [5] HAPPY PERSON RAISING ONE HAND..PERSON WITH FOLDED HANDS
+1F6A3         ; E_Base # So       ROWBOAT
+1F6B4..1F6B6  ; E_Base # So   [3] BICYCLIST..PEDESTRIAN
+1F6C0         ; E_Base # So       BATH
+1F918..1F91E  ; E_Base # So   [7] SIGN OF THE HORNS..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+1F926         ; E_Base # So       FACE PALM
+1F930         ; E_Base # So       PREGNANT WOMAN
+1F933..1F939  ; E_Base # So   [7] SELFIE..JUGGLING
+1F93C..1F93E  ; E_Base # So   [3] WRESTLERS..HANDBALL
+
+# Total code points: 79
+
+# ================================================
+
+1F3FB..1F3FF  ; E_Modifier # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
+
+# Total code points: 5
+
+# ================================================
+
+200D          ; ZWJ # Cf       ZERO WIDTH JOINER
+
+# Total code points: 1
+
+# ================================================
+
+2764          ; Glue_After_Zwj # So       HEAVY BLACK HEART
+1F48B         ; Glue_After_Zwj # So       KISS MARK
+1F5E8         ; Glue_After_Zwj # So       LEFT SPEECH BUBBLE
+
+# Total code points: 3
+
+# ================================================
+
+1F466..1F469  ; E_Base_GAZ # So   [4] BOY..WOMAN
+
+# Total code points: 4
 
 # EOF
index 9ec885e..451cef2 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedBidiClass-8.0.0.txt
-# Date: 2015-02-13, 13:47:08 GMT [MD]
+# DerivedBidiClass-9.0.0.txt
+# Date: 2016-06-01, 10:34:22 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
 0C60..0C61    ; L # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
 0C66..0C6F    ; L # Nd  [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
 0C7F          ; L # So       TELUGU SIGN TUUMU
+0C80          ; L # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C82..0C83    ; L # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
 0C85..0C8C    ; L # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0C8E..0C90    ; L # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
 0D46..0D48    ; L # Mc   [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
 0D4A..0D4C    ; L # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
 0D4E          ; L # Lo       MALAYALAM LETTER DOT REPH
+0D4F          ; L # So       MALAYALAM SIGN PARA
+0D54..0D56    ; L # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D57          ; L # Mc       MALAYALAM AU LENGTH MARK
+0D58..0D5E    ; L # No   [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
 0D5F..0D61    ; L # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D66..0D6F    ; L # Nd  [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
-0D70..0D75    ; L # No   [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
+0D70..0D78    ; L # No   [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
 0D79          ; L # So       MALAYALAM DATE MARK
 0D7A..0D7F    ; L # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 0D82..0D83    ; L # Mc   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
 1820..1842    ; L # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; L # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877    ; L # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; L # Lo  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; L # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1887..18A8    ; L # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18AA          ; L # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5    ; L # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
 1900..191E    ; L # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
 1C5A..1C77    ; L # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
 1C78..1C7D    ; L # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
 1C7E..1C7F    ; L # Po   [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
+1C80..1C88    ; L # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1CC0..1CC7    ; L # Po   [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
 1CD3          ; L # Po       VEDIC SIGN NIHSHVASA
 1CE1          ; L # Mc       VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
@@ -592,7 +599,7 @@ A771..A787    ; L # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR
 A789..A78A    ; L # Sk   [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
 A78B..A78E    ; L # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; L # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AD    ; L # L&  [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE    ; L # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; L # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7          ; L # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; L # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -715,6 +722,7 @@ FFDA..FFDC    ; L # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER
 10102         ; L # Po       AEGEAN CHECK MARK
 10107..10133  ; L # No  [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
 10137..1013F  ; L # So   [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
+1018D..1018E  ; L # So   [2] GREEK INDICTION SIGN..NOMISMA SIGN
 101D0..101FC  ; L # So  [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
 10280..1029C  ; L # Lo  [29] LYCIAN LETTER A..LYCIAN LETTER X
 102A0..102D0  ; L # Lo  [49] CARIAN LETTER A..CARIAN LETTER UUU3
@@ -734,6 +742,8 @@ FFDA..FFDC    ; L # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER
 10400..1044F  ; L # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
 10450..1049D  ; L # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
 104A0..104A9  ; L # Nd  [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+104B0..104D3  ; L # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; L # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10500..10527  ; L # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
 10530..10563  ; L # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
 1056F         ; L # Po       CAUCASIAN ALBANIAN CITATION MARK
@@ -805,6 +815,15 @@ FFDA..FFDC    ; L # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER
 11357         ; L # Mc       GRANTHA AU LENGTH MARK
 1135D..11361  ; L # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
 11362..11363  ; L # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11400..11434  ; L # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+11435..11437  ; L # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11440..11441  ; L # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11445         ; L # Mc       NEWA SIGN VISARGA
+11447..1144A  ; L # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+1144B..1144F  ; L # Po   [5] NEWA DANDA..NEWA ABBREVIATION SIGN
+11450..11459  ; L # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
+1145B         ; L # Po       NEWA PLACEHOLDER MARK
+1145D         ; L # Po       NEWA INSERTION SIGN
 11480..114AF  ; L # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114B0..114B2  ; L # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B9         ; L # Mc       TIRHUTA VOWEL SIGN E
@@ -844,6 +863,20 @@ FFDA..FFDC    ; L # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER
 118EA..118F2  ; L # No   [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
 118FF         ; L # Lo       WARANG CITI OM
 11AC0..11AF8  ; L # Lo  [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08  ; L # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; L # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C2F         ; L # Mc       BHAIKSUKI VOWEL SIGN AA
+11C3E         ; L # Mc       BHAIKSUKI SIGN VISARGA
+11C3F         ; L # Mn       BHAIKSUKI SIGN VIRAMA
+11C40         ; L # Lo       BHAIKSUKI SIGN AVAGRAHA
+11C41..11C45  ; L # Po   [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2
+11C50..11C59  ; L # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+11C5A..11C6C  ; L # No  [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
+11C70..11C71  ; L # Po   [2] MARCHEN HEAD MARK..MARCHEN MARK SHAD
+11C72..11C8F  ; L # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+11CA9         ; L # Mc       MARCHEN SUBJOINED LETTER YA
+11CB1         ; L # Mc       MARCHEN VOWEL SIGN I
+11CB4         ; L # Mc       MARCHEN VOWEL SIGN O
 12000..12399  ; L # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E  ; L # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12470..12474  ; L # Po   [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
@@ -870,6 +903,9 @@ FFDA..FFDC    ; L # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER
 16F50         ; L # Lo       MIAO LETTER NASALIZATION
 16F51..16F7E  ; L # Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
 16F93..16F9F  ; L # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0         ; L # Lm       TANGUT ITERATION MARK
+17000..187EC  ; L # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; L # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B000..1B001  ; L # Lo   [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
 1BC00..1BC6A  ; L # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
 1BC70..1BC7C  ; L # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
@@ -930,9 +966,9 @@ FFDA..FFDC    ; L # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER
 1DA87..1DA8B  ; L # Po   [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS
 1F110..1F12E  ; L # So  [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
 1F130..1F169  ; L # So  [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
-1F170..1F19A  ; L # So  [43] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VS
+1F170..1F1AC  ; L # So  [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD
 1F1E6..1F202  ; L # So  [29] REGIONAL INDICATOR SYMBOL LETTER A..SQUARED KATAKANA SA
-1F210..1F23A  ; L # So  [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
+1F210..1F23B  ; L # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
 1F240..1F248  ; L # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
 1F250..1F251  ; L # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
 20000..2A6D6  ; L # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
@@ -943,8 +979,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 848999 code points not listed here.
-# Total code points: 1097474
+# The above property value applies to 841609 code points not listed here.
+# Total code points: 1097280
 
 # ================================================
 
@@ -1084,10 +1120,16 @@ FB46..FB4F    ; R # Lo  [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE AL
 1E800..1E8C4  ; R # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
 1E8C5..1E8C6  ; R # Cn   [2] <reserved-1E8C5>..<reserved-1E8C6>
 1E8C7..1E8CF  ; R # No   [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
-1E8D7..1EDFF  ; R # Cn [1321] <reserved-1E8D7>..<reserved-1EDFF>
+1E8D7..1E8FF  ; R # Cn  [41] <reserved-1E8D7>..<reserved-1E8FF>
+1E900..1E943  ; R # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+1E94B..1E94F  ; R # Cn   [5] <reserved-1E94B>..<reserved-1E94F>
+1E950..1E959  ; R # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
+1E95A..1E95D  ; R # Cn   [4] <reserved-1E95A>..<reserved-1E95D>
+1E95E..1E95F  ; R # Po   [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
+1E960..1EDFF  ; R # Cn [1184] <reserved-1E960>..<reserved-1EDFF>
 1EF00..1EFFF  ; R # Cn [256] <reserved-1EF00>..<reserved-1EFFF>
 
-# Total code points: 4077
+# Total code points: 4070
 
 # ================================================
 
@@ -1170,9 +1212,10 @@ FFE5..FFE6    ; ET # Sc   [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
 0660..0669    ; AN # Nd  [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
 066B..066C    ; AN # Po   [2] ARABIC DECIMAL SEPARATOR..ARABIC THOUSANDS SEPARATOR
 06DD          ; AN # Cf       ARABIC END OF AYAH
+08E2          ; AN # Cf       ARABIC DISPUTED END OF AYAH
 10E60..10E7E  ; AN # No  [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
 
-# Total code points: 50
+# Total code points: 51
 
 # ================================================
 
@@ -1400,7 +1443,7 @@ FF1A          ; CS # Po       FULLWIDTH COLON
 239B..23B3    ; ON # Sm  [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
 23B4..23DB    ; ON # So  [40] TOP SQUARE BRACKET..FUSE
 23DC..23E1    ; ON # Sm   [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
-23E2..23FA    ; ON # So  [25] WHITE TRAPEZIUM..BLACK CIRCLE FOR RECORD
+23E2..23FE    ; ON # So  [29] WHITE TRAPEZIUM..POWER SLEEP SYMBOL
 2400..2426    ; ON # So  [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
 2440..244A    ; ON # So  [11] OCR HOOK..OCR DOUBLE BACKSLASH
 2460..2487    ; ON # No  [40] CIRCLED DIGIT ONE..PARENTHESIZED NUMBER TWENTY
@@ -1529,6 +1572,7 @@ FF1A          ; CS # Po       FULLWIDTH COLON
 2E40          ; ON # Pd       DOUBLE HYPHEN
 2E41          ; ON # Po       REVERSED COMMA
 2E42          ; ON # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
+2E43..2E44    ; ON # Po   [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
 2E80..2E99    ; ON # So  [26] CJK RADICAL REPEAT..CJK RADICAL RAP
 2E9B..2EF3    ; ON # So  [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
 2F00..2FD5    ; ON # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
@@ -1675,6 +1719,7 @@ FFFC..FFFD    ; ON # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTE
 1091F         ; ON # Po       PHOENICIAN WORD SEPARATOR
 10B39..10B3F  ; ON # Po   [7] AVESTAN ABBREVIATION MARK..LARGE ONE RING OVER TWO RINGS PUNCTUATION
 11052..11065  ; ON # No  [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND
+11660..1166C  ; ON # Po  [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
 1D200..1D241  ; ON # So  [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54
 1D245         ; ON # So       GREEK MUSICAL LEIMMA
 1D300..1D356  ; ON # So  [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
@@ -1694,11 +1739,9 @@ FFFC..FFFD    ; ON # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTE
 1F16A..1F16B  ; ON # So   [2] RAISED MC SIGN..RAISED MD SIGN
 1F300..1F3FA  ; ON # So [251] CYCLONE..AMPHORA
 1F3FB..1F3FF  ; ON # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
-1F400..1F579  ; ON # So [378] RAT..JOYSTICK
-1F57B..1F5A3  ; ON # So  [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
-1F5A5..1F6D0  ; ON # So [300] DESKTOP COMPUTER..PLACE OF WORSHIP
+1F400..1F6D2  ; ON # So [723] RAT..SHOPPING TROLLEY
 1F6E0..1F6EC  ; ON # So  [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
-1F6F0..1F6F3  ; ON # So   [4] SATELLITE..PASSENGER SHIP
+1F6F0..1F6F6  ; ON # So   [7] SATELLITE..CANOE
 1F700..1F773  ; ON # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
 1F780..1F7D4  ; ON # So  [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR
 1F800..1F80B  ; ON # So  [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
@@ -1706,11 +1749,16 @@ FFFC..FFFD    ; ON # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTE
 1F850..1F859  ; ON # So  [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
 1F860..1F887  ; ON # So  [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
 1F890..1F8AD  ; ON # So  [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F910..1F918  ; ON # So   [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS
-1F980..1F984  ; ON # So   [5] CRAB..UNICORN FACE
+1F910..1F91E  ; ON # So  [15] ZIPPER-MOUTH FACE..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+1F920..1F927  ; ON # So   [8] FACE WITH COWBOY HAT..SNEEZING FACE
+1F930         ; ON # So       PREGNANT WOMAN
+1F933..1F93E  ; ON # So  [12] SELFIE..HANDBALL
+1F940..1F94B  ; ON # So  [12] WILTED FLOWER..MARTIAL ARTS UNIFORM
+1F950..1F95E  ; ON # So  [15] CROISSANT..PANCAKES
+1F980..1F991  ; ON # So  [18] CRAB..SQUID
 1F9C0         ; ON # So       CHEESE WEDGE
 
-# Total code points: 5174
+# Total code points: 5267
 
 # ================================================
 
@@ -1784,6 +1832,7 @@ FFFFE..FFFFF  ; BN # Cn   [2] <noncharacter-FFFFE>..<noncharacter-FFFFF>
 0825..0827    ; NSM # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
 0829..082D    ; NSM # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
 0859..085B    ; NSM # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+08D4..08E1    ; NSM # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
 08E3..0902    ; NSM # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
 093A          ; NSM # Mn       DEVANAGARI VOWEL SIGN OE
 093C          ; NSM # Mn       DEVANAGARI SIGN NUKTA
@@ -1876,6 +1925,7 @@ FFFFE..FFFFF  ; BN # Cn   [2] <noncharacter-FFFFE>..<noncharacter-FFFFF>
 17C9..17D3    ; NSM # Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
 17DD          ; NSM # Mn       KHMER SIGN ATTHACAN
 180B..180D    ; NSM # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+1885..1886    ; NSM # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
 18A9          ; NSM # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 1920..1922    ; NSM # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
 1927..1928    ; NSM # Mn   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
@@ -1915,7 +1965,7 @@ FFFFE..FFFFF  ; BN # Cn   [2] <noncharacter-FFFFE>..<noncharacter-FFFFF>
 1CF4          ; NSM # Mn       VEDIC TONE CANDRA ABOVE
 1CF8..1CF9    ; NSM # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
 1DC0..1DF5    ; NSM # Mn  [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF    ; NSM # Mn   [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+1DFB..1DFF    ; NSM # Mn   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
 20D0..20DC    ; NSM # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
 20DD..20E0    ; NSM # Me   [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
 20E1          ; NSM # Mn       COMBINING LEFT RIGHT ARROW ABOVE
@@ -1935,7 +1985,7 @@ A802          ; NSM # Mn       SYLOTI NAGRI SIGN DVISVARA
 A806          ; NSM # Mn       SYLOTI NAGRI SIGN HASANTA
 A80B          ; NSM # Mn       SYLOTI NAGRI SIGN ANUSVARA
 A825..A826    ; NSM # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
-A8C4          ; NSM # Mn       SAURASHTRA SIGN VIRAMA
+A8C4..A8C5    ; NSM # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8E0..A8F1    ; NSM # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
 A926..A92D    ; NSM # Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
 A947..A951    ; NSM # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
@@ -1987,6 +2037,7 @@ FE20..FE2F    ; NSM # Mn  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC
 1122F..11231  ; NSM # Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
 11234         ; NSM # Mn       KHOJKI SIGN ANUSVARA
 11236..11237  ; NSM # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E         ; NSM # Mn       KHOJKI SIGN SUKUN
 112DF         ; NSM # Mn       KHUDAWADI SIGN ANUSVARA
 112E3..112EA  ; NSM # Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
 11300..11301  ; NSM # Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
@@ -1994,6 +2045,9 @@ FE20..FE2F    ; NSM # Mn  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC
 11340         ; NSM # Mn       GRANTHA VOWEL SIGN II
 11366..1136C  ; NSM # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; NSM # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11438..1143F  ; NSM # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11442..11444  ; NSM # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11446         ; NSM # Mn       NEWA SIGN NUKTA
 114B3..114B8  ; NSM # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
 114BA         ; NSM # Mn       TIRHUTA VOWEL SIGN SHORT E
 114BF..114C0  ; NSM # Mn   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
@@ -2012,6 +2066,12 @@ FE20..FE2F    ; NSM # Mn  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC
 1171D..1171F  ; NSM # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
 11722..11725  ; NSM # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
 11727..1172B  ; NSM # Mn   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+11C30..11C36  ; NSM # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; NSM # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C92..11CA7  ; NSM # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CAA..11CB0  ; NSM # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB2..11CB3  ; NSM # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB5..11CB6  ; NSM # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 16AF0..16AF4  ; NSM # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
 16B30..16B36  ; NSM # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
 16F8F..16F92  ; NSM # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
@@ -2027,10 +2087,16 @@ FE20..FE2F    ; NSM # Mn  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC
 1DA84         ; NSM # Mn       SIGNWRITING LOCATION HEAD NECK
 1DA9B..1DA9F  ; NSM # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF  ; NSM # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006  ; NSM # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; NSM # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; NSM # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; NSM # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; NSM # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E8D0..1E8D6  ; NSM # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E944..1E94A  ; NSM # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
 E0100..E01EF  ; NSM # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 
-# Total code points: 1578
+# Total code points: 1700
 
 # ================================================
 
@@ -2066,7 +2132,9 @@ E0100..E01EF  ; NSM # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 07B1          ; AL # Lo       THAANA LETTER NAA
 07B2..07BF    ; AL # Cn  [14] <reserved-07B2>..<reserved-07BF>
 08A0..08B4    ; AL # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
-08B5..08E2    ; AL # Cn  [46] <reserved-08B5>..<reserved-08E2>
+08B5          ; AL # Cn       <reserved-08B5>
+08B6..08BD    ; AL # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
+08BE..08D3    ; AL # Cn  [22] <reserved-08BE>..<reserved-08D3>
 FB50..FBB1    ; AL # Lo  [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
 FBB2..FBC1    ; AL # Sk  [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW
 FBC2..FBD2    ; AL # Cn  [17] <reserved-FBC2>..<reserved-FBD2>
@@ -2151,7 +2219,7 @@ FEFD..FEFE    ; AL # Cn   [2] <reserved-FEFD>..<reserved-FEFE>
 1EEBC..1EEEF  ; AL # Cn  [52] <reserved-1EEBC>..<reserved-1EEEF>
 1EEF2..1EEFF  ; AL # Cn  [14] <reserved-1EEF2>..<reserved-1EEFF>
 
-# Total code points: 1435
+# Total code points: 1420
 
 # ================================================
 
index cb8b8f1..4ee02c5 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedBinaryProperties-8.0.0.txt
-# Date: 2015-02-13, 13:47:09 GMT [MD]
+# DerivedBinaryProperties-9.0.0.txt
+# Date: 2016-03-02, 18:54:56 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
index a81c56d..cebc7b8 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedCombiningClass-8.0.0.txt
-# Date: 2015-02-13, 13:47:09 GMT [MD]
+# DerivedCombiningClass-9.0.0.txt
+# Date: 2016-06-01, 10:34:23 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
 0840..0858    ; 0 # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
 085E          ; 0 # Po       MANDAIC PUNCTUATION
 08A0..08B4    ; 0 # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD    ; 0 # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
+08E2          ; 0 # Cf       ARABIC DISPUTED END OF AYAH
 0900..0902    ; 0 # Mn   [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA
 0903          ; 0 # Mc       DEVANAGARI SIGN VISARGA
 0904..0939    ; 0 # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
 0C66..0C6F    ; 0 # Nd  [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
 0C78..0C7E    ; 0 # No   [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
 0C7F          ; 0 # So       TELUGU SIGN TUUMU
+0C80          ; 0 # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C81          ; 0 # Mn       KANNADA SIGN CANDRABINDU
 0C82..0C83    ; 0 # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
 0C85..0C8C    ; 0 # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0D46..0D48    ; 0 # Mc   [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
 0D4A..0D4C    ; 0 # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
 0D4E          ; 0 # Lo       MALAYALAM LETTER DOT REPH
+0D4F          ; 0 # So       MALAYALAM SIGN PARA
+0D54..0D56    ; 0 # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D57          ; 0 # Mc       MALAYALAM AU LENGTH MARK
+0D58..0D5E    ; 0 # No   [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
 0D5F..0D61    ; 0 # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D62..0D63    ; 0 # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
 0D66..0D6F    ; 0 # Nd  [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
-0D70..0D75    ; 0 # No   [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
+0D70..0D78    ; 0 # No   [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
 0D79          ; 0 # So       MALAYALAM DATE MARK
 0D7A..0D7F    ; 0 # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 0D82..0D83    ; 0 # Mc   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
 1820..1842    ; 0 # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; 0 # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877    ; 0 # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; 0 # Lo  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; 0 # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885..1886    ; 0 # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887..18A8    ; 0 # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18AA          ; 0 # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5    ; 0 # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
 1900..191E    ; 0 # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
 1C5A..1C77    ; 0 # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
 1C78..1C7D    ; 0 # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
 1C7E..1C7F    ; 0 # Po   [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
+1C80..1C88    ; 0 # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1CC0..1CC7    ; 0 # Po   [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
 1CD3          ; 0 # Po       VEDIC SIGN NIHSHVASA
 1CE1          ; 0 # Mc       VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
 239B..23B3    ; 0 # Sm  [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
 23B4..23DB    ; 0 # So  [40] TOP SQUARE BRACKET..FUSE
 23DC..23E1    ; 0 # Sm   [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
-23E2..23FA    ; 0 # So  [25] WHITE TRAPEZIUM..BLACK CIRCLE FOR RECORD
+23E2..23FE    ; 0 # So  [29] WHITE TRAPEZIUM..POWER SLEEP SYMBOL
 2400..2426    ; 0 # So  [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
 2440..244A    ; 0 # So  [11] OCR HOOK..OCR DOUBLE BACKSLASH
 2460..249B    ; 0 # No  [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
 2E40          ; 0 # Pd       DOUBLE HYPHEN
 2E41          ; 0 # Po       REVERSED COMMA
 2E42          ; 0 # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
+2E43..2E44    ; 0 # Po   [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
 2E80..2E99    ; 0 # So  [26] CJK RADICAL REPEAT..CJK RADICAL RAP
 2E9B..2EF3    ; 0 # So  [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
 2F00..2FD5    ; 0 # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
@@ -1061,7 +1072,7 @@ A788          ; 0 # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
 A789..A78A    ; 0 # Sk   [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
 A78B..A78E    ; 0 # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; 0 # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AD    ; 0 # L&  [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE    ; 0 # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; 0 # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7          ; 0 # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; 0 # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -1085,6 +1096,7 @@ A874..A877    ; 0 # Po   [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHA
 A880..A881    ; 0 # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
 A882..A8B3    ; 0 # Lo  [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
 A8B4..A8C3    ; 0 # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+A8C5          ; 0 # Mn       SAURASHTRA SIGN CANDRABINDU
 A8CE..A8CF    ; 0 # Po   [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
 A8D0..A8D9    ; 0 # Nd  [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
 A8F2..A8F7    ; 0 # Lo   [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
@@ -1315,7 +1327,7 @@ FFFC..FFFD    ; 0 # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
 10175..10178  ; 0 # No   [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
 10179..10189  ; 0 # So  [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
 1018A..1018B  ; 0 # No   [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN
-1018C         ; 0 # So       GREEK SINUSOID SIGN
+1018C..1018E  ; 0 # So   [3] GREEK SINUSOID SIGN..NOMISMA SIGN
 10190..1019B  ; 0 # So  [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
 101A0         ; 0 # So       GREEK SYMBOL TAU RHO
 101D0..101FC  ; 0 # So  [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
@@ -1338,6 +1350,8 @@ FFFC..FFFD    ; 0 # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
 10400..1044F  ; 0 # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
 10450..1049D  ; 0 # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
 104A0..104A9  ; 0 # Nd  [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+104B0..104D3  ; 0 # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; 0 # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10500..10527  ; 0 # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
 10530..10563  ; 0 # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
 1056F         ; 0 # Po       CAUCASIAN ALBANIAN CITATION MARK
@@ -1456,6 +1470,7 @@ FFFC..FFFD    ; 0 # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
 11234         ; 0 # Mn       KHOJKI SIGN ANUSVARA
 11237         ; 0 # Mn       KHOJKI SIGN SHADDA
 11238..1123D  ; 0 # Po   [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN
+1123E         ; 0 # Mn       KHOJKI SIGN SUKUN
 11280..11286  ; 0 # Lo   [7] MULTANI LETTER A..MULTANI LETTER GA
 11288         ; 0 # Lo       MULTANI LETTER GHA
 1128A..1128D  ; 0 # Lo   [4] MULTANI LETTER CA..MULTANI LETTER JJA
@@ -1485,6 +1500,17 @@ FFFC..FFFD    ; 0 # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
 11357         ; 0 # Mc       GRANTHA AU LENGTH MARK
 1135D..11361  ; 0 # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
 11362..11363  ; 0 # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11400..11434  ; 0 # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+11435..11437  ; 0 # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F  ; 0 # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441  ; 0 # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11443..11444  ; 0 # Mn   [2] NEWA SIGN CANDRABINDU..NEWA SIGN ANUSVARA
+11445         ; 0 # Mc       NEWA SIGN VISARGA
+11447..1144A  ; 0 # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+1144B..1144F  ; 0 # Po   [5] NEWA DANDA..NEWA ABBREVIATION SIGN
+11450..11459  ; 0 # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
+1145B         ; 0 # Po       NEWA PLACEHOLDER MARK
+1145D         ; 0 # Po       NEWA INSERTION SIGN
 11480..114AF  ; 0 # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114B0..114B2  ; 0 # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B3..114B8  ; 0 # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
@@ -1516,6 +1542,7 @@ FFFC..FFFD    ; 0 # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
 11641..11643  ; 0 # Po   [3] MODI DANDA..MODI ABBREVIATION SIGN
 11644         ; 0 # Lo       MODI SIGN HUVA
 11650..11659  ; 0 # Nd  [10] MODI DIGIT ZERO..MODI DIGIT NINE
+11660..1166C  ; 0 # Po  [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
 11680..116AA  ; 0 # Lo  [43] TAKRI LETTER A..TAKRI LETTER RRA
 116AB         ; 0 # Mn       TAKRI SIGN ANUSVARA
 116AC         ; 0 # Mc       TAKRI SIGN VISARGA
@@ -1538,6 +1565,25 @@ FFFC..FFFD    ; 0 # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
 118EA..118F2  ; 0 # No   [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
 118FF         ; 0 # Lo       WARANG CITI OM
 11AC0..11AF8  ; 0 # Lo  [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08  ; 0 # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; 0 # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C2F         ; 0 # Mc       BHAIKSUKI VOWEL SIGN AA
+11C30..11C36  ; 0 # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; 0 # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3E         ; 0 # Mc       BHAIKSUKI SIGN VISARGA
+11C40         ; 0 # Lo       BHAIKSUKI SIGN AVAGRAHA
+11C41..11C45  ; 0 # Po   [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2
+11C50..11C59  ; 0 # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+11C5A..11C6C  ; 0 # No  [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
+11C70..11C71  ; 0 # Po   [2] MARCHEN HEAD MARK..MARCHEN MARK SHAD
+11C72..11C8F  ; 0 # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+11C92..11CA7  ; 0 # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9         ; 0 # Mc       MARCHEN SUBJOINED LETTER YA
+11CAA..11CB0  ; 0 # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB1         ; 0 # Mc       MARCHEN VOWEL SIGN I
+11CB2..11CB3  ; 0 # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4         ; 0 # Mc       MARCHEN VOWEL SIGN O
+11CB5..11CB6  ; 0 # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 12000..12399  ; 0 # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E  ; 0 # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12470..12474  ; 0 # Po   [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
@@ -1565,6 +1611,9 @@ FFFC..FFFD    ; 0 # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
 16F51..16F7E  ; 0 # Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
 16F8F..16F92  ; 0 # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
 16F93..16F9F  ; 0 # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0         ; 0 # Lm       TANGUT ITERATION MARK
+17000..187EC  ; 0 # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; 0 # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B000..1B001  ; 0 # Lo   [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
 1BC00..1BC6A  ; 0 # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
 1BC70..1BC7C  ; 0 # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
@@ -1641,6 +1690,9 @@ FFFC..FFFD    ; 0 # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
 1DAA1..1DAAF  ; 0 # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
 1E800..1E8C4  ; 0 # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
 1E8C7..1E8CF  ; 0 # No   [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
+1E900..1E943  ; 0 # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+1E950..1E959  ; 0 # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
+1E95E..1E95F  ; 0 # Po   [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
 1EE00..1EE03  ; 0 # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
 1EE05..1EE1F  ; 0 # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
 1EE21..1EE22  ; 0 # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -1684,18 +1736,16 @@ FFFC..FFFD    ; 0 # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
 1F100..1F10C  ; 0 # No  [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
 1F110..1F12E  ; 0 # So  [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
 1F130..1F16B  ; 0 # So  [60] SQUARED LATIN CAPITAL LETTER A..RAISED MD SIGN
-1F170..1F19A  ; 0 # So  [43] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VS
+1F170..1F1AC  ; 0 # So  [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD
 1F1E6..1F202  ; 0 # So  [29] REGIONAL INDICATOR SYMBOL LETTER A..SQUARED KATAKANA SA
-1F210..1F23A  ; 0 # So  [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
+1F210..1F23B  ; 0 # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
 1F240..1F248  ; 0 # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
 1F250..1F251  ; 0 # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
 1F300..1F3FA  ; 0 # So [251] CYCLONE..AMPHORA
 1F3FB..1F3FF  ; 0 # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
-1F400..1F579  ; 0 # So [378] RAT..JOYSTICK
-1F57B..1F5A3  ; 0 # So  [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
-1F5A5..1F6D0  ; 0 # So [300] DESKTOP COMPUTER..PLACE OF WORSHIP
+1F400..1F6D2  ; 0 # So [723] RAT..SHOPPING TROLLEY
 1F6E0..1F6EC  ; 0 # So  [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
-1F6F0..1F6F3  ; 0 # So   [4] SATELLITE..PASSENGER SHIP
+1F6F0..1F6F6  ; 0 # So   [7] SATELLITE..CANOE
 1F700..1F773  ; 0 # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
 1F780..1F7D4  ; 0 # So  [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR
 1F800..1F80B  ; 0 # So  [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
@@ -1703,8 +1753,13 @@ FFFC..FFFD    ; 0 # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
 1F850..1F859  ; 0 # So  [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
 1F860..1F887  ; 0 # So  [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
 1F890..1F8AD  ; 0 # So  [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F910..1F918  ; 0 # So   [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS
-1F980..1F984  ; 0 # So   [5] CRAB..UNICORN FACE
+1F910..1F91E  ; 0 # So  [15] ZIPPER-MOUTH FACE..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+1F920..1F927  ; 0 # So   [8] FACE WITH COWBOY HAT..SNEEZING FACE
+1F930         ; 0 # So       PREGNANT WOMAN
+1F933..1F93E  ; 0 # So  [12] SELFIE..HANDBALL
+1F940..1F94B  ; 0 # So  [12] WILTED FLOWER..MARTIAL ARTS UNIFORM
+1F950..1F95E  ; 0 # So  [15] CROISSANT..PANCAKES
+1F980..1F991  ; 0 # So  [18] CRAB..SQUID
 1F9C0         ; 0 # So       CHEESE WEDGE
 20000..2A6D6  ; 0 # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
 2A700..2B734  ; 0 # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
@@ -1717,8 +1772,8 @@ 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 855907 code points not listed here.
-# Total code points: 1113361
+# The above property value applies to 848407 code points not listed here.
+# Total code points: 1113298
 
 # ================================================
 
@@ -1759,11 +1814,13 @@ A9B3          ; 7 # Mn       JAVANESE SIGN CECAK TELU
 11236         ; 7 # Mn       KHOJKI SIGN NUKTA
 112E9         ; 7 # Mn       KHUDAWADI SIGN NUKTA
 1133C         ; 7 # Mn       GRANTHA SIGN NUKTA
+11446         ; 7 # Mn       NEWA SIGN NUKTA
 114C3         ; 7 # Mn       TIRHUTA SIGN NUKTA
 115C0         ; 7 # Mn       SIDDHAM SIGN NUKTA
 116B7         ; 7 # Mn       TAKRI SIGN NUKTA
+1E94A         ; 7 # Mn       ADLAM NUKTA
 
-# Total code points: 20
+# Total code points: 22
 
 # ================================================
 
@@ -1814,13 +1871,15 @@ ABED          ; 9 # Mn       MEETEI MAYEK APUN IYEK
 11235         ; 9 # Mc       KHOJKI SIGN VIRAMA
 112EA         ; 9 # Mn       KHUDAWADI SIGN VIRAMA
 1134D         ; 9 # Mc       GRANTHA SIGN VIRAMA
+11442         ; 9 # Mn       NEWA SIGN VIRAMA
 114C2         ; 9 # Mn       TIRHUTA SIGN VIRAMA
 115BF         ; 9 # Mn       SIDDHAM SIGN VIRAMA
 1163F         ; 9 # Mn       MODI SIGN VIRAMA
 116B6         ; 9 # Mc       TAKRI SIGN VIRAMA
 1172B         ; 9 # Mn       AHOM SIGN KILLER
+11C3F         ; 9 # Mn       BHAIKSUKI SIGN VIRAMA
 
-# Total code points: 45
+# Total code points: 47
 
 # ================================================
 
@@ -2316,6 +2375,7 @@ FE27..FE2D    ; 220 # Mn   [7] COMBINING LIGATURE LEFT HALF BELOW..COMBINING CON
 081B..0823    ; 230 # Mn   [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
 0825..0827    ; 230 # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
 0829..082D    ; 230 # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
+08D4..08E1    ; 230 # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
 08E4..08E5    ; 230 # Mn   [2] ARABIC CURLY FATHA..ARABIC CURLY DAMMA
 08E7..08E8    ; 230 # Mn   [2] ARABIC CURLY FATHATAN..ARABIC CURLY DAMMATAN
 08EA..08EC    ; 230 # Mn   [3] ARABIC TONE ONE DOT ABOVE..ARABIC TONE LOOP ABOVE
@@ -2344,6 +2404,7 @@ FE27..FE2D    ; 220 # Mn   [7] COMBINING LIGATURE LEFT HALF BELOW..COMBINING CON
 1DC3..1DC9    ; 230 # Mn   [7] COMBINING SUSPENSION MARK..COMBINING ACUTE-GRAVE-ACUTE
 1DCB..1DCC    ; 230 # Mn   [2] COMBINING BREVE-MACRON..COMBINING MACRON-BREVE
 1DD1..1DF5    ; 230 # Mn  [37] COMBINING UR ABOVE..COMBINING UP TACK ABOVE
+1DFB          ; 230 # Mn       COMBINING DELETION MARK
 1DFE          ; 230 # Mn       COMBINING LEFT ARROWHEAD ABOVE
 20D0..20D1    ; 230 # Mn   [2] COMBINING LEFT HARPOON ABOVE..COMBINING RIGHT HARPOON ABOVE
 20D4..20D7    ; 230 # Mn   [4] COMBINING ANTICLOCKWISE ARROW ABOVE..COMBINING RIGHT ARROW ABOVE
@@ -2377,8 +2438,14 @@ FE2E..FE2F    ; 230 # Mn   [2] COMBINING CYRILLIC TITLO LEFT HALF..COMBINING CYR
 1D185..1D189  ; 230 # Mn   [5] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING BEND
 1D1AA..1D1AD  ; 230 # Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
 1D242..1D244  ; 230 # Mn   [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
-
-# Total code points: 402
+1E000..1E006  ; 230 # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; 230 # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; 230 # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; 230 # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; 230 # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
+1E944..1E949  ; 230 # Mn   [6] ADLAM ALIF LENGTHENER..ADLAM GEMINATE CONSONANT MODIFIER
+
+# Total code points: 461
 
 # ================================================
 
index 0d29e23..8436505 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedDecompositionType-8.0.0.txt
-# Date: 2015-02-13, 13:47:11 GMT [MD]
+# DerivedDecompositionType-9.0.0.txt
+# Date: 2016-03-02, 18:54:58 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
@@ -999,9 +1000,9 @@ FE6A..FE6B    ; Small # Po   [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
 1F130..1F14F  ; Square # So  [32] SQUARED LATIN CAPITAL LETTER A..SQUARED WC
 1F190         ; Square # So       SQUARE DJ
 1F200..1F202  ; Square # So   [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
-1F210..1F23A  ; Square # So  [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
+1F210..1F23B  ; Square # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
 
-# Total code points: 284
+# Total code points: 285
 
 # ================================================
 
index 5343f7e..678a91a 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedEastAsianWidth-8.0.0.txt
-# Date: 2015-02-13, 13:47:11 GMT [MD]
+# DerivedEastAsianWidth-9.0.0.txt
+# Date: 2016-06-01, 10:34:25 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
 0859..085B    ; N # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
 085E          ; N # Po       MANDAIC PUNCTUATION
 08A0..08B4    ; N # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD    ; N # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
+08D4..08E1    ; N # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
+08E2          ; N # Cf       ARABIC DISPUTED END OF AYAH
 08E3..0902    ; N # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
 0903          ; N # Mc       DEVANAGARI SIGN VISARGA
 0904..0939    ; N # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
 0C66..0C6F    ; N # Nd  [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
 0C78..0C7E    ; N # No   [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
 0C7F          ; N # So       TELUGU SIGN TUUMU
+0C80          ; N # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C81          ; N # Mn       KANNADA SIGN CANDRABINDU
 0C82..0C83    ; N # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
 0C85..0C8C    ; N # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0D4A..0D4C    ; N # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
 0D4D          ; N # Mn       MALAYALAM SIGN VIRAMA
 0D4E          ; N # Lo       MALAYALAM LETTER DOT REPH
+0D4F          ; N # So       MALAYALAM SIGN PARA
+0D54..0D56    ; N # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D57          ; N # Mc       MALAYALAM AU LENGTH MARK
+0D58..0D5E    ; N # No   [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
 0D5F..0D61    ; N # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D62..0D63    ; N # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
 0D66..0D6F    ; N # Nd  [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
-0D70..0D75    ; N # No   [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
+0D70..0D78    ; N # No   [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
 0D79          ; N # So       MALAYALAM DATE MARK
 0D7A..0D7F    ; N # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 0D82..0D83    ; N # Mc   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
 1820..1842    ; N # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; N # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877    ; N # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; N # Lo  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; N # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885..1886    ; N # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+1887..18A8    ; N # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18A9          ; N # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 18AA          ; N # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5    ; N # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
 1C5A..1C77    ; N # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
 1C78..1C7D    ; N # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
 1C7E..1C7F    ; N # Po   [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
+1C80..1C88    ; N # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1CC0..1CC7    ; N # Po   [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
 1CD0..1CD2    ; N # Mn   [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
 1CD3          ; N # Po       VEDIC SIGN NIHSHVASA
 1D79..1D9A    ; N # L&  [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
 1D9B..1DBF    ; N # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
 1DC0..1DF5    ; N # Mn  [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF    ; N # Mn   [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+1DFB..1DFF    ; N # Mn   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
 1E00..1F15    ; N # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
 1F18..1F1D    ; N # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
 1F20..1F45    ; N # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
 230A          ; N # Ps       LEFT FLOOR
 230B          ; N # Pe       RIGHT FLOOR
 230C..2311    ; N # So   [6] BOTTOM RIGHT CROP..SQUARE LOZENGE
-2313..231F    ; N # So  [13] SEGMENT..BOTTOM RIGHT CORNER
+2313..2319    ; N # So   [7] SEGMENT..TURNED NOT SIGN
+231C..231F    ; N # So   [4] TOP LEFT CORNER..BOTTOM RIGHT CORNER
 2320..2321    ; N # Sm   [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
 2322..2328    ; N # So   [7] FROWN..KEYBOARD
 232B..237B    ; N # So  [81] ERASE TO THE LEFT..NOT CHECK MARK
 239B..23B3    ; N # Sm  [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
 23B4..23DB    ; N # So  [40] TOP SQUARE BRACKET..FUSE
 23DC..23E1    ; N # Sm   [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
-23E2..23FA    ; N # So  [25] WHITE TRAPEZIUM..BLACK CIRCLE FOR RECORD
+23E2..23E8    ; N # So   [7] WHITE TRAPEZIUM..DECIMAL EXPONENT SYMBOL
+23ED..23EF    ; N # So   [3] BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR..BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR
+23F1..23F2    ; N # So   [2] STOPWATCH..TIMER CLOCK
+23F4..23FE    ; N # So  [11] BLACK MEDIUM LEFT-POINTING TRIANGLE..POWER SLEEP SYMBOL
 2400..2426    ; N # So  [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
 2440..244A    ; N # So  [11] OCR HOOK..OCR DOUBLE BACKSLASH
 24EA          ; N # No       CIRCLED DIGIT ZERO
 25D2..25E1    ; N # So  [16] CIRCLE WITH LOWER HALF BLACK..LOWER HALF CIRCLE
 25E6..25EE    ; N # So   [9] WHITE BULLET..UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
 25F0..25F7    ; N # So   [8] WHITE SQUARE WITH UPPER LEFT QUADRANT..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
-25F8..25FF    ; N # Sm   [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
+25F8..25FC    ; N # Sm   [5] UPPER LEFT TRIANGLE..BLACK MEDIUM SQUARE
+25FF          ; N # Sm       LOWER RIGHT TRIANGLE
 2600..2604    ; N # So   [5] BLACK SUN WITH RAYS..COMET
 2607..2608    ; N # So   [2] LIGHTNING..THUNDERSTORM
 260A..260D    ; N # So   [4] ASCENDING NODE..OPPOSITION
 261D          ; N # So       WHITE UP POINTING INDEX
 261F..263F    ; N # So  [33] WHITE DOWN POINTING INDEX..MERCURY
 2641          ; N # So       EARTH
-2643..265F    ; N # So  [29] JUPITER..BLACK CHESS PAWN
+2643..2647    ; N # So   [5] JUPITER..PLUTO
+2654..265F    ; N # So  [12] WHITE CHESS KING..BLACK CHESS PAWN
 2662          ; N # So       WHITE DIAMOND SUIT
 2666          ; N # So       BLACK DIAMOND SUIT
 266B          ; N # So       BEAMED EIGHTH NOTES
 266E          ; N # So       MUSIC NATURAL SIGN
-2670..269D    ; N # So  [46] WEST SYRIAC CROSS..OUTLINED WHITE STAR
-26A0..26BD    ; N # So  [30] WARNING SIGN..SOCCER BALL
+2670..267E    ; N # So  [15] WEST SYRIAC CROSS..PERMANENT PAPER SIGN
+2680..2692    ; N # So  [19] DIE FACE-1..HAMMER AND PICK
+2694..269D    ; N # So  [10] CROSSED SWORDS..OUTLINED WHITE STAR
+26A0          ; N # So       WARNING SIGN
+26A2..26A9    ; N # So   [8] DOUBLED FEMALE SIGN..HORIZONTAL MALE WITH STROKE SIGN
+26AC..26BC    ; N # So  [17] MEDIUM SMALL WHITE CIRCLE..SESQUIQUADRATE
 26C0..26C3    ; N # So   [4] WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING
-26CE          ; N # So       OPHIUCHUS
 26E2          ; N # So       ASTRONOMICAL SYMBOL FOR URANUS
 26E4..26E7    ; N # So   [4] PENTAGRAM..INVERTED PENTAGRAM
-2700..273C    ; N # So  [61] BLACK SAFETY SCISSORS..OPEN CENTRE TEARDROP-SPOKED ASTERISK
-273E..2756    ; N # So  [25] SIX PETALLED BLACK AND WHITE FLORETTE..BLACK DIAMOND MINUS WHITE X
+2700..2704    ; N # So   [5] BLACK SAFETY SCISSORS..WHITE SCISSORS
+2706..2709    ; N # So   [4] TELEPHONE LOCATION SIGN..ENVELOPE
+270C..2727    ; N # So  [28] VICTORY HAND..WHITE FOUR POINTED STAR
+2729..273C    ; N # So  [20] STRESS OUTLINED WHITE STAR..OPEN CENTRE TEARDROP-SPOKED ASTERISK
+273E..274B    ; N # So  [14] SIX PETALLED BLACK AND WHITE FLORETTE..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274D          ; N # So       SHADOWED WHITE CIRCLE
+274F..2752    ; N # So   [4] LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE
+2756          ; N # So       BLACK DIAMOND MINUS WHITE X
 2758..2767    ; N # So  [16] LIGHT VERTICAL BAR..ROTATED FLORAL HEART BULLET
 2768          ; N # Ps       MEDIUM LEFT PARENTHESIS ORNAMENT
 2769          ; N # Pe       MEDIUM RIGHT PARENTHESIS ORNAMENT
 2774          ; N # Ps       MEDIUM LEFT CURLY BRACKET ORNAMENT
 2775          ; N # Pe       MEDIUM RIGHT CURLY BRACKET ORNAMENT
 2780..2793    ; N # No  [20] DINGBAT CIRCLED SANS-SERIF DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
-2794..27BF    ; N # So  [44] HEAVY WIDE-HEADED RIGHTWARDS ARROW..DOUBLE CURLY LOOP
+2794          ; N # So       HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2798..27AF    ; N # So  [24] HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B1..27BE    ; N # So  [14] NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW
 27C0..27C4    ; N # Sm   [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
 27C5          ; N # Ps       LEFT S-SHAPED BAG DELIMITER
 27C6          ; N # Pe       RIGHT S-SHAPED BAG DELIMITER
 29FC          ; N # Ps       LEFT-POINTING CURVED ANGLE BRACKET
 29FD          ; N # Pe       RIGHT-POINTING CURVED ANGLE BRACKET
 29FE..2AFF    ; N # Sm [258] TINY..N-ARY WHITE VERTICAL BAR
-2B00..2B2F    ; N # So  [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE
+2B00..2B1A    ; N # So  [27] NORTH EAST WHITE ARROW..DOTTED SQUARE
+2B1D..2B2F    ; N # So  [19] BLACK VERY SMALL SQUARE..WHITE VERTICAL ELLIPSE
 2B30..2B44    ; N # Sm  [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET
 2B45..2B46    ; N # So   [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW
 2B47..2B4C    ; N # Sm   [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
-2B4D..2B54    ; N # So   [8] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..WHITE RIGHT-POINTING PENTAGON
+2B4D..2B4F    ; N # So   [3] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..SHORT BACKSLANTED SOUTH ARROW
+2B51..2B54    ; N # So   [4] BLACK SMALL STAR..WHITE RIGHT-POINTING PENTAGON
 2B5A..2B73    ; N # So  [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
 2B76..2B95    ; N # So  [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
 2B98..2BB9    ; N # So  [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX
 2E40          ; N # Pd       DOUBLE HYPHEN
 2E41          ; N # Po       REVERSED COMMA
 2E42          ; N # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
+2E43..2E44    ; N # Po   [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
 303F          ; N # So       IDEOGRAPHIC HALF FILL SPACE
 4DC0..4DFF    ; N # So  [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
 A4D0..A4F7    ; N # Lo  [40] LISU LETTER BA..LISU LETTER OE
@@ -1101,7 +1132,7 @@ A788          ; N # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
 A789..A78A    ; N # Sk   [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
 A78B..A78E    ; N # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; N # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AD    ; N # L&  [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE    ; N # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; N # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7          ; N # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; N # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -1126,7 +1157,7 @@ A874..A877    ; N # Po   [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHA
 A880..A881    ; N # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
 A882..A8B3    ; N # Lo  [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
 A8B4..A8C3    ; N # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
-A8C4          ; N # Mn       SAURASHTRA SIGN VIRAMA
+A8C4..A8C5    ; N # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8CE..A8CF    ; N # Po   [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
 A8D0..A8D9    ; N # Nd  [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
 A8E0..A8F1    ; N # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
@@ -1269,7 +1300,7 @@ FFFC          ; N # So       OBJECT REPLACEMENT CHARACTER
 10175..10178  ; N # No   [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
 10179..10189  ; N # So  [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
 1018A..1018B  ; N # No   [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN
-1018C         ; N # So       GREEK SINUSOID SIGN
+1018C..1018E  ; N # So   [3] GREEK SINUSOID SIGN..NOMISMA SIGN
 10190..1019B  ; N # So  [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
 101A0         ; N # So       GREEK SYMBOL TAU RHO
 101D0..101FC  ; N # So  [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
@@ -1295,6 +1326,8 @@ FFFC          ; N # So       OBJECT REPLACEMENT CHARACTER
 10400..1044F  ; N # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
 10450..1049D  ; N # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
 104A0..104A9  ; N # Nd  [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+104B0..104D3  ; N # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; N # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10500..10527  ; N # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
 10530..10563  ; N # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
 1056F         ; N # Po       CAUCASIAN ALBANIAN CITATION MARK
@@ -1419,6 +1452,7 @@ FFFC          ; N # So       OBJECT REPLACEMENT CHARACTER
 11235         ; N # Mc       KHOJKI SIGN VIRAMA
 11236..11237  ; N # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
 11238..1123D  ; N # Po   [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN
+1123E         ; N # Mn       KHOJKI SIGN SUKUN
 11280..11286  ; N # Lo   [7] MULTANI LETTER A..MULTANI LETTER GA
 11288         ; N # Lo       MULTANI LETTER GHA
 1128A..1128D  ; N # Lo   [4] MULTANI LETTER CA..MULTANI LETTER JJA
@@ -1451,6 +1485,18 @@ FFFC          ; N # So       OBJECT REPLACEMENT CHARACTER
 11362..11363  ; N # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
 11366..1136C  ; N # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; N # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11400..11434  ; N # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+11435..11437  ; N # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F  ; N # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441  ; N # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11442..11444  ; N # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11445         ; N # Mc       NEWA SIGN VISARGA
+11446         ; N # Mn       NEWA SIGN NUKTA
+11447..1144A  ; N # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+1144B..1144F  ; N # Po   [5] NEWA DANDA..NEWA ABBREVIATION SIGN
+11450..11459  ; N # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
+1145B         ; N # Po       NEWA PLACEHOLDER MARK
+1145D         ; N # Po       NEWA INSERTION SIGN
 11480..114AF  ; N # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114B0..114B2  ; N # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B3..114B8  ; N # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
@@ -1484,6 +1530,7 @@ FFFC          ; N # So       OBJECT REPLACEMENT CHARACTER
 11641..11643  ; N # Po   [3] MODI DANDA..MODI ABBREVIATION SIGN
 11644         ; N # Lo       MODI SIGN HUVA
 11650..11659  ; N # Nd  [10] MODI DIGIT ZERO..MODI DIGIT NINE
+11660..1166C  ; N # Po  [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
 11680..116AA  ; N # Lo  [43] TAKRI LETTER A..TAKRI LETTER RRA
 116AB         ; N # Mn       TAKRI SIGN ANUSVARA
 116AC         ; N # Mc       TAKRI SIGN VISARGA
@@ -1508,6 +1555,26 @@ FFFC          ; N # So       OBJECT REPLACEMENT CHARACTER
 118EA..118F2  ; N # No   [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
 118FF         ; N # Lo       WARANG CITI OM
 11AC0..11AF8  ; N # Lo  [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08  ; N # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; N # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C2F         ; N # Mc       BHAIKSUKI VOWEL SIGN AA
+11C30..11C36  ; N # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; N # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3E         ; N # Mc       BHAIKSUKI SIGN VISARGA
+11C3F         ; N # Mn       BHAIKSUKI SIGN VIRAMA
+11C40         ; N # Lo       BHAIKSUKI SIGN AVAGRAHA
+11C41..11C45  ; N # Po   [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2
+11C50..11C59  ; N # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+11C5A..11C6C  ; N # No  [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
+11C70..11C71  ; N # Po   [2] MARCHEN HEAD MARK..MARCHEN MARK SHAD
+11C72..11C8F  ; N # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+11C92..11CA7  ; N # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9         ; N # Mc       MARCHEN SUBJOINED LETTER YA
+11CAA..11CB0  ; N # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB1         ; N # Mc       MARCHEN VOWEL SIGN I
+11CB2..11CB3  ; N # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4         ; N # Mc       MARCHEN VOWEL SIGN O
+11CB5..11CB6  ; N # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 12000..12399  ; N # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E  ; N # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12470..12474  ; N # Po   [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
@@ -1617,9 +1684,18 @@ FFFC          ; N # So       OBJECT REPLACEMENT CHARACTER
 1DA87..1DA8B  ; N # Po   [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS
 1DA9B..1DA9F  ; N # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF  ; N # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006  ; N # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; N # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; N # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; N # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; N # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E800..1E8C4  ; N # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
 1E8C7..1E8CF  ; N # No   [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
 1E8D0..1E8D6  ; N # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E900..1E943  ; N # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+1E944..1E94A  ; N # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+1E950..1E959  ; N # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
+1E95E..1E95F  ; N # Po   [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
 1EE00..1EE03  ; N # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
 1EE05..1EE1F  ; N # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
 1EE21..1EE22  ; N # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -1654,22 +1730,38 @@ FFFC          ; N # So       OBJECT REPLACEMENT CHARACTER
 1EEA5..1EEA9  ; N # Lo   [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
 1EEAB..1EEBB  ; N # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
 1EEF0..1EEF1  ; N # Sm   [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
-1F000..1F02B  ; N # So  [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
+1F000..1F003  ; N # So   [4] MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND
+1F005..1F02B  ; N # So  [39] MAHJONG TILE GREEN DRAGON..MAHJONG TILE BACK
 1F030..1F093  ; N # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
 1F0A0..1F0AE  ; N # So  [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES
 1F0B1..1F0BF  ; N # So  [15] PLAYING CARD ACE OF HEARTS..PLAYING CARD RED JOKER
-1F0C1..1F0CF  ; N # So  [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
+1F0C1..1F0CE  ; N # So  [14] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD KING OF DIAMONDS
 1F0D1..1F0F5  ; N # So  [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21
 1F10B..1F10C  ; N # No   [2] DINGBAT CIRCLED SANS-SERIF DIGIT ZERO..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
 1F12E         ; N # So       CIRCLED WZ
 1F16A..1F16B  ; N # So   [2] RAISED MC SIGN..RAISED MD SIGN
 1F1E6..1F1FF  ; N # So  [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
-1F300..1F3FA  ; N # So [251] CYCLONE..AMPHORA
-1F3FB..1F3FF  ; N # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
-1F400..1F579  ; N # So [378] RAT..JOYSTICK
-1F57B..1F5A3  ; N # So  [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
-1F5A5..1F6D0  ; N # So [300] DESKTOP COMPUTER..PLACE OF WORSHIP
-1F6E0..1F6EC  ; N # So  [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
+1F321..1F32C  ; N # So  [12] THERMOMETER..WIND BLOWING FACE
+1F336         ; N # So       HOT PEPPER
+1F37D         ; N # So       FORK AND KNIFE WITH PLATE
+1F394..1F39F  ; N # So  [12] HEART WITH TIP ON THE LEFT..ADMISSION TICKETS
+1F3CB..1F3CE  ; N # So   [4] WEIGHT LIFTER..RACING CAR
+1F3D4..1F3DF  ; N # So  [12] SNOW CAPPED MOUNTAIN..STADIUM
+1F3F1..1F3F3  ; N # So   [3] WHITE PENNANT..WAVING WHITE FLAG
+1F3F5..1F3F7  ; N # So   [3] ROSETTE..LABEL
+1F43F         ; N # So       CHIPMUNK
+1F441         ; N # So       EYE
+1F4FD..1F4FE  ; N # So   [2] FILM PROJECTOR..PORTABLE STEREO
+1F53E..1F54A  ; N # So  [13] LOWER RIGHT SHADOWED WHITE CIRCLE..DOVE OF PEACE
+1F54F         ; N # So       BOWL OF HYGIEIA
+1F568..1F579  ; N # So  [18] RIGHT SPEAKER..JOYSTICK
+1F57B..1F594  ; N # So  [26] LEFT HAND TELEPHONE RECEIVER..REVERSED VICTORY HAND
+1F597..1F5A3  ; N # So  [13] WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX
+1F5A5..1F5FA  ; N # So  [86] DESKTOP COMPUTER..WORLD MAP
+1F650..1F67F  ; N # So  [48] NORTH WEST POINTING LEAF..REVERSE CHECKER BOARD
+1F6C6..1F6CB  ; N # So   [6] TRIANGLE WITH ROUNDED CORNERS..COUCH AND LAMP
+1F6CD..1F6CF  ; N # So   [3] SHOPPING BAGS..BED
+1F6E0..1F6EA  ; N # So  [11] HAMMER AND WRENCH..NORTHEAST-POINTING AIRPLANE
 1F6F0..1F6F3  ; N # So   [4] SATELLITE..PASSENGER SHIP
 1F700..1F773  ; N # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
 1F780..1F7D4  ; N # So  [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR
@@ -1678,14 +1770,11 @@ FFFC          ; N # So       OBJECT REPLACEMENT CHARACTER
 1F850..1F859  ; N # So  [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
 1F860..1F887  ; N # So  [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
 1F890..1F8AD  ; N # So  [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F910..1F918  ; N # So   [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS
-1F980..1F984  ; N # So   [5] CRAB..UNICORN FACE
-1F9C0         ; N # So       CHEESE WEDGE
 E0001         ; N # Cf       LANGUAGE TAG
 E0020..E007F  ; N # Cf  [96] TAG SPACE..CANCEL TAG
 
-# The above property value applies to 778133 code points not listed here.
-# Total code points: 801894
+# The above property value applies to 770633 code points not listed here.
+# Total code points: 794146
 
 # ================================================
 
@@ -1852,7 +1941,6 @@ E0020..E007F  ; N # Cf  [96] TAG SPACE..CANCEL TAG
 2605..2606    ; A # So   [2] BLACK STAR..WHITE STAR
 2609          ; A # So       SUN
 260E..260F    ; A # So   [2] BLACK TELEPHONE..WHITE TELEPHONE
-2614..2615    ; A # So   [2] UMBRELLA WITH RAIN DROPS..HOT BEVERAGE
 261C          ; A # So       WHITE LEFT POINTING INDEX
 261E          ; A # So       WHITE RIGHT POINTING INDEX
 2640          ; A # So       FEMALE SIGN
@@ -1863,15 +1951,20 @@ E0020..E007F  ; N # Cf  [96] TAG SPACE..CANCEL TAG
 266C..266D    ; A # So   [2] BEAMED SIXTEENTH NOTES..MUSIC FLAT SIGN
 266F          ; A # Sm       MUSIC SHARP SIGN
 269E..269F    ; A # So   [2] THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT
-26BE..26BF    ; A # So   [2] BASEBALL..SQUARED KEY
-26C4..26CD    ; A # So  [10] SNOWMAN WITHOUT SNOW..DISABLED CAR
-26CF..26E1    ; A # So  [19] PICK..RESTRICTED LEFT ENTRY-2
+26BF          ; A # So       SQUARED KEY
+26C6..26CD    ; A # So   [8] RAIN..DISABLED CAR
+26CF..26D3    ; A # So   [5] PICK..CHAINS
+26D5..26E1    ; A # So  [13] ALTERNATE ONE-WAY LEFT WAY TRAFFIC..RESTRICTED LEFT ENTRY-2
 26E3          ; A # So       HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE
-26E8..26FF    ; A # So  [24] BLACK CROSS ON SHIELD..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
+26E8..26E9    ; A # So   [2] BLACK CROSS ON SHIELD..SHINTO SHRINE
+26EB..26F1    ; A # So   [7] CASTLE..UMBRELLA ON GROUND
+26F4          ; A # So       FERRY
+26F6..26F9    ; A # So   [4] SQUARE FOUR CORNERS..PERSON WITH BALL
+26FB..26FC    ; A # So   [2] JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL
+26FE..26FF    ; A # So   [2] CUP ON BLACK SQUARE..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
 273D          ; A # So       HEAVY TEARDROP-SPOKED ASTERISK
-2757          ; A # So       HEAVY EXCLAMATION MARK SYMBOL
 2776..277F    ; A # No  [10] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED NUMBER TEN
-2B55..2B59    ; A # So   [5] HEAVY LARGE CIRCLE..HEAVY CIRCLED SALTIRE
+2B56..2B59    ; A # So   [4] HEAVY OVAL WITH OVAL INSIDE..HEAVY CIRCLED SALTIRE
 3248..324F    ; A # No   [8] CIRCLED NUMBER TEN ON BLACK SQUARE..CIRCLED NUMBER EIGHTY ON BLACK SQUARE
 E000..F8FF    ; A # Co [6400] <private-use-E000>..<private-use-F8FF>
 FE00..FE0F    ; A # Mn  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
@@ -1879,12 +1972,14 @@ FFFD          ; A # So       REPLACEMENT CHARACTER
 1F100..1F10A  ; A # No  [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA
 1F110..1F12D  ; A # So  [30] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED CD
 1F130..1F169  ; A # So  [58] SQUARED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
-1F170..1F19A  ; A # So  [43] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VS
+1F170..1F18D  ; A # So  [30] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED SA
+1F18F..1F190  ; A # So   [2] NEGATIVE SQUARED WC..SQUARE DJ
+1F19B..1F1AC  ; A # So  [18] SQUARED THREE D..SQUARED VOD
 E0100..E01EF  ; A # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 F0000..FFFFD  ; A # Co [65534] <private-use-F0000>..<private-use-FFFFD>
 100000..10FFFD; A # Co [65534] <private-use-100000>..<private-use-10FFFD>
 
-# Total code points: 138746
+# Total code points: 138739
 
 # ================================================
 
@@ -1915,8 +2010,41 @@ 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
+231A..231B    ; W # So   [2] WATCH..HOURGLASS
 2329          ; W # Ps       LEFT-POINTING ANGLE BRACKET
 232A          ; W # Pe       RIGHT-POINTING ANGLE BRACKET
+23E9..23EC    ; W # So   [4] BLACK RIGHT-POINTING DOUBLE TRIANGLE..BLACK DOWN-POINTING DOUBLE TRIANGLE
+23F0          ; W # So       ALARM CLOCK
+23F3          ; W # So       HOURGLASS WITH FLOWING SAND
+25FD..25FE    ; W # Sm   [2] WHITE MEDIUM SMALL SQUARE..BLACK MEDIUM SMALL SQUARE
+2614..2615    ; W # So   [2] UMBRELLA WITH RAIN DROPS..HOT BEVERAGE
+2648..2653    ; W # So  [12] ARIES..PISCES
+267F          ; W # So       WHEELCHAIR SYMBOL
+2693          ; W # So       ANCHOR
+26A1          ; W # So       HIGH VOLTAGE SIGN
+26AA..26AB    ; W # So   [2] MEDIUM WHITE CIRCLE..MEDIUM BLACK CIRCLE
+26BD..26BE    ; W # So   [2] SOCCER BALL..BASEBALL
+26C4..26C5    ; W # So   [2] SNOWMAN WITHOUT SNOW..SUN BEHIND CLOUD
+26CE          ; W # So       OPHIUCHUS
+26D4          ; W # So       NO ENTRY
+26EA          ; W # So       CHURCH
+26F2..26F3    ; W # So   [2] FOUNTAIN..FLAG IN HOLE
+26F5          ; W # So       SAILBOAT
+26FA          ; W # So       TENT
+26FD          ; W # So       FUEL PUMP
+2705          ; W # So       WHITE HEAVY CHECK MARK
+270A..270B    ; W # So   [2] RAISED FIST..RAISED HAND
+2728          ; W # So       SPARKLES
+274C          ; W # So       CROSS MARK
+274E          ; W # So       NEGATIVE SQUARED CROSS MARK
+2753..2755    ; W # So   [3] BLACK QUESTION MARK ORNAMENT..WHITE EXCLAMATION MARK ORNAMENT
+2757          ; W # So       HEAVY EXCLAMATION MARK SYMBOL
+2795..2797    ; W # So   [3] HEAVY PLUS SIGN..HEAVY DIVISION SIGN
+27B0          ; W # So       CURLY LOOP
+27BF          ; W # So       DOUBLE CURLY LOOP
+2B1B..2B1C    ; W # So   [2] BLACK LARGE SQUARE..WHITE LARGE SQUARE
+2B50          ; W # So       WHITE MEDIUM STAR
+2B55          ; W # So       HEAVY LARGE CIRCLE
 2E80..2E99    ; W # So  [26] CJK RADICAL REPEAT..CJK RADICAL RAP
 2E9B..2EF3    ; W # So  [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
 2F00..2FD5    ; W # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
@@ -2047,11 +2175,51 @@ FE64..FE66    ; W # Sm   [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
 FE68          ; W # Po       SMALL REVERSE SOLIDUS
 FE69          ; W # Sc       SMALL DOLLAR SIGN
 FE6A..FE6B    ; W # Po   [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+16FE0         ; W # Lm       TANGUT ITERATION MARK
+17000..187EC  ; W # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; W # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B000..1B001  ; W # Lo   [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
+1F004         ; W # So       MAHJONG TILE RED DRAGON
+1F0CF         ; W # So       PLAYING CARD BLACK JOKER
+1F18E         ; W # So       NEGATIVE SQUARED AB
+1F191..1F19A  ; W # So  [10] SQUARED CL..SQUARED VS
 1F200..1F202  ; W # So   [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
-1F210..1F23A  ; W # So  [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
+1F210..1F23B  ; W # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
 1F240..1F248  ; W # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
 1F250..1F251  ; W # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
+1F300..1F320  ; W # So  [33] CYCLONE..SHOOTING STAR
+1F32D..1F335  ; W # So   [9] HOT DOG..CACTUS
+1F337..1F37C  ; W # So  [70] TULIP..BABY BOTTLE
+1F37E..1F393  ; W # So  [22] BOTTLE WITH POPPING CORK..GRADUATION CAP
+1F3A0..1F3CA  ; W # So  [43] CAROUSEL HORSE..SWIMMER
+1F3CF..1F3D3  ; W # So   [5] CRICKET BAT AND BALL..TABLE TENNIS PADDLE AND BALL
+1F3E0..1F3F0  ; W # So  [17] HOUSE BUILDING..EUROPEAN CASTLE
+1F3F4         ; W # So       WAVING BLACK FLAG
+1F3F8..1F3FA  ; W # So   [3] BADMINTON RACQUET AND SHUTTLECOCK..AMPHORA
+1F3FB..1F3FF  ; W # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
+1F400..1F43E  ; W # So  [63] RAT..PAW PRINTS
+1F440         ; W # So       EYES
+1F442..1F4FC  ; W # So [187] EAR..VIDEOCASSETTE
+1F4FF..1F53D  ; W # So  [63] PRAYER BEADS..DOWN-POINTING SMALL RED TRIANGLE
+1F54B..1F54E  ; W # So   [4] KAABA..MENORAH WITH NINE BRANCHES
+1F550..1F567  ; W # So  [24] CLOCK FACE ONE OCLOCK..CLOCK FACE TWELVE-THIRTY
+1F57A         ; W # So       MAN DANCING
+1F595..1F596  ; W # So   [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
+1F5A4         ; W # So       BLACK HEART
+1F5FB..1F64F  ; W # So  [85] MOUNT FUJI..PERSON WITH FOLDED HANDS
+1F680..1F6C5  ; W # So  [70] ROCKET..LEFT LUGGAGE
+1F6CC         ; W # So       SLEEPING ACCOMMODATION
+1F6D0..1F6D2  ; W # So   [3] PLACE OF WORSHIP..SHOPPING TROLLEY
+1F6EB..1F6EC  ; W # So   [2] AIRPLANE DEPARTURE..AIRPLANE ARRIVING
+1F6F4..1F6F6  ; W # So   [3] SCOOTER..CANOE
+1F910..1F91E  ; W # So  [15] ZIPPER-MOUTH FACE..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+1F920..1F927  ; W # So   [8] FACE WITH COWBOY HAT..SNEEZING FACE
+1F930         ; W # So       PREGNANT WOMAN
+1F933..1F93E  ; W # So  [12] SELFIE..HANDBALL
+1F940..1F94B  ; W # So  [12] WILTED FLOWER..MARTIAL ARTS UNIFORM
+1F950..1F95E  ; W # So  [15] CROISSANT..PANCAKES
+1F980..1F991  ; W # So  [18] CRAB..SQUID
+1F9C0         ; W # So       CHEESE WEDGE
 20000..2A6D6  ; W # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
 2A6D7..2A6FF  ; W # Cn  [41] <reserved-2A6D7>..<reserved-2A6FF>
 2A700..2B734  ; W # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
@@ -2064,7 +2232,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: 173134
+# Total code points: 180889
 
 # ================================================
 
index 77c9b38..96dfb56 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedGeneralCategory-8.0.0.txt
-# Date: 2015-02-13, 13:47:11 GMT [MD]
+# DerivedGeneralCategory-9.0.0.txt
+# Date: 2016-06-01, 10:34:26 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
@@ -37,7 +38,8 @@
 083F          ; Cn #       <reserved-083F>
 085C..085D    ; Cn #   [2] <reserved-085C>..<reserved-085D>
 085F..089F    ; Cn #  [65] <reserved-085F>..<reserved-089F>
-08B5..08E2    ; Cn #  [46] <reserved-08B5>..<reserved-08E2>
+08B5          ; Cn #       <reserved-08B5>
+08BE..08D3    ; Cn #  [22] <reserved-08BE>..<reserved-08D3>
 0984          ; Cn #       <reserved-0984>
 098D..098E    ; Cn #   [2] <reserved-098D>..<reserved-098E>
 0991..0992    ; Cn #   [2] <reserved-0991>..<reserved-0992>
 0C5B..0C5F    ; Cn #   [5] <reserved-0C5B>..<reserved-0C5F>
 0C64..0C65    ; Cn #   [2] <reserved-0C64>..<reserved-0C65>
 0C70..0C77    ; Cn #   [8] <reserved-0C70>..<reserved-0C77>
-0C80          ; Cn #       <reserved-0C80>
 0C84          ; Cn #       <reserved-0C84>
 0C8D          ; Cn #       <reserved-0C8D>
 0C91          ; Cn #       <reserved-0C91>
 0D3B..0D3C    ; Cn #   [2] <reserved-0D3B>..<reserved-0D3C>
 0D45          ; Cn #       <reserved-0D45>
 0D49          ; Cn #       <reserved-0D49>
-0D4F..0D56    ; Cn #   [8] <reserved-0D4F>..<reserved-0D56>
-0D58..0D5E    ; Cn #   [7] <reserved-0D58>..<reserved-0D5E>
+0D50..0D53    ; Cn #   [4] <reserved-0D50>..<reserved-0D53>
 0D64..0D65    ; Cn #   [2] <reserved-0D64>..<reserved-0D65>
-0D76..0D78    ; Cn #   [3] <reserved-0D76>..<reserved-0D78>
 0D80..0D81    ; Cn #   [2] <reserved-0D80>..<reserved-0D81>
 0D84          ; Cn #       <reserved-0D84>
 0D97..0D99    ; Cn #   [3] <reserved-0D97>..<reserved-0D99>
 1BF4..1BFB    ; Cn #   [8] <reserved-1BF4>..<reserved-1BFB>
 1C38..1C3A    ; Cn #   [3] <reserved-1C38>..<reserved-1C3A>
 1C4A..1C4C    ; Cn #   [3] <reserved-1C4A>..<reserved-1C4C>
-1C80..1CBF    ; Cn #  [64] <reserved-1C80>..<reserved-1CBF>
+1C89..1CBF    ; Cn #  [55] <reserved-1C89>..<reserved-1CBF>
 1CC8..1CCF    ; Cn #   [8] <reserved-1CC8>..<reserved-1CCF>
 1CF7          ; Cn #       <reserved-1CF7>
 1CFA..1CFF    ; Cn #   [6] <reserved-1CFA>..<reserved-1CFF>
-1DF6..1DFB    ; Cn #   [6] <reserved-1DF6>..<reserved-1DFB>
+1DF6..1DFA    ; Cn #   [5] <reserved-1DF6>..<reserved-1DFA>
 1F16..1F17    ; Cn #   [2] <reserved-1F16>..<reserved-1F17>
 1F1E..1F1F    ; Cn #   [2] <reserved-1F1E>..<reserved-1F1F>
 1F46..1F47    ; Cn #   [2] <reserved-1F46>..<reserved-1F47>
 20BF..20CF    ; Cn #  [17] <reserved-20BF>..<reserved-20CF>
 20F1..20FF    ; Cn #  [15] <reserved-20F1>..<reserved-20FF>
 218C..218F    ; Cn #   [4] <reserved-218C>..<reserved-218F>
-23FB..23FF    ; Cn #   [5] <reserved-23FB>..<reserved-23FF>
+23FF          ; Cn #       <reserved-23FF>
 2427..243F    ; Cn #  [25] <reserved-2427>..<reserved-243F>
 244B..245F    ; Cn #  [21] <reserved-244B>..<reserved-245F>
 2B74..2B75    ; Cn #   [2] <reserved-2B74>..<reserved-2B75>
 2DCF          ; Cn #       <reserved-2DCF>
 2DD7          ; Cn #       <reserved-2DD7>
 2DDF          ; Cn #       <reserved-2DDF>
-2E43..2E7F    ; Cn #  [61] <reserved-2E43>..<reserved-2E7F>
+2E45..2E7F    ; Cn #  [59] <reserved-2E45>..<reserved-2E7F>
 2E9A          ; Cn #       <reserved-2E9A>
 2EF4..2EFF    ; Cn #  [12] <reserved-2EF4>..<reserved-2EFF>
 2FD6..2FEF    ; Cn #  [26] <reserved-2FD6>..<reserved-2FEF>
@@ -323,12 +322,12 @@ A48D..A48F    ; Cn #   [3] <reserved-A48D>..<reserved-A48F>
 A4C7..A4CF    ; Cn #   [9] <reserved-A4C7>..<reserved-A4CF>
 A62C..A63F    ; Cn #  [20] <reserved-A62C>..<reserved-A63F>
 A6F8..A6FF    ; Cn #   [8] <reserved-A6F8>..<reserved-A6FF>
-A7AE..A7AF    ; Cn #   [2] <reserved-A7AE>..<reserved-A7AF>
+A7AF          ; Cn #       <reserved-A7AF>
 A7B8..A7F6    ; Cn #  [63] <reserved-A7B8>..<reserved-A7F6>
 A82C..A82F    ; Cn #   [4] <reserved-A82C>..<reserved-A82F>
 A83A..A83F    ; Cn #   [6] <reserved-A83A>..<reserved-A83F>
 A878..A87F    ; Cn #   [8] <reserved-A878>..<reserved-A87F>
-A8C5..A8CD    ; Cn #   [9] <reserved-A8C5>..<reserved-A8CD>
+A8C6..A8CD    ; Cn #   [8] <reserved-A8C6>..<reserved-A8CD>
 A8DA..A8DF    ; Cn #   [6] <reserved-A8DA>..<reserved-A8DF>
 A8FE..A8FF    ; Cn #   [2] <reserved-A8FE>..<reserved-A8FF>
 A954..A95E    ; Cn #  [11] <reserved-A954>..<reserved-A95E>
@@ -390,7 +389,7 @@ FFFE..FFFF    ; Cn #   [2] <noncharacter-FFFE>..<noncharacter-FFFF>
 100FB..100FF  ; Cn #   [5] <reserved-100FB>..<reserved-100FF>
 10103..10106  ; Cn #   [4] <reserved-10103>..<reserved-10106>
 10134..10136  ; Cn #   [3] <reserved-10134>..<reserved-10136>
-1018D..1018F  ; Cn #   [3] <reserved-1018D>..<reserved-1018F>
+1018F         ; Cn #       <reserved-1018F>
 1019C..1019F  ; Cn #   [4] <reserved-1019C>..<reserved-1019F>
 101A1..101CF  ; Cn #  [47] <reserved-101A1>..<reserved-101CF>
 101FE..1027F  ; Cn # [130] <reserved-101FE>..<reserved-1027F>
@@ -404,7 +403,9 @@ FFFE..FFFF    ; Cn #   [2] <noncharacter-FFFE>..<noncharacter-FFFF>
 103C4..103C7  ; Cn #   [4] <reserved-103C4>..<reserved-103C7>
 103D6..103FF  ; Cn #  [42] <reserved-103D6>..<reserved-103FF>
 1049E..1049F  ; Cn #   [2] <reserved-1049E>..<reserved-1049F>
-104AA..104FF  ; Cn #  [86] <reserved-104AA>..<reserved-104FF>
+104AA..104AF  ; Cn #   [6] <reserved-104AA>..<reserved-104AF>
+104D4..104D7  ; Cn #   [4] <reserved-104D4>..<reserved-104D7>
+104FC..104FF  ; Cn #   [4] <reserved-104FC>..<reserved-104FF>
 10528..1052F  ; Cn #   [8] <reserved-10528>..<reserved-1052F>
 10564..1056E  ; Cn #  [11] <reserved-10564>..<reserved-1056E>
 10570..105FF  ; Cn # [144] <reserved-10570>..<reserved-105FF>
@@ -460,7 +461,7 @@ FFFE..FFFF    ; Cn #   [2] <noncharacter-FFFE>..<noncharacter-FFFF>
 111E0         ; Cn #       <reserved-111E0>
 111F5..111FF  ; Cn #  [11] <reserved-111F5>..<reserved-111FF>
 11212         ; Cn #       <reserved-11212>
-1123E..1127F  ; Cn #  [66] <reserved-1123E>..<reserved-1127F>
+1123F..1127F  ; Cn #  [65] <reserved-1123F>..<reserved-1127F>
 11287         ; Cn #       <reserved-11287>
 11289         ; Cn #       <reserved-11289>
 1128E         ; Cn #       <reserved-1128E>
@@ -482,13 +483,17 @@ FFFE..FFFF    ; Cn #   [2] <noncharacter-FFFE>..<noncharacter-FFFF>
 11358..1135C  ; Cn #   [5] <reserved-11358>..<reserved-1135C>
 11364..11365  ; Cn #   [2] <reserved-11364>..<reserved-11365>
 1136D..1136F  ; Cn #   [3] <reserved-1136D>..<reserved-1136F>
-11375..1147F  ; Cn # [267] <reserved-11375>..<reserved-1147F>
+11375..113FF  ; Cn # [139] <reserved-11375>..<reserved-113FF>
+1145A         ; Cn #       <reserved-1145A>
+1145C         ; Cn #       <reserved-1145C>
+1145E..1147F  ; Cn #  [34] <reserved-1145E>..<reserved-1147F>
 114C8..114CF  ; Cn #   [8] <reserved-114C8>..<reserved-114CF>
 114DA..1157F  ; Cn # [166] <reserved-114DA>..<reserved-1157F>
 115B6..115B7  ; Cn #   [2] <reserved-115B6>..<reserved-115B7>
 115DE..115FF  ; Cn #  [34] <reserved-115DE>..<reserved-115FF>
 11645..1164F  ; Cn #  [11] <reserved-11645>..<reserved-1164F>
-1165A..1167F  ; Cn #  [38] <reserved-1165A>..<reserved-1167F>
+1165A..1165F  ; Cn #   [6] <reserved-1165A>..<reserved-1165F>
+1166D..1167F  ; Cn #  [19] <reserved-1166D>..<reserved-1167F>
 116B8..116BF  ; Cn #   [8] <reserved-116B8>..<reserved-116BF>
 116CA..116FF  ; Cn #  [54] <reserved-116CA>..<reserved-116FF>
 1171A..1171C  ; Cn #   [3] <reserved-1171A>..<reserved-1171C>
@@ -496,7 +501,14 @@ FFFE..FFFF    ; Cn #   [2] <noncharacter-FFFE>..<noncharacter-FFFF>
 11740..1189F  ; Cn # [352] <reserved-11740>..<reserved-1189F>
 118F3..118FE  ; Cn #  [12] <reserved-118F3>..<reserved-118FE>
 11900..11ABF  ; Cn # [448] <reserved-11900>..<reserved-11ABF>
-11AF9..11FFF  ; Cn # [1287] <reserved-11AF9>..<reserved-11FFF>
+11AF9..11BFF  ; Cn # [263] <reserved-11AF9>..<reserved-11BFF>
+11C09         ; Cn #       <reserved-11C09>
+11C37         ; Cn #       <reserved-11C37>
+11C46..11C4F  ; Cn #  [10] <reserved-11C46>..<reserved-11C4F>
+11C6D..11C6F  ; Cn #   [3] <reserved-11C6D>..<reserved-11C6F>
+11C90..11C91  ; Cn #   [2] <reserved-11C90>..<reserved-11C91>
+11CA8         ; Cn #       <reserved-11CA8>
+11CB7..11FFF  ; Cn # [841] <reserved-11CB7>..<reserved-11FFF>
 1239A..123FF  ; Cn # [102] <reserved-1239A>..<reserved-123FF>
 1246F         ; Cn #       <reserved-1246F>
 12475..1247F  ; Cn #  [11] <reserved-12475>..<reserved-1247F>
@@ -516,7 +528,10 @@ FFFE..FFFF    ; Cn #   [2] <noncharacter-FFFE>..<noncharacter-FFFF>
 16B90..16EFF  ; Cn # [880] <reserved-16B90>..<reserved-16EFF>
 16F45..16F4F  ; Cn #  [11] <reserved-16F45>..<reserved-16F4F>
 16F7F..16F8E  ; Cn #  [16] <reserved-16F7F>..<reserved-16F8E>
-16FA0..1AFFF  ; Cn # [16480] <reserved-16FA0>..<reserved-1AFFF>
+16FA0..16FDF  ; Cn #  [64] <reserved-16FA0>..<reserved-16FDF>
+16FE1..16FFF  ; Cn #  [31] <reserved-16FE1>..<reserved-16FFF>
+187ED..187FF  ; Cn #  [19] <reserved-187ED>..<reserved-187FF>
+18AF3..1AFFF  ; Cn # [9485] <reserved-18AF3>..<reserved-1AFFF>
 1B002..1BBFF  ; Cn # [3070] <reserved-1B002>..<reserved-1BBFF>
 1BC6B..1BC6F  ; Cn #   [5] <reserved-1BC6B>..<reserved-1BC6F>
 1BC7D..1BC7F  ; Cn #   [3] <reserved-1BC7D>..<reserved-1BC7F>
@@ -551,9 +566,17 @@ FFFE..FFFF    ; Cn #   [2] <noncharacter-FFFE>..<noncharacter-FFFF>
 1D7CC..1D7CD  ; Cn #   [2] <reserved-1D7CC>..<reserved-1D7CD>
 1DA8C..1DA9A  ; Cn #  [15] <reserved-1DA8C>..<reserved-1DA9A>
 1DAA0         ; Cn #       <reserved-1DAA0>
-1DAB0..1E7FF  ; Cn # [3408] <reserved-1DAB0>..<reserved-1E7FF>
+1DAB0..1DFFF  ; Cn # [1360] <reserved-1DAB0>..<reserved-1DFFF>
+1E007         ; Cn #       <reserved-1E007>
+1E019..1E01A  ; Cn #   [2] <reserved-1E019>..<reserved-1E01A>
+1E022         ; Cn #       <reserved-1E022>
+1E025         ; Cn #       <reserved-1E025>
+1E02B..1E7FF  ; Cn # [2005] <reserved-1E02B>..<reserved-1E7FF>
 1E8C5..1E8C6  ; Cn #   [2] <reserved-1E8C5>..<reserved-1E8C6>
-1E8D7..1EDFF  ; Cn # [1321] <reserved-1E8D7>..<reserved-1EDFF>
+1E8D7..1E8FF  ; Cn #  [41] <reserved-1E8D7>..<reserved-1E8FF>
+1E94B..1E94F  ; Cn #   [5] <reserved-1E94B>..<reserved-1E94F>
+1E95A..1E95D  ; Cn #   [4] <reserved-1E95A>..<reserved-1E95D>
+1E960..1EDFF  ; Cn # [1184] <reserved-1E960>..<reserved-1EDFF>
 1EE04         ; Cn #       <reserved-1EE04>
 1EE20         ; Cn #       <reserved-1EE20>
 1EE23         ; Cn #       <reserved-1EE23>
@@ -597,16 +620,14 @@ FFFE..FFFF    ; Cn #   [2] <noncharacter-FFFE>..<noncharacter-FFFF>
 1F10D..1F10F  ; Cn #   [3] <reserved-1F10D>..<reserved-1F10F>
 1F12F         ; Cn #       <reserved-1F12F>
 1F16C..1F16F  ; Cn #   [4] <reserved-1F16C>..<reserved-1F16F>
-1F19B..1F1E5  ; Cn #  [75] <reserved-1F19B>..<reserved-1F1E5>
+1F1AD..1F1E5  ; Cn #  [57] <reserved-1F1AD>..<reserved-1F1E5>
 1F203..1F20F  ; Cn #  [13] <reserved-1F203>..<reserved-1F20F>
-1F23B..1F23F  ; Cn #   [5] <reserved-1F23B>..<reserved-1F23F>
+1F23C..1F23F  ; Cn #   [4] <reserved-1F23C>..<reserved-1F23F>
 1F249..1F24F  ; Cn #   [7] <reserved-1F249>..<reserved-1F24F>
 1F252..1F2FF  ; Cn # [174] <reserved-1F252>..<reserved-1F2FF>
-1F57A         ; Cn #       <reserved-1F57A>
-1F5A4         ; Cn #       <reserved-1F5A4>
-1F6D1..1F6DF  ; Cn #  [15] <reserved-1F6D1>..<reserved-1F6DF>
+1F6D3..1F6DF  ; Cn #  [13] <reserved-1F6D3>..<reserved-1F6DF>
 1F6ED..1F6EF  ; Cn #   [3] <reserved-1F6ED>..<reserved-1F6EF>
-1F6F4..1F6FF  ; Cn #  [12] <reserved-1F6F4>..<reserved-1F6FF>
+1F6F7..1F6FF  ; Cn #   [9] <reserved-1F6F7>..<reserved-1F6FF>
 1F774..1F77F  ; Cn #  [12] <reserved-1F774>..<reserved-1F77F>
 1F7D5..1F7FF  ; Cn #  [43] <reserved-1F7D5>..<reserved-1F7FF>
 1F80C..1F80F  ; Cn #   [4] <reserved-1F80C>..<reserved-1F80F>
@@ -614,8 +635,13 @@ FFFE..FFFF    ; Cn #   [2] <noncharacter-FFFE>..<noncharacter-FFFF>
 1F85A..1F85F  ; Cn #   [6] <reserved-1F85A>..<reserved-1F85F>
 1F888..1F88F  ; Cn #   [8] <reserved-1F888>..<reserved-1F88F>
 1F8AE..1F90F  ; Cn #  [98] <reserved-1F8AE>..<reserved-1F90F>
-1F919..1F97F  ; Cn # [103] <reserved-1F919>..<reserved-1F97F>
-1F985..1F9BF  ; Cn #  [59] <reserved-1F985>..<reserved-1F9BF>
+1F91F         ; Cn #       <reserved-1F91F>
+1F928..1F92F  ; Cn #   [8] <reserved-1F928>..<reserved-1F92F>
+1F931..1F932  ; Cn #   [2] <reserved-1F931>..<reserved-1F932>
+1F93F         ; Cn #       <reserved-1F93F>
+1F94C..1F94F  ; Cn #   [4] <reserved-1F94C>..<reserved-1F94F>
+1F95F..1F97F  ; Cn #  [33] <reserved-1F95F>..<reserved-1F97F>
+1F992..1F9BF  ; Cn #  [46] <reserved-1F992>..<reserved-1F9BF>
 1F9C1..1FFFF  ; Cn # [1599] <reserved-1F9C1>..<noncharacter-1FFFF>
 2A6D7..2A6FF  ; Cn #  [41] <reserved-2A6D7>..<reserved-2A6FF>
 2B735..2B73F  ; Cn #  [11] <reserved-2B735>..<reserved-2B73F>
@@ -628,7 +654,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: 853859
+# Total code points: 846359
 
 # ================================================
 
@@ -1221,11 +1247,12 @@ A7A2          ; Lu #       LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
 A7A4          ; Lu #       LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
 A7A6          ; Lu #       LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
 A7A8          ; Lu #       LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
-A7AA..A7AD    ; Lu #   [4] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER L WITH BELT
+A7AA..A7AE    ; Lu #   [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B4    ; Lu #   [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA
 A7B6          ; Lu #       LATIN CAPITAL LETTER OMEGA
 FF21..FF3A    ; Lu #  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
 10400..10427  ; Lu #  [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
+104B0..104D3  ; Lu #  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
 10C80..10CB2  ; Lu #  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
 118A0..118BF  ; Lu #  [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
 1D400..1D419  ; Lu #  [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z
@@ -1259,8 +1286,9 @@ FF21..FF3A    ; Lu #  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAP
 1D756..1D76E  ; Lu #  [25] MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
 1D790..1D7A8  ; Lu #  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
 1D7CA         ; Lu #       MATHEMATICAL BOLD CAPITAL DIGAMMA
+1E900..1E921  ; Lu #  [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
 
-# Total code points: 1631
+# Total code points: 1702
 
 # ================================================
 
@@ -1537,6 +1565,7 @@ FF21..FF3A    ; Lu #  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAP
 052F          ; Ll #       CYRILLIC SMALL LETTER EL WITH DESCENDER
 0561..0587    ; Ll #  [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
 13F8..13FD    ; Ll #   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+1C80..1C88    ; Ll #   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1D00..1D2B    ; Ll #  [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
 1D6B..1D77    ; Ll #  [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
 1D79..1D9A    ; Ll #  [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
@@ -1866,6 +1895,7 @@ FB00..FB06    ; Ll #   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
 FB13..FB17    ; Ll #   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
 FF41..FF5A    ; Ll #  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
 10428..1044F  ; Ll #  [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW
+104D8..104FB  ; Ll #  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10CC0..10CF2  ; Ll #  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
 118C0..118DF  ; Ll #  [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
 1D41A..1D433  ; Ll #  [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z
@@ -1896,8 +1926,9 @@ FF41..FF5A    ; Ll #  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL
 1D7AA..1D7C2  ; Ll #  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
 1D7C4..1D7C9  ; Ll #   [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
 1D7CB         ; Ll #       MATHEMATICAL BOLD SMALL DIGAMMA
+1E922..1E943  ; Ll #  [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
 
-# Total code points: 1984
+# Total code points: 2063
 
 # ================================================
 
@@ -1976,8 +2007,9 @@ FF70          ; Lm #       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
 FF9E..FF9F    ; Lm #   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
 16B40..16B43  ; Lm #   [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
 16F93..16F9F  ; Lm #  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+16FE0         ; Lm #       TANGUT ITERATION MARK
 
-# Total code points: 248
+# Total code points: 249
 
 # ================================================
 
@@ -2006,6 +2038,7 @@ FF9E..FF9F    ; Lm #   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAK
 0800..0815    ; Lo #  [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF
 0840..0858    ; Lo #  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
 08A0..08B4    ; Lo #  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD    ; Lo #   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
 0904..0939    ; Lo #  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
 093D          ; Lo #       DEVANAGARI SIGN AVAGRAHA
 0950          ; Lo #       DEVANAGARI OM
@@ -2070,6 +2103,7 @@ FF9E..FF9F    ; Lm #   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAK
 0C3D          ; Lo #       TELUGU SIGN AVAGRAHA
 0C58..0C5A    ; Lo #   [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
 0C60..0C61    ; Lo #   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+0C80          ; Lo #       KANNADA SIGN SPACING CANDRABINDU
 0C85..0C8C    ; Lo #   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0C8E..0C90    ; Lo #   [3] KANNADA LETTER E..KANNADA LETTER AI
 0C92..0CA8    ; Lo #  [23] KANNADA LETTER O..KANNADA LETTER NA
@@ -2084,6 +2118,7 @@ FF9E..FF9F    ; Lm #   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAK
 0D12..0D3A    ; Lo #  [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
 0D3D          ; Lo #       MALAYALAM SIGN AVAGRAHA
 0D4E          ; Lo #       MALAYALAM LETTER DOT REPH
+0D54..0D56    ; Lo #   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 0D5F..0D61    ; Lo #   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
 0D7A..0D7F    ; Lo #   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 0D85..0D96    ; Lo #  [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
@@ -2156,7 +2191,8 @@ FF9E..FF9F    ; Lm #   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAK
 17DC          ; Lo #       KHMER SIGN AVAKRAHASANYA
 1820..1842    ; Lo #  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1844..1877    ; Lo #  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; Lo #  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; Lo #   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1887..18A8    ; Lo #  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18AA          ; Lo #       MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5    ; Lo #  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
 1900..191E    ; Lo #  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
@@ -2349,6 +2385,8 @@ FFDA..FFDC    ; Lo #   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
 1133D         ; Lo #       GRANTHA SIGN AVAGRAHA
 11350         ; Lo #       GRANTHA OM
 1135D..11361  ; Lo #   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+11400..11434  ; Lo #  [53] NEWA LETTER A..NEWA LETTER HA
+11447..1144A  ; Lo #   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
 11480..114AF  ; Lo #  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114C4..114C5  ; Lo #   [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
 114C7         ; Lo #       TIRHUTA OM
@@ -2360,6 +2398,10 @@ FFDA..FFDC    ; Lo #   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
 11700..11719  ; Lo #  [26] AHOM LETTER KA..AHOM LETTER JHA
 118FF         ; Lo #       WARANG CITI OM
 11AC0..11AF8  ; Lo #  [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08  ; Lo #   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; Lo #  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C40         ; Lo #       BHAIKSUKI SIGN AVAGRAHA
+11C72..11C8F  ; Lo #  [30] MARCHEN LETTER KA..MARCHEN LETTER A
 12000..12399  ; Lo # [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12480..12543  ; Lo # [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
 13000..1342E  ; Lo # [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032
@@ -2372,6 +2414,8 @@ FFDA..FFDC    ; Lo #   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
 16B7D..16B8F  ; Lo #  [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
 16F00..16F44  ; Lo #  [69] MIAO LETTER PA..MIAO LETTER HHA
 16F50         ; Lo #       MIAO LETTER NASALIZATION
+17000..187EC  ; Lo # [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; Lo # [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 1B000..1B001  ; Lo #   [2] KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
 1BC00..1BC6A  ; Lo # [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
 1BC70..1BC7C  ; Lo #  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
@@ -2417,7 +2461,7 @@ FFDA..FFDC    ; Lo #   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
 2B820..2CEA1  ; Lo # [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
 2F800..2FA1D  ; Lo # [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
 
-# Total code points: 105697
+# Total code points: 112721
 
 # ================================================
 
@@ -2446,6 +2490,7 @@ FFDA..FFDC    ; Lo #   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
 0825..0827    ; Mn #   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
 0829..082D    ; Mn #   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
 0859..085B    ; Mn #   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+08D4..08E1    ; Mn #  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
 08E3..0902    ; Mn #  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
 093A          ; Mn #       DEVANAGARI VOWEL SIGN OE
 093C          ; Mn #       DEVANAGARI SIGN NUKTA
@@ -2540,6 +2585,7 @@ FFDA..FFDC    ; Lo #   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
 17C9..17D3    ; Mn #  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
 17DD          ; Mn #       KHMER SIGN ATTHACAN
 180B..180D    ; Mn #   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+1885..1886    ; Mn #   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
 18A9          ; Mn #       MONGOLIAN LETTER ALI GALI DAGALGA
 1920..1922    ; Mn #   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
 1927..1928    ; Mn #   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
@@ -2578,7 +2624,7 @@ FFDA..FFDC    ; Lo #   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
 1CF4          ; Mn #       VEDIC TONE CANDRA ABOVE
 1CF8..1CF9    ; Mn #   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
 1DC0..1DF5    ; Mn #  [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF    ; Mn #   [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+1DFB..1DFF    ; Mn #   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
 20D0..20DC    ; Mn #  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
 20E1          ; Mn #       COMBINING LEFT RIGHT ARROW ABOVE
 20E5..20F0    ; Mn #  [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
@@ -2595,7 +2641,7 @@ A802          ; Mn #       SYLOTI NAGRI SIGN DVISVARA
 A806          ; Mn #       SYLOTI NAGRI SIGN HASANTA
 A80B          ; Mn #       SYLOTI NAGRI SIGN ANUSVARA
 A825..A826    ; Mn #   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
-A8C4          ; Mn #       SAURASHTRA SIGN VIRAMA
+A8C4..A8C5    ; Mn #   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8E0..A8F1    ; Mn #  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
 A926..A92D    ; Mn #   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
 A947..A951    ; Mn #  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
@@ -2647,6 +2693,7 @@ FE20..FE2F    ; Mn #  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITL
 1122F..11231  ; Mn #   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
 11234         ; Mn #       KHOJKI SIGN ANUSVARA
 11236..11237  ; Mn #   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E         ; Mn #       KHOJKI SIGN SUKUN
 112DF         ; Mn #       KHUDAWADI SIGN ANUSVARA
 112E3..112EA  ; Mn #   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
 11300..11301  ; Mn #   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
@@ -2654,6 +2701,9 @@ FE20..FE2F    ; Mn #  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITL
 11340         ; Mn #       GRANTHA VOWEL SIGN II
 11366..1136C  ; Mn #   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; Mn #   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11438..1143F  ; Mn #   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11442..11444  ; Mn #   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11446         ; Mn #       NEWA SIGN NUKTA
 114B3..114B8  ; Mn #   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
 114BA         ; Mn #       TIRHUTA VOWEL SIGN SHORT E
 114BF..114C0  ; Mn #   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
@@ -2672,6 +2722,13 @@ FE20..FE2F    ; Mn #  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITL
 1171D..1171F  ; Mn #   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
 11722..11725  ; Mn #   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
 11727..1172B  ; Mn #   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+11C30..11C36  ; Mn #   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; Mn #   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3F         ; Mn #       BHAIKSUKI SIGN VIRAMA
+11C92..11CA7  ; Mn #  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CAA..11CB0  ; Mn #   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB2..11CB3  ; Mn #   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB5..11CB6  ; Mn #   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 16AF0..16AF4  ; Mn #   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
 16B30..16B36  ; Mn #   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
 16F8F..16F92  ; Mn #   [4] MIAO TONE RIGHT..MIAO TONE BELOW
@@ -2687,10 +2744,16 @@ FE20..FE2F    ; Mn #  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITL
 1DA84         ; Mn #       SIGNWRITING LOCATION HEAD NECK
 1DA9B..1DA9F  ; Mn #   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF  ; Mn #  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006  ; Mn #   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; Mn #  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; Mn #   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; Mn #   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; Mn #   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E8D0..1E8D6  ; Mn #   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E944..1E94A  ; Mn #   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
 E0100..E01EF  ; Mn # [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 
-# Total code points: 1567
+# Total code points: 1690
 
 # ================================================
 
@@ -2837,6 +2900,9 @@ ABEC          ; Mc #       MEETEI MAYEK LUM IYEK
 1134B..1134D  ; Mc #   [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
 11357         ; Mc #       GRANTHA AU LENGTH MARK
 11362..11363  ; Mc #   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+11435..11437  ; Mc #   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11440..11441  ; Mc #   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11445         ; Mc #       NEWA SIGN VISARGA
 114B0..114B2  ; Mc #   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B9         ; Mc #       TIRHUTA VOWEL SIGN E
 114BB..114BE  ; Mc #   [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU
@@ -2852,11 +2918,16 @@ ABEC          ; Mc #       MEETEI MAYEK LUM IYEK
 116B6         ; Mc #       TAKRI SIGN VIRAMA
 11720..11721  ; Mc #   [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
 11726         ; Mc #       AHOM VOWEL SIGN E
+11C2F         ; Mc #       BHAIKSUKI VOWEL SIGN AA
+11C3E         ; Mc #       BHAIKSUKI SIGN VISARGA
+11CA9         ; Mc #       MARCHEN SUBJOINED LETTER YA
+11CB1         ; Mc #       MARCHEN VOWEL SIGN I
+11CB4         ; Mc #       MARCHEN VOWEL SIGN O
 16F51..16F7E  ; Mc #  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
 1D165..1D166  ; Mc #   [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
 1D16D..1D172  ; Mc #   [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
 
-# Total code points: 383
+# Total code points: 394
 
 # ================================================
 
@@ -2905,16 +2976,19 @@ FF10..FF19    ; Nd #  [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
 11136..1113F  ; Nd #  [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
 111D0..111D9  ; Nd #  [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
 112F0..112F9  ; Nd #  [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
+11450..11459  ; Nd #  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
 114D0..114D9  ; Nd #  [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
 11650..11659  ; Nd #  [10] MODI DIGIT ZERO..MODI DIGIT NINE
 116C0..116C9  ; Nd #  [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
 11730..11739  ; Nd #  [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
 118E0..118E9  ; Nd #  [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
+11C50..11C59  ; Nd #  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
 16A60..16A69  ; Nd #  [10] MRO DIGIT ZERO..MRO DIGIT NINE
 16B50..16B59  ; Nd #  [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
 1D7CE..1D7FF  ; Nd #  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+1E950..1E959  ; Nd #  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
 
-# Total code points: 550
+# Total code points: 580
 
 # ================================================
 
@@ -2946,7 +3020,8 @@ A6E6..A6EF    ; Nl #  [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM
 0B72..0B77    ; No #   [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS
 0BF0..0BF2    ; No #   [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
 0C78..0C7E    ; No #   [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
-0D70..0D75    ; No #   [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
+0D58..0D5E    ; No #   [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
+0D70..0D78    ; No #   [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
 0F2A..0F33    ; No #  [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO
 1369..137C    ; No #  [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND
 17F0..17F9    ; No #  [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON
@@ -2993,12 +3068,13 @@ A830..A835    ; No #   [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTIO
 111E1..111F4  ; No #  [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND
 1173A..1173B  ; No #   [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY
 118EA..118F2  ; No #   [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
+11C5A..11C6C  ; No #  [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
 16B5B..16B61  ; No #   [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS
 1D360..1D371  ; No #  [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
 1E8C7..1E8CF  ; No #   [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
 1F100..1F10C  ; No #  [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
 
-# Total code points: 647
+# Total code points: 676
 
 # ================================================
 
@@ -3048,6 +3124,7 @@ A830..A835    ; No #   [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTIO
 061C          ; Cf #       ARABIC LETTER MARK
 06DD          ; Cf #       ARABIC END OF AYAH
 070F          ; Cf #       SYRIAC ABBREVIATION MARK
+08E2          ; Cf #       ARABIC DISPUTED END OF AYAH
 180E          ; Cf #       MONGOLIAN VOWEL SEPARATOR
 200B..200F    ; Cf #   [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK
 202A..202E    ; Cf #   [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
@@ -3061,7 +3138,7 @@ FFF9..FFFB    ; Cf #   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION
 E0001         ; Cf #       LANGUAGE TAG
 E0020..E007F  ; Cf #  [96] TAG SPACE..CANCEL TAG
 
-# Total code points: 150
+# Total code points: 151
 
 # ================================================
 
@@ -3366,6 +3443,7 @@ FF3F          ; Pc #       FULLWIDTH LOW LINE
 2E30..2E39    ; Po #  [10] RING POINT..TOP HALF SECTION SIGN
 2E3C..2E3F    ; Po #   [4] STENOGRAPHIC FULL STOP..CAPITULUM
 2E41          ; Po #       REVERSED COMMA
+2E43..2E44    ; Po #   [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
 3001..3003    ; Po #   [3] IDEOGRAPHIC COMMA..DITTO MARK
 303D          ; Po #       PART ALTERNATION MARK
 30FB          ; Po #       KATAKANA MIDDLE DOT
@@ -3429,10 +3507,16 @@ FF64..FF65    ; Po #   [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDL
 111DD..111DF  ; Po #   [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2
 11238..1123D  ; Po #   [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN
 112A9         ; Po #       MULTANI SECTION MARK
+1144B..1144F  ; Po #   [5] NEWA DANDA..NEWA ABBREVIATION SIGN
+1145B         ; Po #       NEWA PLACEHOLDER MARK
+1145D         ; Po #       NEWA INSERTION SIGN
 114C6         ; Po #       TIRHUTA ABBREVIATION SIGN
 115C1..115D7  ; Po #  [23] SIDDHAM SIGN SIDDHAM..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
 11641..11643  ; Po #   [3] MODI DANDA..MODI ABBREVIATION SIGN
+11660..1166C  ; Po #  [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
 1173C..1173E  ; Po #   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
+11C41..11C45  ; Po #   [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2
+11C70..11C71  ; Po #   [2] MARCHEN HEAD MARK..MARCHEN MARK SHAD
 12470..12474  ; Po #   [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
 16A6E..16A6F  ; Po #   [2] MRO DANDA..MRO DOUBLE DANDA
 16AF5         ; Po #       BASSA VAH FULL STOP
@@ -3440,8 +3524,9 @@ FF64..FF65    ; Po #   [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDL
 16B44         ; Po #       PAHAWH HMONG SIGN XAUS
 1BC9F         ; Po #       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
 1DA87..1DA8B  ; Po #   [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS
+1E95E..1E95F  ; Po #   [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
 
-# Total code points: 513
+# Total code points: 544
 
 # ================================================
 
@@ -3594,6 +3679,7 @@ FFE3          ; Sk #       FULLWIDTH MACRON
 0BF3..0BF8    ; So #   [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN
 0BFA          ; So #       TAMIL NUMBER SIGN
 0C7F          ; So #       TELUGU SIGN TUUMU
+0D4F          ; So #       MALAYALAM SIGN PARA
 0D79          ; So #       MALAYALAM DATE MARK
 0F01..0F03    ; So #   [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
 0F13          ; So #       TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN
@@ -3642,7 +3728,7 @@ FFE3          ; Sk #       FULLWIDTH MACRON
 232B..237B    ; So #  [81] ERASE TO THE LEFT..NOT CHECK MARK
 237D..239A    ; So #  [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
 23B4..23DB    ; So #  [40] TOP SQUARE BRACKET..FUSE
-23E2..23FA    ; So #  [25] WHITE TRAPEZIUM..BLACK CIRCLE FOR RECORD
+23E2..23FE    ; So #  [29] WHITE TRAPEZIUM..POWER SLEEP SYMBOL
 2400..2426    ; So #  [39] SYMBOL FOR NULL..SYMBOL FOR SUBSTITUTE FORM TWO
 2440..244A    ; So #  [11] OCR HOOK..OCR DOUBLE BACKSLASH
 249C..24E9    ; So #  [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
@@ -3694,7 +3780,7 @@ FFED..FFEE    ; So #   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
 FFFC..FFFD    ; So #   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
 10137..1013F  ; So #   [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
 10179..10189  ; So #  [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
-1018C         ; So #       GREEK SINUSOID SIGN
+1018C..1018E  ; So #   [3] GREEK SINUSOID SIGN..NOMISMA SIGN
 10190..1019B  ; So #  [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
 101A0         ; So #       GREEK SYMBOL TAU RHO
 101D0..101FC  ; So #  [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
@@ -3727,17 +3813,15 @@ FFFC..FFFD    ; So #   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
 1F0D1..1F0F5  ; So #  [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21
 1F110..1F12E  ; So #  [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
 1F130..1F16B  ; So #  [60] SQUARED LATIN CAPITAL LETTER A..RAISED MD SIGN
-1F170..1F19A  ; So #  [43] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VS
+1F170..1F1AC  ; So #  [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD
 1F1E6..1F202  ; So #  [29] REGIONAL INDICATOR SYMBOL LETTER A..SQUARED KATAKANA SA
-1F210..1F23A  ; So #  [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
+1F210..1F23B  ; So #  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
 1F240..1F248  ; So #   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
 1F250..1F251  ; So #   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
 1F300..1F3FA  ; So # [251] CYCLONE..AMPHORA
-1F400..1F579  ; So # [378] RAT..JOYSTICK
-1F57B..1F5A3  ; So #  [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
-1F5A5..1F6D0  ; So # [300] DESKTOP COMPUTER..PLACE OF WORSHIP
+1F400..1F6D2  ; So # [723] RAT..SHOPPING TROLLEY
 1F6E0..1F6EC  ; So #  [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
-1F6F0..1F6F3  ; So #   [4] SATELLITE..PASSENGER SHIP
+1F6F0..1F6F6  ; So #   [7] SATELLITE..CANOE
 1F700..1F773  ; So # [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
 1F780..1F7D4  ; So #  [85] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR
 1F800..1F80B  ; So #  [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
@@ -3745,11 +3829,16 @@ FFFC..FFFD    ; So #   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
 1F850..1F859  ; So #  [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
 1F860..1F887  ; So #  [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
 1F890..1F8AD  ; So #  [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
-1F910..1F918  ; So #   [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS
-1F980..1F984  ; So #   [5] CRAB..UNICORN FACE
+1F910..1F91E  ; So #  [15] ZIPPER-MOUTH FACE..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+1F920..1F927  ; So #   [8] FACE WITH COWBOY HAT..SNEEZING FACE
+1F930         ; So #       PREGNANT WOMAN
+1F933..1F93E  ; So #  [12] SELFIE..HANDBALL
+1F940..1F94B  ; So #  [12] WILTED FLOWER..MARTIAL ARTS UNIFORM
+1F950..1F95E  ; So #  [15] CROISSANT..PANCAKES
+1F980..1F991  ; So #  [18] CRAB..SQUID
 1F9C0         ; So #       CHEESE WEDGE
 
-# Total code points: 5677
+# Total code points: 5777
 
 # ================================================
 
index 4fe657e..548621d 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedJoiningGroup-8.0.0.txt
-# Date: 2015-02-13, 13:47:12 GMT [MD]
+# DerivedJoiningGroup-9.0.0.txt
+# Date: 2016-03-02, 18:54:59 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
@@ -50,8 +51,9 @@
 0679..0680    ; Beh # Lo   [8] ARABIC LETTER TTEH..ARABIC LETTER BEHEH
 0750..0756    ; Beh # Lo   [7] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER BEH WITH SMALL V
 08A0..08A1    ; Beh # Lo   [2] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER BEH WITH HAMZA ABOVE
+08B6..08B8    ; Beh # Lo   [3] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER TEH WITH SMALL TEH ABOVE
 
-# Total code points: 21
+# Total code points: 24
 
 # ================================================
 
 0771          ; Reh # Lo       ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS
 08AA          ; Reh # Lo       ARABIC LETTER REH WITH LOOP
 08B2          ; Reh # Lo       ARABIC LETTER ZAIN WITH INVERTED V ABOVE
+08B9          ; Reh # Lo       ARABIC LETTER REH WITH SMALL NOON ABOVE
 
-# Total code points: 18
+# Total code points: 19
 
 # ================================================
 
 06D0..06D1    ; Yeh # Lo   [2] ARABIC LETTER E..ARABIC LETTER YEH WITH THREE DOTS BELOW
 0777          ; Yeh # Lo       ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW
 08A8..08A9    ; Yeh # Lo   [2] ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE..ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE
+08BA          ; Yeh # Lo       ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE
 
-# Total code points: 10
+# Total code points: 11
 
 # ================================================
 
 
 # Total code points: 2
 
+# ================================================
+
+08BB          ; African_Feh # Lo       ARABIC LETTER AFRICAN FEH
+
+# Total code points: 1
+
+# ================================================
+
+08BC          ; African_Qaf # Lo       ARABIC LETTER AFRICAN QAF
+
+# Total code points: 1
+
+# ================================================
+
+08BD          ; African_Noon # Lo       ARABIC LETTER AFRICAN NOON
+
+# Total code points: 1
+
 # EOF
index 3261fe0..0fb5439 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedJoiningType-8.0.0.txt
-# Date: 2015-02-13, 13:47:12 GMT [MD]
+# DerivedJoiningType-9.0.0.txt
+# Date: 2016-06-01, 10:34:26 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
@@ -66,6 +67,8 @@
 08A0..08A9    ; D # Lo  [10] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE
 08AF..08B0    ; D # Lo   [2] ARABIC LETTER SAD WITH THREE DOTS BELOW..ARABIC LETTER GAF WITH INVERTED STROKE
 08B3..08B4    ; D # Lo   [2] ARABIC LETTER AIN WITH THREE DOTS BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08B8    ; D # Lo   [3] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER TEH WITH SMALL TEH ABOVE
+08BA..08BD    ; D # Lo   [4] ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE..ARABIC LETTER AFRICAN NOON
 1807          ; D # Po       MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
 1820..1842    ; D # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; D # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
@@ -85,8 +88,9 @@ A840..A871    ; D # Lo  [50] PHAGS-PA LETTER KA..PHAGS-PA SUBJOINED LETTER RA
 10B8D         ; D # Lo       PSALTER PAHLAVI LETTER SAMEKH
 10B90         ; D # Lo       PSALTER PAHLAVI LETTER SHIN
 10BAD..10BAE  ; D # No   [2] PSALTER PAHLAVI NUMBER TEN..PSALTER PAHLAVI NUMBER TWENTY
+1E900..1E943  ; D # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
 
-# Total code points: 426
+# Total code points: 501
 
 # ================================================
 
@@ -127,6 +131,7 @@ A840..A871    ; D # Lo  [50] PHAGS-PA LETTER KA..PHAGS-PA SUBJOINED LETTER RA
 08AA..08AC    ; R # Lo   [3] ARABIC LETTER REH WITH LOOP..ARABIC LETTER ROHINGYA YEH
 08AE          ; R # Lo       ARABIC LETTER DAL WITH THREE DOTS BELOW
 08B1..08B2    ; R # Lo   [2] ARABIC LETTER STRAIGHT WAW..ARABIC LETTER ZAIN WITH INVERTED V ABOVE
+08B9          ; R # Lo       ARABIC LETTER REH WITH SMALL NOON ABOVE
 10AC5         ; R # Lo       MANICHAEAN LETTER DALETH
 10AC7         ; R # Lo       MANICHAEAN LETTER WAW
 10AC9..10ACA  ; R # Lo   [2] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER ZHAYIN
@@ -143,7 +148,7 @@ A840..A871    ; D # Lo  [50] PHAGS-PA LETTER KA..PHAGS-PA SUBJOINED LETTER RA
 10B91         ; R # Lo       PSALTER PAHLAVI LETTER TAW
 10BA9..10BAC  ; R # No   [4] PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER FOUR
 
-# Total code points: 111
+# Total code points: 112
 
 # ================================================
 
@@ -186,6 +191,7 @@ A872          ; L # Lo       PHAGS-PA SUPERFIXED LETTER RA
 0825..0827    ; T # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
 0829..082D    ; T # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
 0859..085B    ; T # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+08D4..08E1    ; T # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
 08E3..0902    ; T # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
 093A          ; T # Mn       DEVANAGARI VOWEL SIGN OE
 093C          ; T # Mn       DEVANAGARI SIGN NUKTA
@@ -280,6 +286,7 @@ A872          ; L # Lo       PHAGS-PA SUPERFIXED LETTER RA
 17C9..17D3    ; T # Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
 17DD          ; T # Mn       KHMER SIGN ATTHACAN
 180B..180D    ; T # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+1885..1886    ; T # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
 18A9          ; T # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 1920..1922    ; T # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
 1927..1928    ; T # Mn   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
@@ -319,7 +326,7 @@ A872          ; L # Lo       PHAGS-PA SUPERFIXED LETTER RA
 1CF4          ; T # Mn       VEDIC TONE CANDRA ABOVE
 1CF8..1CF9    ; T # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
 1DC0..1DF5    ; T # Mn  [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF    ; T # Mn   [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+1DFB..1DFF    ; T # Mn   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
 200B          ; T # Cf       ZERO WIDTH SPACE
 200E..200F    ; T # Cf   [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
 202A..202E    ; T # Cf   [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
@@ -344,7 +351,7 @@ A802          ; T # Mn       SYLOTI NAGRI SIGN DVISVARA
 A806          ; T # Mn       SYLOTI NAGRI SIGN HASANTA
 A80B          ; T # Mn       SYLOTI NAGRI SIGN ANUSVARA
 A825..A826    ; T # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
-A8C4          ; T # Mn       SAURASHTRA SIGN VIRAMA
+A8C4..A8C5    ; T # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8E0..A8F1    ; T # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
 A926..A92D    ; T # Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
 A947..A951    ; T # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
@@ -399,6 +406,7 @@ FFF9..FFFB    ; T # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATI
 1122F..11231  ; T # Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
 11234         ; T # Mn       KHOJKI SIGN ANUSVARA
 11236..11237  ; T # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E         ; T # Mn       KHOJKI SIGN SUKUN
 112DF         ; T # Mn       KHUDAWADI SIGN ANUSVARA
 112E3..112EA  ; T # Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
 11300..11301  ; T # Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
@@ -406,6 +414,9 @@ FFF9..FFFB    ; T # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATI
 11340         ; T # Mn       GRANTHA VOWEL SIGN II
 11366..1136C  ; T # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; T # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11438..1143F  ; T # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11442..11444  ; T # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11446         ; T # Mn       NEWA SIGN NUKTA
 114B3..114B8  ; T # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
 114BA         ; T # Mn       TIRHUTA VOWEL SIGN SHORT E
 114BF..114C0  ; T # Mn   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
@@ -424,6 +435,13 @@ FFF9..FFFB    ; T # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATI
 1171D..1171F  ; T # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
 11722..11725  ; T # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
 11727..1172B  ; T # Mn   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+11C30..11C36  ; T # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; T # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3F         ; T # Mn       BHAIKSUKI SIGN VIRAMA
+11C92..11CA7  ; T # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CAA..11CB0  ; T # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB2..11CB3  ; T # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB5..11CB6  ; T # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 16AF0..16AF4  ; T # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
 16B30..16B36  ; T # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
 16F8F..16F92  ; T # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
@@ -441,11 +459,17 @@ FFF9..FFFB    ; T # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATI
 1DA84         ; T # Mn       SIGNWRITING LOCATION HEAD NECK
 1DA9B..1DA9F  ; T # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF  ; T # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006  ; T # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; T # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; T # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; T # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; T # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E8D0..1E8D6  ; T # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E944..1E94A  ; T # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
 E0001         ; T # Cf       LANGUAGE TAG
 E0020..E007F  ; T # Cf  [96] TAG SPACE..CANCEL TAG
 E0100..E01EF  ; T # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 
-# Total code points: 1716
+# Total code points: 1839
 
 # EOF
index bbdbac1..f9140d8 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedLineBreak-8.0.0.txt
-# Date: 2015-02-14, 10:26:02 GMT [MD]
+# DerivedLineBreak-9.0.0.txt
+# Date: 2016-06-01, 10:34:26 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
@@ -23,8 +24,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 776068 code points not listed here.
-# Total code points: 913536
+# The above property value applies to 766379 code points not listed here.
+# Total code points: 903847
 
 # ================================================
 
@@ -113,8 +114,9 @@ FF62          ; OP # Ps       HALFWIDTH LEFT CORNER BRACKET
 13288         ; OP # Lo       EGYPTIAN HIEROGLYPH O036C
 13379         ; OP # Lo       EGYPTIAN HIEROGLYPH V011A
 145CE         ; OP # Lo       ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARK
+1E95E..1E95F  ; OP # Po   [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
 
-# Total code points: 85
+# Total code points: 87
 
 # ================================================
 
@@ -281,9 +283,10 @@ FE54..FE55    ; NS # Po   [2] SMALL SEMICOLON..SMALL COLON
 FF1A..FF1B    ; NS # Po   [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
 FF65          ; NS # Po       HALFWIDTH KATAKANA MIDDLE DOT
 FF9E..FF9F    ; NS # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+16FE0         ; NS # Lm       TANGUT ITERATION MARK
 1F679..1F67B  ; NS # So   [3] HEAVY INTERROBANG ORNAMENT..HEAVY SANS-SERIF INTERROBANG ORNAMENT
 
-# Total code points: 29
+# Total code points: 30
 
 # ================================================
 
@@ -312,8 +315,9 @@ FE56..FE57    ; EX # Po   [2] SMALL QUESTION MARK..SMALL EXCLAMATION MARK
 FF01          ; EX # Po       FULLWIDTH EXCLAMATION MARK
 FF1F          ; EX # Po       FULLWIDTH QUESTION MARK
 115C4..115C5  ; EX # Po   [2] SIDDHAM SEPARATOR DOT..SIDDHAM SEPARATOR BAR
+11C71         ; EX # Po       MARCHEN MARK SHAD
 
-# Total code points: 36
+# Total code points: 37
 
 # ================================================
 
@@ -444,16 +448,19 @@ ABF0..ABF9    ; NU # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
 11136..1113F  ; NU # Nd  [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
 111D0..111D9  ; NU # Nd  [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
 112F0..112F9  ; NU # Nd  [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
+11450..11459  ; NU # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
 114D0..114D9  ; NU # Nd  [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
 11650..11659  ; NU # Nd  [10] MODI DIGIT ZERO..MODI DIGIT NINE
 116C0..116C9  ; NU # Nd  [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
 11730..11739  ; NU # Nd  [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
 118E0..118E9  ; NU # Nd  [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
+11C50..11C59  ; NU # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
 16A60..16A69  ; NU # Nd  [10] MRO DIGIT ZERO..MRO DIGIT NINE
 16B50..16B59  ; NU # Nd  [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
 1D7CE..1D7FF  ; NU # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+1E950..1E959  ; NU # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
 
-# Total code points: 542
+# Total code points: 572
 
 # ================================================
 
@@ -562,6 +569,8 @@ ABF0..ABF9    ; NU # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
 0840..0858    ; AL # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
 085E          ; AL # Po       MANDAIC PUNCTUATION
 08A0..08B4    ; AL # Lo  [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
+08B6..08BD    ; AL # Lo   [8] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
+08E2          ; AL # Cf       ARABIC DISPUTED END OF AYAH
 0904..0939    ; AL # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
 093D          ; AL # Lo       DEVANAGARI SIGN AVAGRAHA
 0950          ; AL # Lo       DEVANAGARI OM
@@ -638,6 +647,7 @@ ABF0..ABF9    ; NU # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
 0C60..0C61    ; AL # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
 0C78..0C7E    ; AL # No   [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
 0C7F          ; AL # So       TELUGU SIGN TUUMU
+0C80          ; AL # Lo       KANNADA SIGN SPACING CANDRABINDU
 0C85..0C8C    ; AL # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
 0C8E..0C90    ; AL # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
 0C92..0CA8    ; AL # Lo  [23] KANNADA LETTER O..KANNADA LETTER NA
@@ -652,8 +662,11 @@ ABF0..ABF9    ; NU # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
 0D12..0D3A    ; AL # Lo  [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
 0D3D          ; AL # Lo       MALAYALAM SIGN AVAGRAHA
 0D4E          ; AL # Lo       MALAYALAM LETTER DOT REPH
+0D4F          ; AL # So       MALAYALAM SIGN PARA
+0D54..0D56    ; AL # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
+0D58..0D5E    ; AL # No   [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
 0D5F..0D61    ; AL # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
-0D70..0D75    ; AL # No   [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
+0D70..0D78    ; AL # No   [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
 0D7A..0D7F    ; AL # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
 0D85..0D96    ; AL # Lo  [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
 0D9A..0DB1    ; AL # Lo  [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
@@ -730,7 +743,8 @@ ABF0..ABF9    ; NU # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
 1820..1842    ; AL # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
 1843          ; AL # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
 1844..1877    ; AL # Lo  [52] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER MANCHU ZHA
-1880..18A8    ; AL # Lo  [41] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER MANCHU ALI GALI BHA
+1880..1884    ; AL # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1887..18A8    ; AL # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
 18AA          ; AL # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
 18B0..18F5    ; AL # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
 1900..191E    ; AL # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
@@ -751,6 +765,7 @@ ABF0..ABF9    ; NU # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
 1C4D..1C4F    ; AL # Lo   [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
 1C5A..1C77    ; AL # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
 1C78..1C7D    ; AL # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+1C80..1C88    ; AL # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
 1CC0..1CC7    ; AL # Po   [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
 1CD3          ; AL # Po       VEDIC SIGN NIHSHVASA
 1CE9..1CEC    ; AL # Lo   [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
@@ -910,7 +925,7 @@ ABF0..ABF9    ; NU # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
 23B4..23DB    ; AL # So  [40] TOP SQUARE BRACKET..FUSE
 23DC..23E1    ; AL # Sm   [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
 23E2..23EF    ; AL # So  [14] WHITE TRAPEZIUM..BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR
-23F4..23FA    ; AL # So   [7] BLACK MEDIUM LEFT-POINTING TRIANGLE..BLACK CIRCLE FOR RECORD
+23F4..23FE    ; AL # So  [11] BLACK MEDIUM LEFT-POINTING TRIANGLE..POWER SLEEP SYMBOL
 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
@@ -953,7 +968,7 @@ ABF0..ABF9    ; NU # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
 270E..2756    ; AL # So  [73] LOWER RIGHT PENCIL..BLACK DIAMOND MINUS WHITE X
 2758..275A    ; AL # So   [3] LIGHT VERTICAL BAR..HEAVY VERTICAL BAR
 2761          ; AL # So       CURVED STEM PARAGRAPH SIGN ORNAMENT
-2764..2767    ; AL # So   [4] HEAVY BLACK HEART..ROTATED FLORAL HEART BULLET
+2765..2767    ; AL # So   [3] ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET
 2794..27BF    ; AL # So  [44] HEAVY WIDE-HEADED RIGHTWARDS ARROW..DOUBLE CURLY LOOP
 27C0..27C4    ; AL # Sm   [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
 27C7..27E5    ; AL # Sm  [31] OR WITH DOT INSIDE..WHITE SQUARE WITH RIGHTWARDS TICK
@@ -1032,7 +1047,7 @@ A788          ; AL # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
 A789..A78A    ; AL # Sk   [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
 A78B..A78E    ; AL # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 A78F          ; AL # Lo       LATIN LETTER SINOLOGICAL DOT
-A790..A7AD    ; AL # L&  [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
+A790..A7AE    ; AL # L&  [31] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER SMALL CAPITAL I
 A7B0..A7B7    ; AL # L&   [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
 A7F7          ; AL # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
 A7F8..A7F9    ; AL # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
@@ -1089,13 +1104,6 @@ FDF0..FDFB    ; AL # Lo  [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN IS
 FDFD          ; AL # So       ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
 FE70..FE74    ; AL # Lo   [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
 FE76..FEFC    ; AL # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
-FF66          ; AL # Lo       HALFWIDTH KATAKANA LETTER WO
-FF71..FF9D    ; AL # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
-FFA0..FFBE    ; AL # Lo  [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
-FFC2..FFC7    ; AL # Lo   [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
-FFCA..FFCF    ; AL # Lo   [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
-FFD2..FFD7    ; AL # Lo   [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
-FFDA..FFDC    ; AL # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
 FFE8          ; AL # So       HALFWIDTH FORMS LIGHT VERTICAL
 FFE9..FFEC    ; AL # Sm   [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
 FFED..FFEE    ; AL # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
@@ -1112,7 +1120,7 @@ FFED..FFEE    ; AL # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
 10175..10178  ; AL # No   [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
 10179..10189  ; AL # So  [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
 1018A..1018B  ; AL # No   [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN
-1018C         ; AL # So       GREEK SINUSOID SIGN
+1018C..1018E  ; AL # So   [3] GREEK SINUSOID SIGN..NOMISMA SIGN
 10190..1019B  ; AL # So  [12] ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
 101A0         ; AL # So       GREEK SYMBOL TAU RHO
 101D0..101FC  ; AL # So  [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
@@ -1132,6 +1140,8 @@ FFED..FFEE    ; AL # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
 103D1..103D5  ; AL # Nl   [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
 10400..1044F  ; AL # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
 10450..1049D  ; AL # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+104B0..104D3  ; AL # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+104D8..104FB  ; AL # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
 10500..10527  ; AL # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
 10530..10563  ; AL # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
 1056F         ; AL # Po       CAUCASIAN ALBANIAN CITATION MARK
@@ -1228,6 +1238,10 @@ FFED..FFEE    ; AL # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
 1133D         ; AL # Lo       GRANTHA SIGN AVAGRAHA
 11350         ; AL # Lo       GRANTHA OM
 1135D..11361  ; AL # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+11400..11434  ; AL # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+11447..1144A  ; AL # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+1144F         ; AL # Po       NEWA ABBREVIATION SIGN
+1145D         ; AL # Po       NEWA INSERTION SIGN
 11480..114AF  ; AL # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
 114C4..114C5  ; AL # Lo   [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
 114C6         ; AL # Po       TIRHUTA ABBREVIATION SIGN
@@ -1243,6 +1257,11 @@ FFED..FFEE    ; AL # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
 118EA..118F2  ; AL # No   [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
 118FF         ; AL # Lo       WARANG CITI OM
 11AC0..11AF8  ; AL # Lo  [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+11C00..11C08  ; AL # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+11C0A..11C2E  ; AL # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+11C40         ; AL # Lo       BHAIKSUKI SIGN AVAGRAHA
+11C5A..11C6C  ; AL # No  [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
+11C72..11C8F  ; AL # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
 12000..12399  ; AL # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
 12400..1246E  ; AL # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 12480..12543  ; AL # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
@@ -1331,6 +1350,7 @@ FFED..FFEE    ; AL # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
 1DA8B         ; AL # Po       SIGNWRITING PARENTHESIS
 1E800..1E8C4  ; AL # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
 1E8C7..1E8CF  ; AL # No   [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
+1E900..1E943  ; AL # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
 1EE00..1EE03  ; AL # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
 1EE05..1EE1F  ; AL # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
 1EE21..1EE22  ; AL # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
@@ -1370,7 +1390,6 @@ FFED..FFEE    ; AL # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
 1F39C..1F39D  ; AL # So   [2] BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES
 1F3B5..1F3B6  ; AL # So   [2] MUSICAL NOTE..MULTIPLE MUSICAL NOTES
 1F3BC         ; AL # So       MUSICAL SCORE
-1F3FB..1F3FF  ; AL # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
 1F4A0         ; AL # So       DIAMOND SHAPE WITH A DOT INSIDE
 1F4A2         ; AL # So       ANGER SYMBOL
 1F4A4         ; AL # So       SLEEPING SYMBOL
@@ -1391,7 +1410,7 @@ FFED..FFEE    ; AL # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
 1F860..1F887  ; AL # So  [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
 1F890..1F8AD  ; AL # So  [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
 
-# Total code points: 19294
+# Total code points: 19523
 
 # ================================================
 
@@ -1402,7 +1421,8 @@ FFED..FFEE    ; AL # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
 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
+261A..261C    ; ID # So   [3] BLACK LEFT POINTING INDEX..WHITE LEFT POINTING INDEX
+261E..261F    ; ID # So   [2] WHITE RIGHT 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
@@ -1415,9 +1435,11 @@ FFED..FFEE    ; AL # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
 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
+26F7..26F8    ; ID # So   [2] SKIER..ICE SKATE
+26FA          ; ID # So       TENT
 26FD..2704    ; ID # So   [8] FUEL PUMP..WHITE SCISSORS
-2708..270D    ; ID # So   [6] AIRPLANE..WRITING HAND
+2708..2709    ; ID # So   [2] AIRPLANE..ENVELOPE
+2764          ; ID # So       HEAVY BLACK HEART
 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
@@ -1518,43 +1540,107 @@ FF40          ; ID # Sk       FULLWIDTH GRAVE ACCENT
 FF41..FF5A    ; ID # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
 FF5C          ; ID # Sm       FULLWIDTH VERTICAL LINE
 FF5E          ; ID # Sm       FULLWIDTH TILDE
+FF66          ; ID # Lo       HALFWIDTH KATAKANA LETTER WO
+FF71..FF9D    ; ID # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+FFA0..FFBE    ; ID # Lo  [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7    ; ID # Lo   [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF    ; ID # Lo   [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7    ; ID # Lo   [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC    ; ID # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
 FFE2          ; ID # Sm       FULLWIDTH NOT SIGN
 FFE3          ; ID # Sk       FULLWIDTH MACRON
 FFE4          ; ID # So       FULLWIDTH BROKEN BAR
+17000..187EC  ; ID # Lo [6125] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
+18800..18AF2  ; ID # Lo [755] TANGUT COMPONENT-001..TANGUT COMPONENT-755
 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
+1F02C..1F02F  ; ID # Cn   [4] <reserved-1F02C>..<reserved-1F02F>
 1F030..1F093  ; ID # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
+1F094..1F09F  ; ID # Cn  [12] <reserved-1F094>..<reserved-1F09F>
 1F0A0..1F0AE  ; ID # So  [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES
+1F0AF..1F0B0  ; ID # Cn   [2] <reserved-1F0AF>..<reserved-1F0B0>
 1F0B1..1F0BF  ; ID # So  [15] PLAYING CARD ACE OF HEARTS..PLAYING CARD RED JOKER
+1F0C0         ; ID # Cn       <reserved-1F0C0>
 1F0C1..1F0CF  ; ID # So  [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
+1F0D0         ; ID # Cn       <reserved-1F0D0>
 1F0D1..1F0F5  ; ID # So  [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21
+1F0F6..1F0FF  ; ID # Cn  [10] <reserved-1F0F6>..<reserved-1F0FF>
+1F10D..1F10F  ; ID # Cn   [3] <reserved-1F10D>..<reserved-1F10F>
+1F12F         ; ID # Cn       <reserved-1F12F>
+1F16C..1F16F  ; ID # Cn   [4] <reserved-1F16C>..<reserved-1F16F>
+1F1AD..1F1E5  ; ID # Cn  [57] <reserved-1F1AD>..<reserved-1F1E5>
 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
+1F203..1F20F  ; ID # Cn  [13] <reserved-1F203>..<reserved-1F20F>
+1F210..1F23B  ; ID # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
+1F23C..1F23F  ; ID # Cn   [4] <reserved-1F23C>..<reserved-1F23F>
 1F240..1F248  ; ID # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+1F249..1F24F  ; ID # Cn   [7] <reserved-1F249>..<reserved-1F24F>
 1F250..1F251  ; ID # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
-1F300..1F39B  ; ID # So [156] CYCLONE..CONTROL KNOBS
+1F252..1F2FF  ; ID # Cn [174] <reserved-1F252>..<reserved-1F2FF>
+1F300..1F384  ; ID # So [133] CYCLONE..CHRISTMAS TREE
+1F386..1F39B  ; ID # So  [22] FIREWORKS..CONTROL KNOBS
 1F39E..1F3B4  ; ID # So  [23] FILM FRAMES..FLOWER PLAYING CARDS
 1F3B7..1F3BB  ; ID # So   [5] SAXOPHONE..VIOLIN
-1F3BD..1F3FA  ; ID # So  [62] RUNNING SHIRT WITH SASH..AMPHORA
-1F400..1F49F  ; ID # So [160] RAT..HEART DECORATION
+1F3BD..1F3C2  ; ID # So   [6] RUNNING SHIRT WITH SASH..SNOWBOARDER
+1F3C5..1F3C9  ; ID # So   [5] SPORTS MEDAL..RUGBY FOOTBALL
+1F3CC..1F3FA  ; ID # So  [47] GOLFER..AMPHORA
+1F400..1F441  ; ID # So  [66] RAT..EYE
+1F444..1F445  ; ID # So   [2] MOUTH..TONGUE
+1F451..1F465  ; ID # So  [21] CROWN..BUSTS IN SILHOUETTE
+1F46A..1F46D  ; ID # So   [4] FAMILY..TWO WOMEN HOLDING HANDS
+1F46F         ; ID # So       WOMAN WITH BUNNY EARS
+1F479..1F47B  ; ID # So   [3] JAPANESE OGRE..GHOST
+1F47D..1F480  ; ID # So   [4] EXTRATERRESTRIAL ALIEN..SKULL
+1F484         ; ID # So       LIPSTICK
+1F488..1F49F  ; ID # So  [24] BARBER POLE..HEART DECORATION
 1F4A1         ; ID # So       ELECTRIC LIGHT BULB
 1F4A3         ; ID # So       BOMB
-1F4A5..1F4AE  ; ID # So  [10] COLLISION SYMBOL..WHITE FLOWER
+1F4A5..1F4A9  ; ID # So   [5] COLLISION SYMBOL..PILE OF POO
+1F4AB..1F4AE  ; ID # So   [4] DIZZY SYMBOL..WHITE FLOWER
 1F4B0         ; ID # So       MONEY BAG
 1F4B3..1F4FF  ; ID # So  [77] CREDIT CARD..PRAYER BEADS
 1F507..1F516  ; ID # So  [16] SPEAKER WITH CANCELLATION STROKE..BOOKMARK
 1F525..1F531  ; ID # So  [13] FIRE..TRIDENT EMBLEM
-1F54A..1F579  ; ID # So  [48] DOVE OF PEACE..JOYSTICK
-1F57B..1F5A3  ; ID # So  [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
-1F5A5..1F5D3  ; ID # So  [47] DESKTOP COMPUTER..SPIRAL CALENDAR PAD
+1F54A..1F574  ; ID # So  [43] DOVE OF PEACE..MAN IN BUSINESS SUIT LEVITATING
+1F576..1F579  ; ID # So   [4] DARK SUNGLASSES..JOYSTICK
+1F57B..1F58F  ; ID # So  [21] LEFT HAND TELEPHONE RECEIVER..TURNED OK HAND SIGN
+1F591..1F594  ; ID # So   [4] REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND
+1F597..1F5D3  ; ID # So  [61] WHITE DOWN POINTING LEFT HAND INDEX..SPIRAL CALENDAR PAD
 1F5DC..1F5F3  ; ID # So  [24] COMPRESSION..BALLOT BOX WITH BALLOT
-1F5FA..1F64F  ; ID # So  [86] WORLD MAP..PERSON WITH FOLDED HANDS
-1F680..1F6D0  ; ID # So  [81] ROCKET..PLACE OF WORSHIP
+1F5FA..1F644  ; ID # So  [75] WORLD MAP..FACE WITH ROLLING EYES
+1F648..1F64A  ; ID # So   [3] SEE-NO-EVIL MONKEY..SPEAK-NO-EVIL MONKEY
+1F680..1F6A2  ; ID # So  [35] ROCKET..SHIP
+1F6A4..1F6B3  ; ID # So  [16] SPEEDBOAT..NO BICYCLES
+1F6B7..1F6BF  ; ID # So   [9] NO PEDESTRIANS..SHOWER
+1F6C1..1F6D2  ; ID # So  [18] BATHTUB..SHOPPING TROLLEY
+1F6D3..1F6DF  ; ID # Cn  [13] <reserved-1F6D3>..<reserved-1F6DF>
 1F6E0..1F6EC  ; ID # So  [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
-1F6F0..1F6F3  ; ID # So   [4] SATELLITE..PASSENGER SHIP
-1F910..1F918  ; ID # So   [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS
-1F980..1F984  ; ID # So   [5] CRAB..UNICORN FACE
+1F6ED..1F6EF  ; ID # Cn   [3] <reserved-1F6ED>..<reserved-1F6EF>
+1F6F0..1F6F6  ; ID # So   [7] SATELLITE..CANOE
+1F6F7..1F6FF  ; ID # Cn   [9] <reserved-1F6F7>..<reserved-1F6FF>
+1F774..1F77F  ; ID # Cn  [12] <reserved-1F774>..<reserved-1F77F>
+1F7D5..1F7FF  ; ID # Cn  [43] <reserved-1F7D5>..<reserved-1F7FF>
+1F80C..1F80F  ; ID # Cn   [4] <reserved-1F80C>..<reserved-1F80F>
+1F848..1F84F  ; ID # Cn   [8] <reserved-1F848>..<reserved-1F84F>
+1F85A..1F85F  ; ID # Cn   [6] <reserved-1F85A>..<reserved-1F85F>
+1F888..1F88F  ; ID # Cn   [8] <reserved-1F888>..<reserved-1F88F>
+1F8AE..1F90F  ; ID # Cn  [98] <reserved-1F8AE>..<reserved-1F90F>
+1F910..1F917  ; ID # So   [8] ZIPPER-MOUTH FACE..HUGGING FACE
+1F91F         ; ID # Cn       <reserved-1F91F>
+1F920..1F925  ; ID # So   [6] FACE WITH COWBOY HAT..LYING FACE
+1F927         ; ID # So       SNEEZING FACE
+1F928..1F92F  ; ID # Cn   [8] <reserved-1F928>..<reserved-1F92F>
+1F931..1F932  ; ID # Cn   [2] <reserved-1F931>..<reserved-1F932>
+1F93A..1F93B  ; ID # So   [2] FENCER..MODERN PENTATHLON
+1F93F         ; ID # Cn       <reserved-1F93F>
+1F940..1F94B  ; ID # So  [12] WILTED FLOWER..MARTIAL ARTS UNIFORM
+1F94C..1F94F  ; ID # Cn   [4] <reserved-1F94C>..<reserved-1F94F>
+1F950..1F95E  ; ID # So  [15] CROISSANT..PANCAKES
+1F95F..1F97F  ; ID # Cn  [33] <reserved-1F95F>..<reserved-1F97F>
+1F980..1F991  ; ID # So  [18] CRAB..SQUID
+1F992..1F9BF  ; ID # Cn  [46] <reserved-1F992>..<reserved-1F9BF>
 1F9C0         ; ID # So       CHEESE WEDGE
+1F9C1..1FFFD  ; ID # Cn [1597] <reserved-1F9C1>..<reserved-1FFFD>
 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
@@ -1567,7 +1653,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: 162973
+# Total code points: 172133
 
 # ================================================
 
@@ -1623,6 +1709,7 @@ FE19          ; IN # Po       PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
 0825..0827    ; CM # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
 0829..082D    ; CM # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
 0859..085B    ; CM # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+08D4..08E1    ; CM # Mn  [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
 08E3..0902    ; CM # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
 0903          ; CM # Mc       DEVANAGARI SIGN VISARGA
 093A          ; CM # Mn       DEVANAGARI VOWEL SIGN OE
@@ -1739,6 +1826,7 @@ FE19          ; IN # Po       PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
 1752..1753    ; CM # Mn   [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
 1772..1773    ; CM # Mn   [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
 180B..180D    ; CM # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+1885..1886    ; CM # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
 18A9          ; CM # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
 1920..1922    ; CM # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
 1923..1926    ; CM # Mc   [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
@@ -1794,8 +1882,9 @@ FE19          ; IN # Po       PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
 1CF4          ; CM # Mn       VEDIC TONE CANDRA ABOVE
 1CF8..1CF9    ; CM # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
 1DC0..1DF5    ; CM # Mn  [54] COMBINING DOTTED GRAVE ACCENT..COMBINING UP TACK ABOVE
-1DFC..1DFF    ; CM # Mn   [4] COMBINING DOUBLE INVERTED BREVE BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
-200C..200F    ; CM # Cf   [4] ZERO WIDTH NON-JOINER..RIGHT-TO-LEFT MARK
+1DFB..1DFF    ; CM # Mn   [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+200C          ; CM # Cf       ZERO WIDTH NON-JOINER
+200E..200F    ; CM # Cf   [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
 202A..202E    ; CM # Cf   [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
 2066..206F    ; CM # Cf  [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES
 20D0..20DC    ; CM # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
@@ -1823,7 +1912,7 @@ A825..A826    ; CM # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN
 A827          ; CM # Mc       SYLOTI NAGRI VOWEL SIGN OO
 A880..A881    ; CM # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
 A8B4..A8C3    ; CM # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
-A8C4          ; CM # Mn       SAURASHTRA SIGN VIRAMA
+A8C4..A8C5    ; CM # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
 A8E0..A8F1    ; CM # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
 A926..A92D    ; CM # Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
 A947..A951    ; CM # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
@@ -1896,6 +1985,7 @@ FFF9..FFFB    ; CM # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTAT
 11234         ; CM # Mn       KHOJKI SIGN ANUSVARA
 11235         ; CM # Mc       KHOJKI SIGN VIRAMA
 11236..11237  ; CM # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+1123E         ; CM # Mn       KHOJKI SIGN SUKUN
 112DF         ; CM # Mn       KHUDAWADI SIGN ANUSVARA
 112E0..112E2  ; CM # Mc   [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
 112E3..112EA  ; CM # Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
@@ -1911,6 +2001,12 @@ FFF9..FFFB    ; CM # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTAT
 11362..11363  ; CM # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
 11366..1136C  ; CM # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
 11370..11374  ; CM # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+11435..11437  ; CM # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+11438..1143F  ; CM # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+11440..11441  ; CM # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+11442..11444  ; CM # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+11445         ; CM # Mc       NEWA SIGN VISARGA
+11446         ; CM # Mn       NEWA SIGN NUKTA
 114B0..114B2  ; CM # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
 114B3..114B8  ; CM # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
 114B9         ; CM # Mc       TIRHUTA VOWEL SIGN E
@@ -1939,6 +2035,18 @@ FFF9..FFFB    ; CM # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTAT
 116B0..116B5  ; CM # Mn   [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
 116B6         ; CM # Mc       TAKRI SIGN VIRAMA
 116B7         ; CM # Mn       TAKRI SIGN NUKTA
+11C2F         ; CM # Mc       BHAIKSUKI VOWEL SIGN AA
+11C30..11C36  ; CM # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38..11C3D  ; CM # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+11C3E         ; CM # Mc       BHAIKSUKI SIGN VISARGA
+11C3F         ; CM # Mn       BHAIKSUKI SIGN VIRAMA
+11C92..11CA7  ; CM # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+11CA9         ; CM # Mc       MARCHEN SUBJOINED LETTER YA
+11CAA..11CB0  ; CM # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+11CB1         ; CM # Mc       MARCHEN VOWEL SIGN I
+11CB2..11CB3  ; CM # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+11CB4         ; CM # Mc       MARCHEN VOWEL SIGN O
+11CB5..11CB6  ; CM # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
 16AF0..16AF4  ; CM # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
 16B30..16B36  ; CM # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
 16F51..16F7E  ; CM # Mc  [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
@@ -1959,12 +2067,18 @@ FFF9..FFFB    ; CM # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTAT
 1DA84         ; CM # Mn       SIGNWRITING LOCATION HEAD NECK
 1DA9B..1DA9F  ; CM # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 1DAA1..1DAAF  ; CM # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+1E000..1E006  ; CM # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+1E008..1E018  ; CM # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+1E01B..1E021  ; CM # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+1E023..1E024  ; CM # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+1E026..1E02A  ; CM # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 1E8D0..1E8D6  ; CM # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E944..1E94A  ; CM # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
 E0001         ; CM # Cf       LANGUAGE TAG
 E0020..E007F  ; CM # Cf  [96] TAG SPACE..CANCEL TAG
 E0100..E01EF  ; CM # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
 
-# Total code points: 1957
+# Total code points: 2090
 
 # ================================================
 
@@ -1987,8 +2101,10 @@ A8FC          ; BB # Po       DEVANAGARI SIGN SIDDHAM
 11175         ; BB # Po       MAHAJANI SECTION MARK
 111DB         ; BB # Po       SHARADA SIGN SIDDHAM
 115C1         ; BB # Po       SIDDHAM SIGN SIDDHAM
+11660..1166C  ; BB # Po  [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
+11C70         ; BB # Po       MARCHEN HEAD MARK
 
-# Total code points: 23
+# Total code points: 37
 
 # ================================================
 
@@ -2042,6 +2158,7 @@ A8FC          ; BB # Po       DEVANAGARI SIGN SIDDHAM
 2E3C..2E3E    ; BA # Po   [3] STENOGRAPHIC FULL STOP..WIGGLY VERTICAL LINE
 2E40          ; BA # Pd       DOUBLE HYPHEN
 2E41          ; BA # Po       REVERSED COMMA
+2E43..2E44    ; BA # Po   [2] DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
 3000          ; BA # Zs       IDEOGRAPHIC SPACE
 A4FE..A4FF    ; BA # Po   [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP
 A60D          ; BA # Po       VAI COMMA
@@ -2070,10 +2187,13 @@ ABEB          ; BA # Po       MEETEI MAYEK CHEIKHEI
 11238..11239  ; BA # Po   [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA
 1123B..1123C  ; BA # Po   [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK
 112A9         ; BA # Po       MULTANI SECTION MARK
+1144B..1144E  ; BA # Po   [4] NEWA DANDA..NEWA GAP FILLER
+1145B         ; BA # Po       NEWA PLACEHOLDER MARK
 115C2..115C3  ; BA # Po   [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA
 115C9..115D7  ; BA # Po  [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
 11641..11642  ; BA # Po   [2] MODI DANDA..MODI DOUBLE DANDA
 1173C..1173E  ; BA # Po   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
+11C41..11C45  ; BA # Po   [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2
 12470..12474  ; BA # Po   [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
 16A6E..16A6F  ; BA # Po   [2] MRO DANDA..MRO DOUBLE DANDA
 16AF5         ; BA # Po       BASSA VAH FULL STOP
@@ -2082,7 +2202,7 @@ ABEB          ; BA # Po       MEETEI MAYEK CHEIKHEI
 1BC9F         ; BA # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
 1DA87..1DA8A  ; BA # Po   [4] SIGNWRITING COMMA..SIGNWRITING COLON
 
-# Total code points: 206
+# Total code points: 218
 
 # ================================================
 
@@ -2382,9 +2502,9 @@ FFFD          ; AI # So       REPLACEMENT CHARACTER
 1F100..1F10C  ; AI # No  [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
 1F110..1F12D  ; AI # So  [30] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED CD
 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
+1F170..1F1AC  ; AI # So  [61] NEGATIVE SQUARED LATIN CAPITAL LETTER A..SQUARED VOD
 
-# Total code points: 689
+# Total code points: 707
 
 # ================================================
 
@@ -3334,4 +3454,56 @@ FF70          ; CJ # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
 
 # Total code points: 26
 
+# ================================================
+
+# Line_Break=E_Base
+
+261D          ; EB # So       WHITE UP POINTING INDEX
+26F9          ; EB # So       PERSON WITH BALL
+270A..270D    ; EB # So   [4] RAISED FIST..WRITING HAND
+1F385         ; EB # So       FATHER CHRISTMAS
+1F3C3..1F3C4  ; EB # So   [2] RUNNER..SURFER
+1F3CA..1F3CB  ; EB # So   [2] SWIMMER..WEIGHT LIFTER
+1F442..1F443  ; EB # So   [2] EAR..NOSE
+1F446..1F450  ; EB # So  [11] WHITE UP POINTING BACKHAND INDEX..OPEN HANDS SIGN
+1F466..1F469  ; EB # So   [4] BOY..WOMAN
+1F46E         ; EB # So       POLICE OFFICER
+1F470..1F478  ; EB # So   [9] BRIDE WITH VEIL..PRINCESS
+1F47C         ; EB # So       BABY ANGEL
+1F481..1F483  ; EB # So   [3] INFORMATION DESK PERSON..DANCER
+1F485..1F487  ; EB # So   [3] NAIL POLISH..HAIRCUT
+1F4AA         ; EB # So       FLEXED BICEPS
+1F575         ; EB # So       SLEUTH OR SPY
+1F57A         ; EB # So       MAN DANCING
+1F590         ; EB # So       RAISED HAND WITH FINGERS SPLAYED
+1F595..1F596  ; EB # So   [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
+1F645..1F647  ; EB # So   [3] FACE WITH NO GOOD GESTURE..PERSON BOWING DEEPLY
+1F64B..1F64F  ; EB # So   [5] HAPPY PERSON RAISING ONE HAND..PERSON WITH FOLDED HANDS
+1F6A3         ; EB # So       ROWBOAT
+1F6B4..1F6B6  ; EB # So   [3] BICYCLIST..PEDESTRIAN
+1F6C0         ; EB # So       BATH
+1F918..1F91E  ; EB # So   [7] SIGN OF THE HORNS..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+1F926         ; EB # So       FACE PALM
+1F930         ; EB # So       PREGNANT WOMAN
+1F933..1F939  ; EB # So   [7] SELFIE..JUGGLING
+1F93C..1F93E  ; EB # So   [3] WRESTLERS..HANDBALL
+
+# Total code points: 83
+
+# ================================================
+
+# Line_Break=E_Modifier
+
+1F3FB..1F3FF  ; EM # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
+
+# Total code points: 5
+
+# ================================================
+
+# Line_Break=ZWJ
+
+200D          ; ZWJ # Cf       ZERO WIDTH JOINER
+
+# Total code points: 1
+
 # EOF
index c942302..bebcee6 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedNumericType-8.0.0.txt
-# Date: 2015-02-13, 13:47:13 GMT [MD]
+# DerivedNumericType-9.0.0.txt
+# Date: 2016-03-02, 18:55:01 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
@@ -30,7 +31,8 @@
 0B72..0B77    ; Numeric # No   [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS
 0BF0..0BF2    ; Numeric # No   [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
 0C78..0C7E    ; Numeric # No   [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
-0D70..0D75    ; Numeric # No   [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
+0D58..0D5E    ; Numeric # No   [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
+0D70..0D78    ; Numeric # No   [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
 0F2A..0F33    ; Numeric # No  [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO
 1372..137C    ; Numeric # No  [11] ETHIOPIC NUMBER TEN..ETHIOPIC NUMBER TEN THOUSAND
 16EE..16F0    ; Numeric # Nl   [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
@@ -145,6 +147,7 @@ F9FD          ; Numeric # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FD
 111E1..111F4  ; Numeric # No  [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND
 1173A..1173B  ; Numeric # No   [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY
 118EA..118F2  ; Numeric # No   [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
+11C5A..11C6C  ; Numeric # No  [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
 12400..1246E  ; Numeric # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
 16B5B..16B61  ; Numeric # No   [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS
 1D360..1D371  ; Numeric # No  [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
@@ -167,7 +170,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: 836
+# Total code points: 865
 
 # ================================================
 
@@ -239,15 +242,18 @@ FF10..FF19    ; Decimal # Nd  [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
 11136..1113F  ; Decimal # Nd  [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
 111D0..111D9  ; Decimal # Nd  [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
 112F0..112F9  ; Decimal # Nd  [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
+11450..11459  ; Decimal # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
 114D0..114D9  ; Decimal # Nd  [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
 11650..11659  ; Decimal # Nd  [10] MODI DIGIT ZERO..MODI DIGIT NINE
 116C0..116C9  ; Decimal # Nd  [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
 11730..11739  ; Decimal # Nd  [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
 118E0..118E9  ; Decimal # Nd  [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
+11C50..11C59  ; Decimal # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
 16A60..16A69  ; Decimal # Nd  [10] MRO DIGIT ZERO..MRO DIGIT NINE
 16B50..16B59  ; Decimal # Nd  [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
 1D7CE..1D7FF  ; Decimal # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+1E950..1E959  ; Decimal # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
 
-# Total code points: 550
+# Total code points: 580
 
 # EOF
index 4c749b2..8a4909f 100644 (file)
@@ -1,10 +1,11 @@
-# DerivedNumericValues-8.0.0.txt
-# Date: 2015-02-13, 13:47:13 GMT [MD]
+# DerivedNumericValues-9.0.0.txt
+# Date: 2016-03-02, 18:55:01 GMT
+# © 2016 Unicode®, Inc.
+# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
 #
 # Unicode Character Database
-# Copyright (c) 1991-2015 Unicode, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
-# For documentation, see http://www.unicode.org/reports/tr44/
+#   For documentation, see http://www.unicode.org/reports/tr44/
 
 # ================================================
 
@@ -93,11 +94,13 @@ FF10          ; 0.0 ; ; 0 # Nd       FULLWIDTH DIGIT ZERO
 11136         ; 0.0 ; ; 0 # Nd       CHAKMA DIGIT ZERO
 111D0         ; 0.0 ; ; 0 # Nd       SHARADA DIGIT ZERO
 112F0         ; 0.0 ; ; 0 # Nd       KHUDAWADI DIGIT ZERO
+11450         ; 0.0 ; ; 0 # Nd       NEWA DIGIT ZERO
 114D0         ; 0.0 ; ; 0 # Nd       TIRHUTA DIGIT ZERO
 11650         ; 0.0 ; ; 0 # Nd       MODI DIGIT ZERO
 116C0         ; 0.0 ; ; 0 # Nd       TAKRI DIGIT ZERO
 11730         ; 0.0 ; ; 0 # Nd       AHOM DIGIT ZERO
 118E0         ; 0.0 ; ; 0 # Nd       WARANG CITI DIGIT ZERO
+11C50         ; 0.0 ; ; 0 # Nd       BHAIKSUKI DIGIT ZERO
 16A60         ; 0.0 ; ; 0 # Nd       MRO DIGIT ZERO
 16B50         ; 0.0 ; ; 0 # Nd       PAHAWH HMONG DIGIT ZERO
 1D7CE         ; 0.0 ; ; 0 # Nd       MATHEMATICAL BOLD DIGIT ZERO
@@ -105,18 +108,44 @@ FF10          ; 0.0 ; ; 0 # Nd       FULLWIDTH DIGIT ZERO
 1D7E2         ; 0.0 ; ; 0 # Nd       MATHEMATICAL SANS-SERIF DIGIT ZERO
 1D7EC         ; 0.0 ; ; 0 # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
 1D7F6         ; 0.0 ; ; 0 # Nd       MATHEMATICAL MONOSPACE DIGIT ZERO
+1E950         ; 0.0 ; ; 0 # Nd       ADLAM DIGIT ZERO
 1F100..1F101  ; 0.0 ; ; 0 # No   [2] DIGIT ZERO FULL STOP..DIGIT ZERO COMMA
 1F10B..1F10C  ; 0.0 ; ; 0 # No   [2] DINGBAT CIRCLED SANS-SERIF DIGIT ZERO..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
 
-# Total code points: 71
+# Total code points: 74
+
+# ================================================
+
+0D58          ; 0.00625 ; ; 1/160 # No       MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH
+
+# Total code points: 1
+
+# ================================================
+
+0D59          ; 0.025 ; ; 1/40 # No       MALAYALAM FRACTION ONE FORTIETH
+
+# Total code points: 1
+
+# ================================================
+
+0D5A          ; 0.0375 ; ; 3/80 # No       MALAYALAM FRACTION THREE EIGHTIETHS
+
+# Total code points: 1
+
+# ================================================
+
+0D5B          ; 0.05 ; ; 1/20 # No       MALAYALAM FRACTION ONE TWENTIETH
+
+# Total code points: 1
 
 # ================================================
 
 09F4          ; 0.0625 ; ; 1/16 # No       BENGALI CURRENCY NUMERATOR ONE
 0B75          ; 0.0625 ; ; 1/16 # No       ORIYA FRACTION ONE SIXTEENTH
+0D76          ; 0.0625 ; ; 1/16 # No       MALAYALAM FRACTION ONE SIXTEENTH
 A833          ; 0.0625 ; ; 1/16 # No       NORTH INDIC FRACTION ONE SIXTEENTH
 
-# Total code points: 3
+# Total code points: 4
 
 # ================================================
 
@@ -126,9 +155,10 @@ A833          ; 0.0625 ; ; 1/16 # No       NORTH INDIC FRACTION ONE SIXTEENTH
 
 # ================================================
 
+0D5C          ; 0.1 ; ; 1/10 # No       MALAYALAM FRACTION ONE TENTH
 2152          ; 0.1 ; ; 1/10 # No       VULGAR FRACTION ONE TENTH
 
-# Total code points: 1
+# Total code points: 2
 
 # ================================================
 
@@ -140,11 +170,12 @@ A833          ; 0.0625 ; ; 1/16 # No       NORTH INDIC FRACTION ONE SIXTEENTH
 
 09F5          ; 0.125 ; ; 1/8 # No       BENGALI CURRENCY NUMERATOR TWO
 0B76          ; 0.125 ; ; 1/8 # No       ORIYA FRACTION ONE EIGHTH
+0D77          ; 0.125 ; ; 1/8 # No       MALAYALAM FRACTION ONE EIGHTH
 215B          ; 0.125 ; ; 1/8 # No       VULGAR FRACTION ONE EIGHTH
 A834          ; 0.125 ; ; 1/8 # No       NORTH INDIC FRACTION ONE EIGHTH
 1245F         ; 0.125 ; ; 1/8 # Nl       CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH
 
-# Total code points: 5
+# Total code points: 6
 
 # ================================================
 
@@ -154,6 +185,12 @@ A834          ; 0.125 ; ; 1/8 # No       NORTH INDIC FRACTION ONE EIGHTH
 
 # ================================================
 
+0D5D          ; 0.15 ; ; 3/20 # No       MALAYALAM FRACTION THREE TWENTIETHS
+
+# Total code points: 1
+
+# ================================================
+
 2159          ; 0.16666667 ; ; 1/6 # No       VULGAR FRACTION ONE SIXTH
 109F7         ; 0.16666667 ; ; 1/6 # No       MEROITIC CURSIVE FRACTION TWO TWELFTHS
 12461         ; 0.16666667 ; ; 1/6 # Nl       CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH
@@ -164,15 +201,17 @@ A834          ; 0.125 ; ; 1/8 # No       NORTH INDIC FRACTION ONE EIGHTH
 
 09F6          ; 0.1875 ; ; 3/16 # No       BENGALI CURRENCY NUMERATOR THREE
 0B77          ; 0.1875 ; ; 3/16 # No       ORIYA FRACTION THREE SIXTEENTHS
+0D78          ; 0.1875 ; ; 3/16 # No       MALAYALAM FRACTION THREE SIXTEENTHS
 A835          ; 0.1875 ; ; 3/16 # No       NORTH INDIC FRACTION THREE SIXTEENTHS
 
-# Total code points: 3
+# Total code points: 4
 
 # ================================================
 
+0D5E          ; 0.2 ; ; 1/5 # No       MALAYALAM FRACTION ONE FIFTH
 2155          ; 0.2 ; ; 1/5 # No       VULGAR FRACTION ONE FIFTH
 
-# Total code points: 1
+# Total code points: 2
 
 # ================================================
 
@@ -399,11 +438,14 @@ FF11          ; 1.0 ; ; 1 # Nd       FULLWIDTH DIGIT ONE
 111D1         ; 1.0 ; ; 1 # Nd       SHARADA DIGIT ONE
 111E1         ; 1.0 ; ; 1 # No       SINHALA ARCHAIC DIGIT ONE
 112F1         ; 1.0 ; ; 1 # Nd       KHUDAWADI DIGIT ONE
+11451         ; 1.0 ; ; 1 # Nd       NEWA DIGIT ONE
 114D1         ; 1.0 ; ; 1 # Nd       TIRHUTA DIGIT ONE
 11651         ; 1.0 ; ; 1 # Nd       MODI DIGIT ONE
 116C1         ; 1.0 ; ; 1 # Nd       TAKRI DIGIT ONE
 11731         ; 1.0 ; ; 1 # Nd       AHOM DIGIT ONE
 118E1         ; 1.0 ; ; 1 # Nd       WARANG CITI DIGIT ONE
+11C51         ; 1.0 ; ; 1 # Nd       BHAIKSUKI DIGIT ONE
+11C5A         ; 1.0 ; ; 1 # No       BHAIKSUKI NUMBER ONE
 12415         ; 1.0 ; ; 1 # Nl       CUNEIFORM NUMERIC SIGN ONE GESH2
 1241E         ; 1.0 ; ; 1 # Nl       CUNEIFORM NUMERIC SIGN ONE GESHU
 1242C         ; 1.0 ; ; 1 # Nl       CUNEIFORM NUMERIC SIGN ONE SHARU
@@ -419,10 +461,11 @@ FF11          ; 1.0 ; ; 1 # Nd       FULLWIDTH DIGIT ONE
 1D7ED         ; 1.0 ; ; 1 # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
 1D7F7         ; 1.0 ; ; 1 # Nd       MATHEMATICAL MONOSPACE DIGIT ONE
 1E8C7         ; 1.0 ; ; 1 # No       MENDE KIKAKUI DIGIT ONE
+1E951         ; 1.0 ; ; 1 # Nd       ADLAM DIGIT ONE
 1F102         ; 1.0 ; ; 1 # No       DIGIT ONE COMMA
 2092A         ; 1.0 ; ; 1 # Lo       CJK UNIFIED IDEOGRAPH-2092A
 
-# Total code points: 117
+# Total code points: 121
 
 # ================================================
 
@@ -520,11 +563,14 @@ FF12          ; 2.0 ; ; 2 # Nd       FULLWIDTH DIGIT TWO
 111D2         ; 2.0 ; ; 2 # Nd       SHARADA DIGIT TWO
 111E2         ; 2.0 ; ; 2 # No       SINHALA ARCHAIC DIGIT TWO
 112F2         ; 2.0 ; ; 2 # Nd       KHUDAWADI DIGIT TWO
+11452         ; 2.0 ; ; 2 # Nd       NEWA DIGIT TWO
 114D2         ; 2.0 ; ; 2 # Nd       TIRHUTA DIGIT TWO
 11652         ; 2.0 ; ; 2 # Nd       MODI DIGIT TWO
 116C2         ; 2.0 ; ; 2 # Nd       TAKRI DIGIT TWO
 11732         ; 2.0 ; ; 2 # Nd       AHOM DIGIT TWO
 118E2         ; 2.0 ; ; 2 # Nd       WARANG CITI DIGIT TWO
+11C52         ; 2.0 ; ; 2 # Nd       BHAIKSUKI DIGIT TWO
+11C5B         ; 2.0 ; ; 2 # No       BHAIKSUKI NUMBER TWO
 12400         ; 2.0 ; ; 2 # Nl       CUNEIFORM NUMERIC SIGN TWO ASH
 12416         ; 2.0 ; ; 2 # Nl       CUNEIFORM NUMERIC SIGN TWO GESH2
 1241F         ; 2.0 ; ; 2 # Nl       CUNEIFORM NUMERIC SIGN TWO GESHU
@@ -544,10 +590,11 @@ FF12          ; 2.0 ; ; 2 # Nd       FULLWIDTH DIGIT TWO
 1D7EE         ; 2.0 ; ; 2 # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
 1D7F8         ; 2.0 ; ; 2 # Nd       MATHEMATICAL MONOSPACE DIGIT TWO
 1E8C8         ; 2.0 ; ; 2 # No       MENDE KIKAKUI DIGIT TWO
+1E952         ; 2.0 ; ; 2 # Nd       ADLAM DIGIT TWO
 1F103         ; 2.0 ; ; 2 # No       DIGIT TWO COMMA
 22390         ; 2.0 ; ; 2 # Lo       CJK UNIFIED IDEOGRAPH-22390
 
-# Total code points: 117
+# Total code points: 121
 
 # ================================================
 
@@ -639,11 +686,14 @@ FF13          ; 3.0 ; ; 3 # Nd       FULLWIDTH DIGIT THREE
 111D3         ; 3.0 ; ; 3 # Nd       SHARADA DIGIT THREE
 111E3         ; 3.0 ; ; 3 # No       SINHALA ARCHAIC DIGIT THREE
 112F3         ; 3.0 ; ; 3 # Nd       KHUDAWADI DIGIT THREE
+11453         ; 3.0 ; ; 3 # Nd       NEWA DIGIT THREE
 114D3         ; 3.0 ; ; 3 # Nd       TIRHUTA DIGIT THREE
 11653         ; 3.0 ; ; 3 # Nd       MODI DIGIT THREE
 116C3         ; 3.0 ; ; 3 # Nd       TAKRI DIGIT THREE
 11733         ; 3.0 ; ; 3 # Nd       AHOM DIGIT THREE
 118E3         ; 3.0 ; ; 3 # Nd       WARANG CITI DIGIT THREE
+11C53         ; 3.0 ; ; 3 # Nd       BHAIKSUKI DIGIT THREE
+11C5C         ; 3.0 ; ; 3 # No       BHAIKSUKI NUMBER THREE
 12401         ; 3.0 ; ; 3 # Nl       CUNEIFORM NUMERIC SIGN THREE ASH
 12408         ; 3.0 ; ; 3 # Nl       CUNEIFORM NUMERIC SIGN THREE DISH
 12417         ; 3.0 ; ; 3 # Nl       CUNEIFORM NUMERIC SIGN THREE GESH2
@@ -664,13 +714,14 @@ FF13          ; 3.0 ; ; 3 # Nd       FULLWIDTH DIGIT THREE
 1D7EF         ; 3.0 ; ; 3 # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
 1D7F9         ; 3.0 ; ; 3 # Nd       MATHEMATICAL MONOSPACE DIGIT THREE
 1E8C9         ; 3.0 ; ; 3 # No       MENDE KIKAKUI DIGIT THREE
+1E953         ; 3.0 ; ; 3 # Nd       ADLAM DIGIT THREE
 1F104         ; 3.0 ; ; 3 # No       DIGIT THREE COMMA
 20AFD         ; 3.0 ; ; 3 # Lo       CJK UNIFIED IDEOGRAPH-20AFD
 20B19         ; 3.0 ; ; 3 # Lo       CJK UNIFIED IDEOGRAPH-20B19
 22998         ; 3.0 ; ; 3 # Lo       CJK UNIFIED IDEOGRAPH-22998
 23B1B         ; 3.0 ; ; 3 # Lo       CJK UNIFIED IDEOGRAPH-23B1B
 
-# Total code points: 119
+# Total code points: 123
 
 # ================================================
 
@@ -756,11 +807,14 @@ FF14          ; 4.0 ; ; 4 # Nd       FULLWIDTH DIGIT FOUR
 111D4         ; 4.0 ; ; 4 # Nd       SHARADA DIGIT FOUR
 111E4         ; 4.0 ; ; 4 # No       SINHALA ARCHAIC DIGIT FOUR
 112F4         ; 4.0 ; ; 4 # Nd       KHUDAWADI DIGIT FOUR
+11454         ; 4.0 ; ; 4 # Nd       NEWA DIGIT FOUR
 114D4         ; 4.0 ; ; 4 # Nd       TIRHUTA DIGIT FOUR
 11654         ; 4.0 ; ; 4 # Nd       MODI DIGIT FOUR
 116C4         ; 4.0 ; ; 4 # Nd       TAKRI DIGIT FOUR
 11734         ; 4.0 ; ; 4 # Nd       AHOM DIGIT FOUR
 118E4         ; 4.0 ; ; 4 # Nd       WARANG CITI DIGIT FOUR
+11C54         ; 4.0 ; ; 4 # Nd       BHAIKSUKI DIGIT FOUR
+11C5D         ; 4.0 ; ; 4 # No       BHAIKSUKI NUMBER FOUR
 12402         ; 4.0 ; ; 4 # Nl       CUNEIFORM NUMERIC SIGN FOUR ASH
 12409         ; 4.0 ; ; 4 # Nl       CUNEIFORM NUMERIC SIGN FOUR DISH
 1240F         ; 4.0 ; ; 4 # Nl       CUNEIFORM NUMERIC SIGN FOUR U
@@ -782,12 +836,13 @@ FF14          ; 4.0 ; ; 4 # Nd       FULLWIDTH DIGIT FOUR
 1D7F0         ; 4.0 ; ; 4 # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
 1D7FA         ; 4.0 ; ; 4 # Nd       MATHEMATICAL MONOSPACE DIGIT FOUR
 1E8CA         ; 4.0 ; ; 4 # No       MENDE KIKAKUI DIGIT FOUR
+1E954         ; 4.0 ; ; 4 # Nd       ADLAM DIGIT FOUR
 1F105         ; 4.0 ; ; 4 # No       DIGIT FOUR COMMA
 20064         ; 4.0 ; ; 4 # Lo       CJK UNIFIED IDEOGRAPH-20064
 200E2         ; 4.0 ; ; 4 # Lo       CJK UNIFIED IDEOGRAPH-200E2
 2626D         ; 4.0 ; ; 4 # Lo       CJK UNIFIED IDEOGRAPH-2626D
 
-# Total code points: 111
+# Total code points: 115
 
 # ================================================
 
@@ -878,11 +933,14 @@ FF15          ; 5.0 ; ; 5 # Nd       FULLWIDTH DIGIT FIVE
 111D5         ; 5.0 ; ; 5 # Nd       SHARADA DIGIT FIVE
 111E5         ; 5.0 ; ; 5 # No       SINHALA ARCHAIC DIGIT FIVE
 112F5         ; 5.0 ; ; 5 # Nd       KHUDAWADI DIGIT FIVE
+11455         ; 5.0 ; ; 5 # Nd       NEWA DIGIT FIVE
 114D5         ; 5.0 ; ; 5 # Nd       TIRHUTA DIGIT FIVE
 11655         ; 5.0 ; ; 5 # Nd       MODI DIGIT FIVE
 116C5         ; 5.0 ; ; 5 # Nd       TAKRI DIGIT FIVE
 11735         ; 5.0 ; ; 5 # Nd       AHOM DIGIT FIVE
 118E5         ; 5.0 ; ; 5 # Nd       WARANG CITI DIGIT FIVE
+11C55         ; 5.0 ; ; 5 # Nd       BHAIKSUKI DIGIT FIVE
+11C5E         ; 5.0 ; ; 5 # No       BHAIKSUKI NUMBER FIVE
 12403         ; 5.0 ; ; 5 # Nl       CUNEIFORM NUMERIC SIGN FIVE ASH
 1240A         ; 5.0 ; ; 5 # Nl       CUNEIFORM NUMERIC SIGN FIVE DISH
 12410         ; 5.0 ; ; 5 # Nl       CUNEIFORM NUMERIC SIGN FIVE U
@@ -903,10 +961,11 @@ FF15          ; 5.0 ; ; 5 # Nd       FULLWIDTH DIGIT FIVE
 1D7F1         ; 5.0 ; ; 5 # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
 1D7FB         ; 5.0 ; ; 5 # Nd       MATHEMATICAL MONOSPACE DIGIT FIVE
 1E8CB         ; 5.0 ; ; 5 # No       MENDE KIKAKUI DIGIT FIVE
+1E955         ; 5.0 ; ; 5 # Nd       ADLAM DIGIT FIVE
 1F106         ; 5.0 ; ; 5 # No       DIGIT FIVE COMMA
 20121         ; 5.0 ; ; 5 # Lo       CJK UNIFIED IDEOGRAPH-20121
 
-# Total code points: 109
+# Total code points: 113
 
 # ================================================
 
@@ -988,11 +1047,14 @@ FF16          ; 6.0 ; ; 6 # Nd       FULLWIDTH DIGIT SIX
 111D6         ; 6.0 ; ; 6 # Nd       SHARADA DIGIT SIX
 111E6         ; 6.0 ; ; 6 # No       SINHALA ARCHAIC DIGIT SIX
 112F6         ; 6.0 ; ; 6 # Nd       KHUDAWADI DIGIT SIX
+11456         ; 6.0 ; ; 6 # Nd       NEWA DIGIT SIX
 114D6         ; 6.0 ; ; 6 # Nd       TIRHUTA DIGIT SIX
 11656         ; 6.0 ; ; 6 # Nd       MODI DIGIT SIX
 116C6         ; 6.0 ; ; 6 # Nd       TAKRI DIGIT SIX
 11736         ; 6.0 ; ; 6 # Nd       AHOM DIGIT SIX
 118E6         ; 6.0 ; ; 6 # Nd       WARANG CITI DIGIT SIX
+11C56         ; 6.0 ; ; 6 # Nd       BHAIKSUKI DIGIT SIX
+11C5F         ; 6.0 ; ; 6 # No       BHAIKSUKI NUMBER SIX
 12404         ; 6.0 ; ; 6 # Nl       CUNEIFORM NUMERIC SIGN SIX ASH
 1240B         ; 6.0 ; ; 6 # Nl       CUNEIFORM NUMERIC SIGN SIX DISH
 12411         ; 6.0 ; ; 6 # Nl       CUNEIFORM NUMERIC SIGN SIX U
@@ -1010,10 +1072,11 @@ FF16          ; 6.0 ; ; 6 # Nd       FULLWIDTH DIGIT SIX
 1D7F2         ; 6.0 ; ; 6 # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
 1D7FC         ; 6.0 ; ; 6 # Nd       MATHEMATICAL MONOSPACE DIGIT SIX
 1E8CC         ; 6.0 ; ; 6 # No       MENDE KIKAKUI DIGIT SIX
+1E956         ; 6.0 ; ; 6 # Nd       ADLAM DIGIT SIX
 1F107         ; 6.0 ; ; 6 # No       DIGIT SIX COMMA
 20AEA         ; 6.0 ; ; 6 # Lo       CJK UNIFIED IDEOGRAPH-20AEA
 
-# Total code points: 96
+# Total code points: 100
 
 # ================================================
 
@@ -1093,11 +1156,14 @@ FF17          ; 7.0 ; ; 7 # Nd       FULLWIDTH DIGIT SEVEN
 111D7         ; 7.0 ; ; 7 # Nd       SHARADA DIGIT SEVEN
 111E7         ; 7.0 ; ; 7 # No       SINHALA ARCHAIC DIGIT SEVEN
 112F7         ; 7.0 ; ; 7 # Nd       KHUDAWADI DIGIT SEVEN
+11457         ; 7.0 ; ; 7 # Nd       NEWA DIGIT SEVEN
 114D7         ; 7.0 ; ; 7 # Nd       TIRHUTA DIGIT SEVEN
 11657         ; 7.0 ; ; 7 # Nd       MODI DIGIT SEVEN
 116C7         ; 7.0 ; ; 7 # Nd       TAKRI DIGIT SEVEN
 11737         ; 7.0 ; ; 7 # Nd       AHOM DIGIT SEVEN
 118E7         ; 7.0 ; ; 7 # Nd       WARANG CITI DIGIT SEVEN
+11C57         ; 7.0 ; ; 7 # Nd       BHAIKSUKI DIGIT SEVEN
+11C60         ; 7.0 ; ; 7 # No       BHAIKSUKI NUMBER SEVEN
 12405         ; 7.0 ; ; 7 # Nl       CUNEIFORM NUMERIC SIGN SEVEN ASH
 1240C         ; 7.0 ; ; 7 # Nl       CUNEIFORM NUMERIC SIGN SEVEN DISH
 12412         ; 7.0 ; ; 7 # Nl       CUNEIFORM NUMERIC SIGN SEVEN U
@@ -1114,10 +1180,11 @@ FF17          ; 7.0 ; ; 7 # Nd       FULLWIDTH DIGIT SEVEN
 1D7F3         ; 7.0 ; ; 7 # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
 1D7FD         ; 7.0 ; ; 7 # Nd       MATHEMATICAL MONOSPACE DIGIT SEVEN
 1E8CD         ; 7.0 ; ; 7 # No       MENDE KIKAKUI DIGIT SEVEN
+1E957         ; 7.0 ; ; 7 # Nd       ADLAM DIGIT SEVEN
 1F108         ; 7.0 ; ; 7 # No       DIGIT SEVEN COMMA
 20001         ; 7.0 ; ; 7 # Lo       CJK UNIFIED IDEOGRAPH-20001
 
-# Total code points: 95
+# Total code points: 99
 
 # ================================================
 
@@ -1195,11 +1262,14 @@ FF18          ; 8.0 ; ; 8 # Nd       FULLWIDTH DIGIT EIGHT
 111D8         ; 8.0 ; ; 8 # Nd       SHARADA DIGIT EIGHT
 111E8         ; 8.0 ; ; 8 # No       SINHALA ARCHAIC DIGIT EIGHT
 112F8         ; 8.0 ; ; 8 # Nd       KHUDAWADI DIGIT EIGHT
+11458         ; 8.0 ; ; 8 # Nd       NEWA DIGIT EIGHT
 114D8         ; 8.0 ; ; 8 # Nd       TIRHUTA DIGIT EIGHT
 11658         ; 8.0 ; ; 8 # Nd       MODI DIGIT EIGHT
 116C8         ; 8.0 ; ; 8 # Nd       TAKRI DIGIT EIGHT
 11738         ; 8.0 ; ; 8 # Nd       AHOM DIGIT EIGHT
 118E8         ; 8.0 ; ; 8 # Nd       WARANG CITI DIGIT EIGHT
+11C58         ; 8.0 ; ; 8 # Nd       BHAIKSUKI DIGIT EIGHT
+11C61         ; 8.0 ; ; 8 # No       BHAIKSUKI NUMBER EIGHT
 12406         ; 8.0 ; ; 8 # Nl       CUNEIFORM NUMERIC SIGN EIGHT ASH
 1240D         ; 8.0 ; ; 8 # Nl       CUNEIFORM NUMERIC SIGN EIGHT DISH
 12413         ; 8.0 ; ; 8 # Nl       CUNEIFORM NUMERIC SIGN EIGHT U
@@ -1216,9 +1286,10 @@ FF18          ; 8.0 ; ; 8 # Nd       FULLWIDTH DIGIT EIGHT
 1D7F4         ; 8.0 ; ; 8 # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
 1D7FE         ; 8.0 ; ; 8 # Nd       MATHEMATICAL MONOSPACE DIGIT EIGHT
 1E8CE         ; 8.0 ; ; 8 # No       MENDE KIKAKUI DIGIT EIGHT
+1E958         ; 8.0 ; ; 8 # Nd       ADLAM DIGIT EIGHT
 1F109         ; 8.0 ; ; 8 # No       DIGIT EIGHT COMMA
 
-# Total code points: 91
+# Total code points: 95
 
 # ================================================
 
@@ -1297,11 +1368,14 @@ FF19          ; 9.0 ; ; 9 # Nd       FULLWIDTH DIGIT NINE
 111D9         ; 9.0 ; ; 9 # Nd       SHARADA DIGIT NINE
 111E9         ; 9.0 ; ; 9 # No       SINHALA ARCHAIC DIGIT NINE
 112F9         ; 9.0 ; ; 9 # Nd       KHUDAWADI DIGIT NINE
+11459         ; 9.0 ; ; 9 # Nd       NEWA DIGIT NINE
 114D9         ; 9.0 ; ; 9 # Nd       TIRHUTA DIGIT NINE
 11659         ; 9.0 ; ; 9 # Nd       MODI DIGIT NINE
 116C9         ; 9.0 ; ; 9 # Nd       TAKRI DIGIT NINE
 11739         ; 9.0 ; ; 9 # Nd       AHOM DIGIT NINE
 118E9         ; 9.0 ; ; 9 # Nd       WARANG CITI DIGIT NINE
+11C59         ; 9.0 ; ; 9 # Nd       BHAIKSUKI DIGIT NINE
+11C62         ; 9.0 ; ; 9 # No       BHAIKSUKI NUMBER NINE
 12407         ; 9.0 ; ; 9 # Nl       CUNEIFORM NUMERIC SIGN NINE ASH
 1240E         ; 9.0 ; ; 9 # Nl       CUNEIFORM NUMERIC SIGN NINE DISH
 12414         ; 9.0 ; ; 9 # Nl       CUNEIFORM NUMERIC SIGN NINE U
@@ -1318,10 +1392,11 @@ FF19          ; 9.0 ; ; 9 # Nd       FULLWIDTH DIGIT NINE
 1D7F5         ; 9.0 ; ; 9 # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
 1D7FF         ; 9.0 ; ; 9 # Nd       MATHEMATICAL MONOSPACE DIGIT NINE
 1E8CF         ; 9.0 ; ; 9 # No       MENDE KIKAKUI DIGIT NINE
+1E959         ; 9.0 ; ; 9 # Nd       ADLAM DIGIT NINE
 1F10A         ; 9.0 ; ; 9 # No       DIGIT NINE COMMA
 2F890         ; 9.0 ; ; 9 # Lo       CJK COMPATIBILITY IDEOGRAPH-2F890
 
-# Total code points: 95
+# Total code points: 99
 
 # ================================================
 
@@ -1372,10 +1447,11 @@ F9FD          ; 10.0 ; ; 10 # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FD
 111EA         ; 10.0 ; ; 10 # No       SINHALA ARCHAIC NUMBER TEN
 1173A         ; 10.0 ; ; 10 # No       AHOM NUMBER TEN
 118EA         ; 10.0 ; ; 10 # No       WARANG CITI NUMBER TEN
+11C63         ; 10.0 ; ; 10 # No       BHAIKSUKI NUMBER TEN
 16B5B         ; 10.0 ; ; 10 # No       PAHAWH HMONG NUMBER TENS
 1D369         ; 10.0 ; ; 10 # No       COUNTING ROD TENS DIGIT ONE
 
-# Total code points: 53
+# Total code points: 54
 
 # ================================================
 
@@ -1497,9 +1573,10 @@ F9FD          ; 10.0 ; ; 10 # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FD
 111EB         ; 20.0 ; ; 20 # No       SINHALA ARCHAIC NUMBER TWENTY
 1173B         ; 20.0 ; ; 20 # No       AHOM NUMBER TWENTY
 118EB         ; 20.0 ; ; 20 # No       WARANG CITI NUMBER TWENTY
+11C64         ; 20.0 ; ; 20 # No       BHAIKSUKI NUMBER TWENTY
 1D36A         ; 20.0 ; ; 20 # No       COUNTING ROD TENS DIGIT TWO
 
-# Total code points: 30
+# Total code points: 31
 
 # ================================================
 
@@ -1570,10 +1647,11 @@ F9FD          ; 10.0 ; ; 10 # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FD
 1105D         ; 30.0 ; ; 30 # No       BRAHMI NUMBER THIRTY
 111EC         ; 30.0 ; ; 30 # No       SINHALA ARCHAIC NUMBER THIRTY
 118EC         ; 30.0 ; ; 30 # No       WARANG CITI NUMBER THIRTY
+11C65         ; 30.0 ; ; 30 # No       BHAIKSUKI NUMBER THIRTY
 1D36B         ; 30.0 ; ; 30 # No       COUNTING ROD TENS DIGIT THREE
 20983         ; 30.0 ; ; 30 # Lo       CJK UNIFIED IDEOGRAPH-20983
 
-# Total code points: 15
+# Total code points: 16
 
 # ================================================
 
@@ -1642,12 +1720,13 @@ F9FD          ; 10.0 ; ; 10 # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FD
 1105E         ; 40.0 ; ; 40 # No       BRAHMI NUMBER FORTY
 111ED         ; 40.0 ; ; 40 # No       SINHALA ARCHAIC NUMBER FORTY
 118ED         ; 40.0 ; ; 40 # No       WARANG CITI NUMBER FORTY
+11C66         ; 40.0 ; ; 40 # No       BHAIKSUKI NUMBER FORTY
 12467         ; 40.0 ; ; 40 # Nl       CUNEIFORM NUMERIC SIGN ELAMITE FORTY
 1D36C         ; 40.0 ; ; 40 # No       COUNTING ROD TENS DIGIT FOUR
 2098C         ; 40.0 ; ; 40 # Lo       CJK UNIFIED IDEOGRAPH-2098C
 2099C         ; 40.0 ; ; 40 # Lo       CJK UNIFIED IDEOGRAPH-2099C
 
-# Total code points: 15
+# Total code points: 16
 
 # ================================================
 
@@ -1726,10 +1805,11 @@ F9FD          ; 10.0 ; ; 10 # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FD
 1105F         ; 50.0 ; ; 50 # No       BRAHMI NUMBER FIFTY
 111EE         ; 50.0 ; ; 50 # No       SINHALA ARCHAIC NUMBER FIFTY
 118EE         ; 50.0 ; ; 50 # No       WARANG CITI NUMBER FIFTY
+11C67         ; 50.0 ; ; 50 # No       BHAIKSUKI NUMBER FIFTY
 12468         ; 50.0 ; ; 50 # Nl       CUNEIFORM NUMERIC SIGN ELAMITE FIFTY
 1D36D         ; 50.0 ; ; 50 # No       COUNTING ROD TENS DIGIT FIVE
 
-# Total code points: 26
+# Total code points: 27
 
 # ================================================
 
@@ -1742,9 +1822,10 @@ F9FD          ; 10.0 ; ; 10 # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FD
 11060         ; 60.0 ; ; 60 # No       BRAHMI NUMBER SIXTY
 111EF         ; 60.0 ; ; 60 # No       SINHALA ARCHAIC NUMBER SIXTY
 118EF         ; 60.0 ; ; 60 # No       WARANG CITI NUMBER SIXTY
+11C68         ; 60.0 ; ; 60 # No       BHAIKSUKI NUMBER SIXTY
 1D36E         ; 60.0 ; ; 60 # No       COUNTING ROD TENS DIGIT SIX
 
-# Total code points: 10
+# Total code points: 11
 
 # ================================================
 
@@ -1757,9 +1838,10 @@ F9FD          ; 10.0 ; ; 10 # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FD
 11061         ; 70.0 ; ; 70 # No       BRAHMI NUMBER SEVENTY
 111F0         ; 70.0 ; ; 70 # No       SINHALA ARCHAIC NUMBER SEVENTY
 118F0         ; 70.0 ; ; 70 # No       WARANG CITI NUMBER SEVENTY
+11C69         ; 70.0 ; ; 70 # No       BHAIKSUKI NUMBER SEVENTY
 1D36F         ; 70.0 ; ; 70 # No       COUNTING ROD TENS DIGIT SEVEN
 
-# Total code points: 10
+# Total code points: 11
 
 # ================================================
 
@@ -1771,9 +1853,10 @@ F9FD          ; 10.0 ; ; 10 # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FD
 11062         ; 80.0 ; ; 80 # No       BRAHMI NUMBER EIGHTY
 111F1         ; 80.0 ; ; 80 # No       SINHALA ARCHAIC NUMBER EIGHTY
 118F1         ; 80.0 ; ; 80 # No       WARANG CITI NUMBER EIGHTY
+11C6A         ; 80.0 ; ; 80 # No       BHAIKSUKI NUMBER EIGHTY
 1D370         ; 80.0 ; ; 80 # No       COUNTING ROD TENS DIGIT EIGHT
 
-# Total code points: 9
+# Total code points: 10
 
 # ================================================
 
@@ -1785,9 +1868,10 @@ F9FD          ; 10.0 ; ; 10 # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FD
 11063         ; 90.0 ; ; 90 # No       BRAHMI NUMBER NINETY
 111F2         ; 90.0 ; ; 90 # No       SINHALA ARCHAIC NUMBER NINETY
 118F2         ; 90.0 ; ; 90 # No       WARANG CITI NUMBER NINETY
+11C6B         ; 90.0 ; ; 90 # No       BHAIKSUKI NUMBER NINETY
 1D371         ; 90.0 ; ; 90 # No       COUNTING ROD TENS DIGIT NINE
 
-# Total code points: 9
+# Total code points: 10
 
 # ================================================
 
@@ -1819,9 +1903,10 @@ F9FD          ; 10.0 ; ; 10 # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FD
 10E72         ; 100.0 ; ; 100 # No       RUMI NUMBER ONE HUNDRED
 11064         ; 100.0 ; ; 100 # No       BRAHMI NUMBER ONE HUNDRED
 111F3         ; 100.0 ; ; 100 # No       SINHALA ARCHAIC NUMBER ONE HUNDRED
+11C6C         ; 100.0 ; ; 100 # No       BHAIKSUKI HUNDREDS UNIT MARK
 16B5C         ; 100.0 ; ; 100 # No       PAHAWH HMONG NUMBER HUNDREDS
 
-# Total code points: 29
+# Total code points: 30
 
 # ================================================
 
index bea8739..0517938 100644 (file)
@@ -36,6 +36,17 @@ my $debugging_build = $Config{"ccflags"} =~ /-DDEBUGGING/;
 
 sub NON_ASCII_PLATFORM { ord("A") != 65 }
 
+# When a new version of Unicode is published, unfortunately the algorithms for
+# dealing with various bounds, like \b{gcb}, \b{lb} may have to be updated
+# manually.  The changes may or may not be backward compatible with older
+# releases.  The code is in regen/mk_invlist.pl and regexec.c.  Make the
+# changes, then come back here and set the variable below to what version the
+# code is expecting.  If a newer version of Unicode is being compiled than
+# expected, a warning will be generated.  If an older version is being
+# compiled, any bounds tests that fail in the generated test file (-maketest
+# option) will be marked as TODO.
+my $version_of_mk_invlist_bounds = v9.0.0;
+
 ##########################################################################
 #
 # mktables -- create the runtime Perl Unicode files (lib/unicore/.../*.pl),
@@ -2198,6 +2209,15 @@ sub trace { return main::trace(@_); }
     # 'handler'
     main::set_access('each_line_handler', \%each_line_handler, 'c');
 
+    my %retain_trailing_comments;
+    # This is used to not discard the comments that end data lines.  This
+    # would be used only for files with non-typical syntax, and most code here
+    # assumes that comments have been stripped, so special handlers would have
+    # to be written.  It is assumed that the code will use these in
+    # single-quoted contexts, and so any "'" marks in the comment will be
+    # prefixed by a backslash.
+    main::set_access('retain_trailing_comments', \%retain_trailing_comments, 'c');
+
     my %properties; # Optional ordered list of the properties that occur in each
     # meaningful line of the input file.  If present, an appropriate
     # each_line_handler() is automatically generated and pushed onto the stack
@@ -2355,6 +2375,7 @@ sub trace { return main::trace(@_); }
 
         # Set defaults
         $handler{$addr} = \&main::process_generic_property_file;
+        $retain_trailing_comments{$addr} = 0;
         $non_skip{$addr} = 0;
         $skip{$addr} = undef;
         $has_missings_defaults{$addr} = $NO_DEFAULTS;
@@ -3020,9 +3041,21 @@ END
                 next;
             }
 
-            # Remove comments and trailing space, and skip this line if the
-            # result is empty
-            s/#.*//;
+            # Unless to keep, remove comments.  If to keep, ignore
+            # comment-only lines
+            if ($retain_trailing_comments{$addr}) {
+                next if / ^ \s* \# /x;
+
+                # But escape any single quotes (done in both the comment and
+                # non-comment portion; this could be a bug someday, but not
+                # likely)
+                s/'/\\'/g;
+            }
+            else {
+                s/#.*//;
+            }
+
+            # Remove trailing space, and skip this line if the result is empty
             s/\s+$//;
             next if /^$/;
 
@@ -11708,7 +11741,16 @@ END
                                           . $CMD_DELIM
                                           . $fields[$CHARNAME];
             }
-            elsif ($fields[$CHARNAME] =~ /^CJK/) {
+            elsif ($fields[$CATEGORY] eq 'Lo') {    # Is a letter
+
+                # All the CJK ranges like this have the name given as a
+                # special case in the next code line.  And for the others, we
+                # hope that Unicode continues to use the correct name in
+                # future releases, so we don't have to make further special
+                # cases.
+                my $name = ($fields[$CHARNAME] =~ /^CJK/)
+                           ? 'CJK UNIFIED IDEOGRAPH'
+                           : uc $fields[$CHARNAME];
 
                 # The name for these contains the code point itself, and all
                 # are defined to have the same base name, regardless of what
@@ -11720,7 +11762,7 @@ END
                                            . '='
                                            . $CP_IN_NAME
                                            . $CMD_DELIM
-                                           . 'CJK UNIFIED IDEOGRAPH';
+                                           . $name;
 
             }
             elsif ($fields[$CATEGORY] eq 'Co'
@@ -15293,7 +15335,7 @@ sub add_perl_synonyms() {
     # the single-form, \p{name}.  These are:
     #   All the binary property Y tables, so that \p{Name=Y} gets \p{Name} and
     #       \p{Is_Name} as synonyms
-    #   \p{Script=Value} gets \p{Value}, \p{Is_Value} as synonyms
+    #   \p{Script_Extensions=Value} gets \p{Value}, \p{Is_Value} as synonyms
     #   \p{General_Category=Value} gets \p{Value}, \p{Is_Value} as synonyms
     #   \p{Block=Value} gets \p{In_Value} as a synonym, and, if there is no
     #       conflict, \p{Value} and \p{Is_Value} as well
@@ -15307,8 +15349,15 @@ sub add_perl_synonyms() {
                                                             property_ref('*');
     push @tables, $gc->tables;
 
-    # If the version of Unicode includes the Script property, add its tables
-    push @tables, $script->tables if defined $script;
+    # If the version of Unicode includes the Script Extensions (preferably),
+    # or Script property, add its tables
+    my $scx = property_ref("Script_Extensions");
+    if (defined $scx) {
+        push @tables, $scx->tables;
+    }
+    else {
+        push @tables, $script->tables if defined $script;
+    }
 
     # The Block tables are kept separate because they are treated differently.
     # And the earliest versions of Unicode didn't include them, so add only if
@@ -16975,34 +17024,20 @@ B<Legend summary:>
 
 =over 4
 
-=item *
+=item Z<>B<*> is a wild-card
 
-B<*> is a wild-card
-
-=item *
-
-B<(\\d+)> in the info column gives the number of Unicode code points matched
+=item B<(\\d+)> in the info column gives the number of Unicode code points matched
 by this property.
 
-=item *
-
-B<$DEPRECATED> means this is deprecated.
-
-=item *
+=item B<$DEPRECATED> means this is deprecated.
 
-B<$OBSOLETE> means this is obsolete.
+=item B<$OBSOLETE> means this is obsolete.
 
-=item *
+=item B<$STABILIZED> means this is stabilized.
 
-B<$STABILIZED> means this is stabilized.
+=item B<$STRICTER> means tighter (stricter) name matching applies.
 
-=item *
-
-B<$STRICTER> means tighter (stricter) name matching applies.
-
-=item *
-
-B<$DISCOURAGED> means use of this form is discouraged, and may not be
+=item B<$DISCOURAGED> means use of this form is discouraged, and may not be
 stable.
 
 =back
@@ -18766,9 +18801,16 @@ sub make_property_test_script() {
         $property->DESTROY();
     }
 
+    # Make any test of the boundary (break) properties TODO if the code
+    # doesn't match the version being compiled
+    my $TODO_FAILING_BREAKS = ($version_of_mk_invlist_bounds ne $v_version)
+                             ? "\nsub TODO_FAILING_BREAKS { 1 }\n"
+                             : "\nsub TODO_FAILING_BREAKS { 0 }\n";
+
     &write($t_path,
            0,           # Not utf8;
            [$HEADER,
+            $TODO_FAILING_BREAKS,
             <DATA>,
             @output,
             (map {"Test_GCB('$_');\n"} @backslash_X_tests),
@@ -19153,7 +19195,8 @@ my @input_file_objects = (
                           . 'incorporated into the Unicode data base',
                    ),
     Input_file->new('StandardizedVariants.html', v3.2.0,
-                    Skip => 'Provides a visual display of the standard '
+                    Skip => 'Obsoleted as of Unicode 9.0, but previously '
+                          . 'provided a visual display of the standard '
                           . 'variant sequences derived from '
                           . 'F<StandardizedVariants.txt>.',
                         # I don't know why the html came earlier than the
@@ -19188,18 +19231,21 @@ my @input_file_objects = (
                    ),
     Input_file->new("$AUXILIARY/GCBTest.txt", v4.1.0,
                     Handler => \&process_GCB_test,
+                    retain_trailing_comments => 1,
                    ),
     Input_file->new("$AUXILIARY/GraphemeBreakTest.html", v4.1.0,
                     Skip => $Validation_Documentation,
                    ),
     Input_file->new("$AUXILIARY/SBTest.txt", v4.1.0,
                     Handler => \&process_SB_test,
+                    retain_trailing_comments => 1,
                    ),
     Input_file->new("$AUXILIARY/SentenceBreakTest.html", v4.1.0,
                     Skip => $Validation_Documentation,
                    ),
     Input_file->new("$AUXILIARY/WBTest.txt", v4.1.0,
                     Handler => \&process_WB_test,
+                    retain_trailing_comments => 1,
                    ),
     Input_file->new("$AUXILIARY/WordBreakTest.html", v4.1.0,
                     Skip => $Validation_Documentation,
@@ -19250,6 +19296,7 @@ my @input_file_objects = (
                    ),
     Input_file->new("$AUXILIARY/LBTest.txt", v5.1.0,
                     Handler => \&process_LB_test,
+                    retain_trailing_comments => 1,
                    ),
     Input_file->new("$AUXILIARY/LineBreakTest.html", v5.1.0,
                     Skip => $Validation_Documentation,
@@ -19363,6 +19410,12 @@ my @input_file_objects = (
                     Property => 'Indic_Positional_Category',
                     Has_Missings_Defaults => $NOT_IGNORED,
                    ),
+    Input_file->new('TangutSources.txt', v9.0.0,
+                    Skip => 'Specifies source mappings for Tangut ideographs'
+                          . ' and components. This data file also includes'
+                          . ' informative radical-stroke values that are used'
+                          . ' internally by Unicode',
+                   ),
 );
 
 # End of all the preliminaries.
@@ -19695,6 +19748,13 @@ if ($verbosity >= $NORMAL_VERBOSITY && ! $debug_skip) {
     }
     print "\nAll done\n" if $verbosity >= $VERBOSE;
 }
+
+if ($version_of_mk_invlist_bounds lt $v_version) {
+    Carp::my_carp("WARNING: \\b{} algorithms (regen/mk_invlist.pl) need"
+                . " to be checked and possibly updated to Unicode"
+                . " $string_version");
+}
+
 exit(0);
 
 # TRAILING CODE IS USED BY make_property_test_script()
@@ -19820,7 +19880,10 @@ if (defined &locales_enabled) {
 }
 
 # Eval'd so can run on versions earlier than the property is available in
-my $WB_Extend_or_Format_re = eval 'qr/[\p{WB=Extend}\p{WB=Format}]/';
+my $WB_Extend_or_Format_re = eval 'qr/[\p{WB=Extend}\p{WB=Format}\p{WB=ZWJ}]/';
+if (! defined $WB_Extend_or_Format_re) {
+    $WB_Extend_or_Format_re = eval 'qr/[\p{WB=Extend}\p{WB=Format}]/';
+}
 
 sub _test_break($$) {
     # Test various break property matches.  The 2nd parameter gives the
@@ -19842,6 +19905,15 @@ sub _test_break($$) {
     my $break_type = shift;
 
     my $line   = (caller 1)[2];   # Line number
+    my $comment = "";
+
+    if ($template =~ / ( .*? ) \s* \# (.*) /x) {
+        $template = $1;
+        $comment = $2;
+
+        # Replace leading spaces with a single one.
+        $comment =~ s/ ^ \s* / # /x;
+    }
 
     # The line contains characters above the ASCII range, but in Latin1.  It
     # may or may not be in utf8, and if it is, it may or may not know it.  So,
@@ -19980,12 +20052,24 @@ sub _test_break($$) {
             my $pattern = "(?$modifier:$break_pattern)";
 
             # Actually do the test
+            my $matched_text;
             my $matched = $string =~ qr/$pattern/;
-            print "not " unless $matched;
+            if ($matched) {
+                $matched_text = "matched";
+            }
+            else {
+                $matched_text = "failed to match";
+                print "not ";
+
+                if (TODO_FAILING_BREAKS) {
+                    $comment = " # $comment" unless $comment =~ / ^ \s* \# /x;
+                    $comment =~ s/#/# TODO/;
+                }
+            }
+            print "ok ", ++$Tests, " - \"$display_string\" $matched_text /$pattern/$display_upgrade; line $line $display_locale$comment\n";
 
-            # Fancy display of test results
-            $matched = ($matched) ? "matched" : "failed to match";
-            print "ok ", ++$Tests, " - \"$display_string\" $matched /$pattern/$display_upgrade; line $line $display_locale\n";
+            # Only print the comment on the first use of this line
+            $comment = "";
 
             # Repeat with the first \B{} in the pattern.  This makes sure the
             # code in regexec.c:find_byclass() for \B gets executed
@@ -19993,8 +20077,10 @@ sub _test_break($$) {
                 my $B_pattern = "$1$2";
                 $matched = $string =~ qr/$B_pattern/;
                 print "not " unless $matched;
-                $matched = ($matched) ? "matched" : "failed to match";
-                print "ok ", ++$Tests, " - \"$display_string\" $matched /$B_pattern/$display_upgrade; line $line $display_locale\n";
+                $matched_text = ($matched) ? "matched" : "failed to match";
+                print "ok ", ++$Tests, " - \"$display_string\" $matched_text /$B_pattern/$display_upgrade; line $line $display_locale";
+                print " # TODO" if TODO_FAILING_BREAKS && ! $matched;
+                print "\n";
             }
         }
 
@@ -20019,7 +20105,9 @@ sub _test_break($$) {
             } else {
                 $matches[$i] = join("", map { sprintf "\\x{%04X}", ord $_ }
                                                     split "", $matches[$i]);
-                print "not ok $Tests - In \"$display_string\" =~ /(\\X)/g, \\X #",
+                print "not ok $Tests -";
+                print " # TODO" if TODO_FAILING_BREAKS;
+                print " In \"$display_string\" =~ /(\\X)/g, \\X #",
                     $i + 1,
                     " should have matched $should_display[$i]",
                     " but instead matched $matches[$i]",
@@ -20033,7 +20121,9 @@ sub _test_break($$) {
         if (@matches == @should_match) {
             print "ok $Tests - Nothing was left over; line $line\n";
         } else {
-            print "not ok $Tests - There were ", scalar @should_match, " \\X matches expected, but got ", scalar @matches, " instead; line $line\n";
+            print "not ok $Tests - There were ", scalar @should_match, " \\X matches expected, but got ", scalar @matches, " instead; line $line";
+            print " # TODO" if TODO_FAILING_BREAKS;
+            print "\n";
         }
     }
 
index ae9a76b..f7ee066 100644 (file)
@@ -1 +1 @@
-8.0.0
+9.0.0
index ddb0c35..2ae1bb4 100644 (file)
@@ -5,7 +5,7 @@
 
 package warnings;
 
-our $VERSION = "1.36";
+our $VERSION = "1.37";
 
 # Verify that we're called correctly so that warnings will work.
 # Can't use Carp, since Carp uses us!
@@ -93,10 +93,13 @@ our %Offsets = (
     'locale'                           => 126,
     'missing'                          => 128,
     'redundant'                                => 130,
+
+    # Warnings Categories added in Perl 5.025
+    'experimental::declared_refs'      => 132,
 );
 
 our %Bits = (
-    'all'                              => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x05", # [0..65]
+    'all'                              => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x15", # [0..66]
     'ambiguous'                                => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29]
     'bareword'                         => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30]
     'closed'                           => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
@@ -106,9 +109,10 @@ our %Bits = (
     'digit'                            => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31]
     'exec'                             => "\x00\x40\x00\x00\x00\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\x00\x00\x00", # [3]
-    'experimental'                     => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x55\x51\x15\x00", # [51..56,58..62]
+    'experimental'                     => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x55\x51\x15\x10", # [51..56,58..62,66]
     'experimental::bitwise'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [58]
     'experimental::const_attr'         => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [59]
+    'experimental::declared_refs'      => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [66]
     'experimental::lexical_subs'       => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [52]
     'experimental::postderef'          => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [55]
     'experimental::re_strict'          => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [60]
@@ -165,7 +169,7 @@ our %Bits = (
 );
 
 our %DeadBits = (
-    'all'                              => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x0a", # [0..65]
+    'all'                              => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x2a", # [0..66]
     'ambiguous'                                => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29]
     'bareword'                         => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30]
     'closed'                           => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
@@ -175,9 +179,10 @@ our %DeadBits = (
     'digit'                            => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31]
     'exec'                             => "\x00\x80\x00\x00\x00\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\x00\x00\x00", # [3]
-    'experimental'                     => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xaa\xa2\x2a\x00", # [51..56,58..62]
+    'experimental'                     => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xaa\xa2\x2a\x20", # [51..56,58..62,66]
     'experimental::bitwise'            => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [58]
     'experimental::const_attr'         => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [59]
+    'experimental::declared_refs'      => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [66]
     'experimental::lexical_subs'       => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [52]
     'experimental::postderef'          => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [55]
     'experimental::re_strict'          => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [60]
@@ -235,8 +240,8 @@ our %DeadBits = (
 
 # These are used by various things, including our own tests
 our $NONE                              =  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
-our $DEFAULT                           =  "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x00\x55\x51\x55\x00", # [2,58,59,52,55,60,61,53,56,54,62,4,63,22,23,25]
-our $LAST_BIT                          =  132 ;
+our $DEFAULT                           =  "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x00\x55\x51\x55\x10", # [2,4,22,23,25,52..56,58..63,66]
+our $LAST_BIT                          =  134 ;
 our $BYTES                             =  17 ;
 
 our $All = "" ; vec($All, $Offsets{'all'}, 2) = 3 ;
@@ -725,6 +730,8 @@ The current hierarchy is:
          |                 |
          |                 +- experimental::const_attr
          |                 |
+         |                 +- experimental::declared_refs
+         |                 |
          |                 +- experimental::lexical_subs
          |                 |
          |                 +- experimental::postderef
index 141def9..fb3e676 100644 (file)
--- a/locale.c
+++ b/locale.c
@@ -1488,6 +1488,7 @@ Perl__mem_collxfrm(pTHX_ const char *input_string,
                                            includes the collation index
                                            prefixed. */
 
+            DEBUG_Lv(PerlIO_printf(Perl_debug_log, "Looking to replace NUL\n"));
             /* Look through all legal code points (NUL isn't) */
             for (j = 1; j < 256; j++) {
                 char * x;       /* j's xfrm plus collation index */
@@ -1555,8 +1556,8 @@ Perl__mem_collxfrm(pTHX_ const char *input_string,
             }
 
             DEBUG_L(PerlIO_printf(Perl_debug_log,
-                    "_mem_collxfrm: lowest collating control in the 0-255 "
-                    "range in locale %s is 0x%02X\n",
+                    "_mem_collxfrm: lowest collating non-NUL control in the "
+                    "0-255 range in locale %s is 0x%02X\n",
                     PL_collation_name,
                     cur_min_cp));
             if (DEBUG_Lv_TEST) {
@@ -1779,7 +1780,12 @@ Perl__mem_collxfrm(pTHX_ const char *input_string,
                 STRLEN needed = *xlen + 1;   /* +1 For trailing NUL */
                 STRLEN computed_guess = PL_collxfrm_base
                                       + (PL_collxfrm_mult * length_in_chars);
-                const STRLEN new_m = needed / length_in_chars;
+
+                /* On zero-length input, just keep current slope instead of
+                 * dividing by 0 */
+                const STRLEN new_m = (length_in_chars != 0)
+                                     ? needed / length_in_chars
+                                     : PL_collxfrm_mult;
 
                 DEBUG_Lv(PerlIO_printf(Perl_debug_log,
                     "%s: %d: initial size of %"UVuf" bytes for a length "
@@ -1870,10 +1876,34 @@ Perl__mem_collxfrm(pTHX_ const char *input_string,
 #ifdef DEBUGGING
     if (DEBUG_Lv_TEST || debug_initialization) {
         unsigned i;
+        char * t = s;
+        bool prev_was_printable = TRUE;
+        bool first_time = TRUE;
         PerlIO_printf(Perl_debug_log,
-            "_mem_collxfrm[%d]: returning %"UVuf" for locale %s '%s'\n",
-            PL_collation_ix, *xlen, PL_collation_name, input_string);
-        PerlIO_printf(Perl_debug_log, "Its xfrm is");
+            "_mem_collxfrm[%d]: returning %"UVuf" for locale %s string '",
+            PL_collation_ix, *xlen, PL_collation_name);
+        while (t < s + len ) {
+            UV cp = (utf8)
+                    ?  utf8_to_uvchr_buf((U8 *) t, s + len, NULL)
+                    : * (U8 *) t;
+            if (isPRINT(cp)) {
+                if (! prev_was_printable) {
+                    PerlIO_printf(Perl_debug_log, " ");
+                }
+                PerlIO_printf(Perl_debug_log, "%c", (U8) cp);
+                prev_was_printable = TRUE;
+            }
+            else {
+                if (! first_time) {
+                    PerlIO_printf(Perl_debug_log, " ");
+                }
+                PerlIO_printf(Perl_debug_log, "%02"UVXf"", cp);
+                prev_was_printable = FALSE;
+            }
+            t += (utf8) ? UTF8SKIP(t) : 1;
+            first_time = FALSE;
+        }
+        PerlIO_printf(Perl_debug_log, "'\nIts xfrm is");
         for (i = COLLXFRM_HDR_LEN; i < *xlen + COLLXFRM_HDR_LEN; i++) {
             PerlIO_printf(Perl_debug_log, " %02x", (U8) xbuf[i]);
         }
diff --git a/mg.c b/mg.c
index 4321a40..0a93cb8 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -766,46 +766,6 @@ S_fixup_errno_string(pTHX_ SV* sv)
     }
 }
 
-SV*
-Perl__get_encoding(pTHX)
-{
-    /* For core Perl use only: Returns the $^ENCODING or 'use encoding' in
-     * effect; NULL if none.
-     *
-     * $^ENCODING maps to PL_encoding, and is the old way to do things, and is
-     * retained for backwards compatibility.  Now, there is a shadow variable
-     * ${^E_NCODING} set only by the encoding pragma, used to give this pragma
-     * lexical scope, unlike the global scope it (shudder) used to have.  This
-     * variable maps to PL_lex_encoding.  Again for backwards compatibility,
-     * PL_encoding has precedence over PL_lex_encoding.  The hints hash is used
-     * to determine if PL_lex_encoding is in scope, and hence valid.  The hints
-     * hash only accepts simple values, so we can't put an Encode object into
-     * it, so we put the object into the global, and put a simple boolean into
-     * the hints hash giving whether the global is valid or not */
-
-    dVAR;
-    SV *is_encoding;
-
-    if (PL_encoding) {
-        return PL_encoding;
-    }
-
-    if (! PL_lex_encoding) {
-        return NULL;
-    }
-
-    is_encoding = cop_hints_fetch_pvs(PL_curcop, "encoding", 0);
-    if (   is_encoding
-        && is_encoding != &PL_sv_placeholder
-        && SvIOK(is_encoding)
-        && SvIV(is_encoding))  /* non-zero mean valid */
-    {
-        return PL_lex_encoding;
-    }
-
-    return NULL;
-}
-
 #ifdef VMS
 #include <descrip.h>
 #include <starlet.h>
@@ -856,8 +816,6 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
     case '\005':  /* ^E */
         if (nextchar != '\0') {
             if (strEQ(remaining, "NCODING"))
-                sv_setsv(sv, _get_encoding());
-            else if (strEQ(remaining, "_NCODING"))
                 sv_setsv(sv, NULL);
             break;
         }
@@ -2733,41 +2691,11 @@ Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
 #endif
        }
        else {
-            unsigned int offset = 1;
-            bool lex = FALSE;
-
-            /* It may be the shadow variable ${E_NCODING} which has lexical
-             * scope.  See comments at Perl__get_encoding in this file */
-            if (*(mg->mg_ptr + 1) == '_') {
-                if (CopSTASH(PL_curcop) != get_hv("encoding::",0))
-                    Perl_croak_no_modify();
-                lex = TRUE;
-                offset++;
-            }
-            if (strEQ(mg->mg_ptr + offset, "NCODING")) {
-                if (lex) {  /* Use the shadow global */
-                    SvREFCNT_dec(PL_lex_encoding);
-                    if (SvOK(sv) || SvGMAGICAL(sv)) {
-                        PL_lex_encoding = newSVsv(sv);
-                    }
-                    else {
-                        PL_lex_encoding = NULL;
-                    }
-                }
-                else { /* Use the regular global */
-                    SvREFCNT_dec(PL_encoding);
-                    if (SvOK(sv) || SvGMAGICAL(sv)) {
+            if (strEQ(mg->mg_ptr + 1, "NCODING") && SvOK(sv))
                         if (PL_localizing != 2) {
                             Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED),
-                                          "Setting ${^ENCODING} is deprecated");
+                                    "${^ENCODING} is no longer supported");
                         }
-                        PL_encoding = newSVsv(sv);
-                    }
-                    else {
-                        PL_encoding = NULL;
-                    }
-                }
-            }
         }
        break;
     case '\006':       /* ^F */
index f645502..5fc3df3 100644 (file)
--- a/numeric.c
+++ b/numeric.c
@@ -1138,7 +1138,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(DOUBLE_IS_VAX_FLOAT)) && 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)
@@ -1185,7 +1185,11 @@ S_mulexp10(NV value, I32 exponent)
            result *= power;
 #ifdef FP_OVERFLOWS_TO_ZERO
             if (result == 0)
+# ifdef NV_INF
                 return value < 0 ? -NV_INF : NV_INF;
+# else
+                return value < 0 ? -FLT_MAX : FLT_MAX;
+# endif
 #endif
            /* Floating point exceptions are supposed to be turned off,
             *  but if we're obviously done, don't risk another iteration.  
@@ -1247,6 +1251,7 @@ Perl_my_atof(pTHX_ const char* s)
     return x;
 }
 
+#if defined(NV_INF) || defined(NV_NAN)
 
 #ifdef USING_MSVC6
 #  pragma warning(push)
@@ -1276,8 +1281,6 @@ S_my_atof_infnan(pTHX_ const char* s, bool negative, const char* send, NV* value
         /* If still here, we didn't have either NV_INF or NV_NAN,
          * and can try falling back to native strtod/strtold.
          *
-         * (Though, are our NV_INF or NV_NAN ever not defined?)
-         *
          * The native interface might not recognize all the possible
          * inf/nan strings Perl recognizes.  What we can try
          * is to try faking the input.  We will try inf/-inf/nan
@@ -1286,36 +1289,44 @@ S_my_atof_infnan(pTHX_ const char* s, bool negative, const char* send, NV* value
             const char* fake = NULL;
             char* endp;
             NV nv;
+#ifdef NV_INF
             if ((infnan & IS_NUMBER_INFINITY)) {
                 fake = ((infnan & IS_NUMBER_NEG)) ? "-inf" : "inf";
             }
-            else if ((infnan & IS_NUMBER_NAN)) {
+#endif
+#ifdef NV_NAN
+            if ((infnan & IS_NUMBER_NAN)) {
                 fake = "nan";
             }
+#endif
             assert(fake);
             nv = Perl_strtod(fake, &endp);
             if (fake != endp) {
+#ifdef NV_INF
                 if ((infnan & IS_NUMBER_INFINITY)) {
-#ifdef Perl_isinf
+#  ifdef Perl_isinf
                     if (Perl_isinf(nv))
                         *value = nv;
-#else
+#  else
                     /* last resort, may generate SIGFPE */
                     *value = Perl_exp((NV)1e9);
                     if ((infnan & IS_NUMBER_NEG))
                         *value = -*value;
-#endif
+#  endif
                     return (char*)p; /* p, not endp */
                 }
-                else if ((infnan & IS_NUMBER_NAN)) {
-#ifdef Perl_isnan
+#endif
+#ifdef NV_NAN
+                if ((infnan & IS_NUMBER_NAN)) {
+#  ifdef Perl_isnan
                     if (Perl_isnan(nv))
                         *value = nv;
-#else
+#  else
                     /* last resort, may generate SIGFPE */
                     *value = Perl_log((NV)-1.0);
-#endif
+#  endif
                     return (char*)p; /* p, not endp */
+#endif
                 }
             }
         }
@@ -1327,6 +1338,8 @@ S_my_atof_infnan(pTHX_ const char* s, bool negative, const char* send, NV* value
 #  pragma warning(pop)
 #endif
 
+#endif /* if defined(NV_INF) || defined(NV_NAN) */
+
 char*
 Perl_my_atof2(pTHX_ const char* orig, NV* value)
 {
diff --git a/op.c b/op.c
index 8008a21..18692e5 100644 (file)
--- a/op.c
+++ b/op.c
 /* This file contains the functions that create, manipulate and optimize
  * the OP structures that hold a compiled perl program.
  *
- * A Perl program is compiled into a tree of OPs. Each op contains
- * structural pointers (eg to its siblings and the next op in the
- * execution sequence), a pointer to the function that would execute the
- * op, plus any data specific to that op. For example, an OP_CONST op
- * points to the pp_const() function and to an SV containing the constant
- * value. When pp_const() is executed, its job is to push that SV onto the
- * stack.
+ * Note that during the build of miniperl, a temporary copy of this file
+ * is made, called opmini.c.
+ *
+ * A Perl program is compiled into a tree of OP nodes. Each op contains:
+ *  * structural OP pointers to its children and siblings (op_sibling,
+ *    op_first etc) that define the tree structure;
+ *  * execution order OP pointers (op_next, plus sometimes op_other,
+ *    op_lastop  etc) that define the execution sequence plus variants;
+ *  * a pointer to the C "pp" function that would execute the op;
+ *  * any data specific to that op.
+ * For example, an OP_CONST op points to the pp_const() function and to an
+ * SV containing the constant value. When pp_const() is executed, its job
+ * is to push that SV onto the stack.
  *
  * OPs are mainly created by the newFOO() functions, which are mainly
  * called from the parser (in perly.y) as the code is parsed. For example
  *     newBINOP(OP_MULTIPLY, flags, newSVREF($b), newSVREF($c))
  *  )
  *
- * Note that during the build of miniperl, a temporary copy of this file
- * is made, called opmini.c.
+ * As the parser reduces low-level rules, it creates little op subtrees;
+ * as higher-level rules are resolved, these subtrees get joined together
+ * as branches on a bigger subtree, until eventually a top-level rule like
+ * a subroutine definition is reduced, at which point there is one large
+ * parse tree left.
+ *
+ * The execution order pointers (op_next) are generated as the subtrees
+ * are joined together. Consider this sub-expression: A*B + C/D: at the
+ * point when it's just been parsed, the op tree looks like:
+ *
+ *   [+]
+ *    |
+ *   [*]------[/]
+ *    |        |
+ *    A---B    C---D
+ *
+ * with the intended execution order being:
+ *
+ *   [PREV] => A => B => [*] => C => D => [/] =>  [+] => [NEXT]
+ *
+ * At this point all the nodes' op_next pointers will have been set,
+ * except that:
+ *    * we don't know what the [NEXT] node will be yet;
+ *    * we don't know what the [PREV] node will be yet, but when it gets
+ *      created and needs its op_next set, it needs to be set to point to
+ *      A, which is non-obvious.
+ * To handle both those cases, we temporarily set the top node's
+ * op_next to point to the first node to be executed in this subtree (A in
+ * this case). This means that initially a subtree's op_next chain,
+ * starting from the top node, will visit each node in execution sequence
+ * then point back at the top node.
+ * When we embed this subtree in a larger tree, its top op_next is used
+ * to get the start node, then is set to point to its new neighbour.
+ * For example the two separate [*],A,B and [/],C,D subtrees would
+ * initially have had:
+ *   [*] => A;  A => B;  B => [*]
+ * and
+ *   [/] => C;  C => D;  D => [/]
+ * When these two subtrees were joined together to make the [+] subtree,
+ * [+]'s op_next was set to [*]'s op_next, i.e. A; then [*]'s op_next was
+ * set to point to [/]'s op_next, i.e. C.
+ *
+ * This op_next linking is done by the LINKLIST() macro and its underlying
+ * op_linklist() function. Given a top-level op, if its op_next is
+ * non-null, it's already been linked, so leave it. Otherwise link it with
+ * its children as described above, possibly recursively if any of the
+ * children have a null op_next.
+ *
+ * In summary: given a subtree, its top-level node's op_next will either
+ * be:
+ *   NULL: the subtree hasn't been LINKLIST()ed yet;
+ *   fake: points to the start op for this subtree;
+ *   real: once the subtree has been embedded into a larger tree
  */
 
 /*
+
+Here's an older description from Larry.
+
 Perl's compiler is essentially a 3-pass compiler with interleaved phases:
 
     A bottom-up pass
@@ -2744,7 +2804,7 @@ S_lvref(pTHX_ OP *o, I32 type)
     case OP_ASLICE:
     case OP_HSLICE:
         OpTYPE_set(o, OP_LVREFSLICE);
-       o->op_private &= OPpLVAL_INTRO|OPpLVREF_ELEM;
+       o->op_private &= OPpLVAL_INTRO;
        return;
     case OP_NULL:
        if (o->op_flags & OPf_SPECIAL)          /* do BLOCK */
@@ -3068,7 +3128,7 @@ Perl_op_lvalue_flags(pTHX_ OP *o, I32 type, U32 flags)
               in error messages.  */
            op_lvalue(OpSIBLING(cBINOPo->op_first),
                      S_potential_mod_type(type)
-                       ? OP_ENTERSUB
+                       ? (I32)OP_ENTERSUB
                        : o->op_type);
        }
        break;
@@ -3131,6 +3191,17 @@ Perl_op_lvalue_flags(pTHX_ OP *o, I32 type, U32 flags)
        goto nomod;
 
     case OP_SREFGEN:
+       if (type == OP_NULL) { /* local */
+         local_refgen:
+           if (!FEATURE_MYREF_IS_ENABLED)
+               Perl_croak(aTHX_ "The experimental declared_refs "
+                                "feature is not enabled");
+           Perl_ck_warner_d(aTHX_
+                    packWARN(WARN_EXPERIMENTAL__DECLARED_REFS),
+                   "Declaring references is experimental");
+           op_lvalue(cUNOPo->op_first, OP_NULL);
+           return o;
+       }
        if (type != OP_AASSIGN && type != OP_SASSIGN
         && type != OP_ENTERLOOP)
            goto nomod;
@@ -3139,6 +3210,8 @@ Perl_op_lvalue_flags(pTHX_ OP *o, I32 type, U32 flags)
        assert (!OpHAS_SIBLING(kid));
        goto kid_2lvref;
     case OP_REFGEN:
+       if (type == OP_NULL) /* local */
+           goto local_refgen;
        if (type != OP_AASSIGN) goto nomod;
        kid = cUNOPo->op_first;
       kid_2lvref:
@@ -3679,7 +3752,7 @@ S_my_kid(pTHX_ OP *o, OP *attrs, OP **imopsp)
 
     type = o->op_type;
 
-    if (type == OP_LIST) {
+    if (OP_TYPE_IS_OR_WAS(o, OP_LIST)) {
         OP *kid;
         for (kid = cLISTOPo->op_first; kid; kid = OpSIBLING(kid))
            my_kid(kid, attrs, imopsp);
@@ -3705,6 +3778,17 @@ S_my_kid(pTHX_ OP *o, OP *attrs, OP **imopsp)
        o->op_private |= OPpOUR_INTRO;
        return o;
     }
+    else if (type == OP_REFGEN || type == OP_SREFGEN) {
+       if (!FEATURE_MYREF_IS_ENABLED)
+           Perl_croak(aTHX_ "The experimental declared_refs "
+                            "feature is not enabled");
+       Perl_ck_warner_d(aTHX_
+            packWARN(WARN_EXPERIMENTAL__DECLARED_REFS),
+           "Declaring references is experimental");
+       /* Kid is a nulled OP_LIST, handled above.  */
+       my_kid(cUNOPo->op_first, attrs, imopsp);
+       return o;
+    }
     else if (type != OP_PADSV &&
             type != OP_PADAV &&
             type != OP_PADHV &&
@@ -9081,7 +9165,7 @@ Perl_newSTUB(pTHX_ GV *gv, bool fake)
     assert(!GvCVu(gv));
     GvCV_set(gv, cv);
     GvCVGEN(gv) = 0;
-    if (!fake && HvENAME_HEK(GvSTASH(gv)))
+    if (!fake && GvSTASH(gv) && HvENAME_HEK(GvSTASH(gv)))
        gv_method_changed(gv);
     if (SvFAKE(gv)) {
        cvgv = gv_fetchsv((SV *)gv, GV_ADDMULTI, SVt_PVCV);
index 819d14a..77fad27 100644 (file)
@@ -15,7 +15,7 @@
 
 #define PERL_REVISION  5               /* age */
 #define PERL_VERSION   25              /* epoch */
-#define PERL_SUBVERSION        2               /* generation */
+#define PERL_SUBVERSION        3               /* generation */
 
 /* The following numbers describe the earliest compatible version of
    Perl ("compatibility" here being defined as sufficient binary/API
@@ -36,7 +36,7 @@
 */
 #define PERL_API_REVISION      5
 #define PERL_API_VERSION       25
-#define PERL_API_SUBVERSION    2
+#define PERL_API_SUBVERSION    3
 /*
    XXX Note:  The selection of non-default Configure options, such
    as -Duselonglong may invalidate these settings.  Currently, Configure
diff --git a/perl.h b/perl.h
index a1dae95..0cd2e2a 100644 (file)
--- a/perl.h
+++ b/perl.h
 #   endif
 #endif /* !NO_LOCALE && HAS_SETLOCALE */
 
-/* Is $^ENCODING set, or are we under the encoding pragma? */
-#define IN_ENCODING UNLIKELY(PL_encoding                                      \
-                             || (PL_lex_encoding && _get_encoding() != NULL))
-
 #include <setjmp.h>
 
 #ifdef I_SYS_PARAM
@@ -3069,6 +3065,8 @@ freeing any remaining Perl interpreters.
  */
 #if defined(USE_ITHREADS) && defined(I_PTHREAD) && \
     defined(__clang__) && \
+    !defined(PERL_GLOBAL_STRUCT) && \
+    !defined(PERL_GLOBAL_STRUCT_PRIVATE) && \
     !defined(SWIG) && \
   ((!defined(__apple_build_version__) &&               \
     ((__clang_major__ == 3 && __clang_minor__ >= 6) || \
@@ -3877,12 +3875,6 @@ typedef        struct crypt_data {     /* straight from /usr/include/crypt.h */
 #  define USE_HASH_SEED
 #endif
 
-/* Win32 defines a type 'WORD' in windef.h, and AmigaOS in exec/types.h.
- * This conflicts with the enumerator 'WORD' defined in perly.h.
- * The yytokentype enum is only a debugging aid, so it's not really needed. */
-#if defined(WIN32) || defined(__amigaos4__)
-#  define YYTOKENTYPE
-#endif
 #include "perly.h"
 
 
@@ -5289,6 +5281,7 @@ EXTCONST char *const PL_phase_names[];
 #  define PL_dirty cBOOL(PL_phase == PERL_PHASE_DESTRUCT)
 
 #  define PL_amagic_generation PL_na
+#  define PL_encoding ((SV *)NULL)
 #endif /* !PERL_CORE */
 
 #define PL_hints PL_compiling.cop_hints
@@ -5736,6 +5729,12 @@ EXTCONST bool PL_valid_types_NV_set[];
  * Also, do NOT try doing NV_NAN based on NV_INF and trying (NV_INF-NV_INF).
  * Though logically correct, some compilers (like Visual C 2003)
  * falsely misoptimize that to zero (x-x is always zero, right?)
+ *
+ * Finally, note that not all floating point formats define Inf (or NaN).
+ * For the infinity a large number may be used instead.  Operations that
+ * under the IEEE floating point would return Inf or NaN may return
+ * either large numbers (positive or negative), or they may cause
+ * a floating point exception or some other fault.
  */
 
 /* The quadmath literals are anon structs which -Wc++-compat doesn't like. */
@@ -6743,6 +6742,14 @@ extern void moncontrol(int);
 #define PERL_PV_PRETTY_DUMP  PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE
 #define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE|PERL_PV_ESCAPE_NONASCII
 
+#if DOUBLEKIND == DOUBLE_IS_VAX_F_FLOAT || \
+    DOUBLEKIND == DOUBLE_IS_VAX_D_FLOAT || \
+    DOUBLEKIND == DOUBLE_IS_VAX_G_FLOAT
+#  define DOUBLE_IS_VAX_FLOAT
+#else
+#  define DOUBLE_IS_IEEE_FORMAT
+#endif
+
 #if DOUBLEKIND == DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN || \
     DOUBLEKIND == DOUBLE_IS_IEEE_754_64_BIT_LITTLE_ENDIAN || \
     DOUBLEKIND == DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN
@@ -6760,11 +6767,63 @@ extern void moncontrol(int);
 #  define DOUBLE_MIX_ENDIAN
 #endif
 
+/* The VAX fp formats are neither consistently little-endian nor
+ * big-endian, and neither are they really IEEE-mixed endian like
+ * the mixed-endian ARM IEEE formats (with swapped bytes).
+ * Ultimately, the VAX format ultimately came from the PDP.
+ *
+ * The ordering of the parts in VAX floats is quite vexing.
+ * In the below the fraction_n are the mantissa bits.
+ *
+ * The fraction_1 is the most significant (numbering as by DEC/Digital),
+ * while the rightmost bit in each fraction is the least significant:
+ * in other words, big-endian bit order within the fractions.
+ *
+ * The fraction segments themselves would be big-endianly, except that
+ * within 32 bit segments the less significant half comes first, the more
+ * significant after, except that in the format H (used for long doubles)
+ * the first fraction segment is alone, because the exponent is wider.
+ * This means for example that both the most and the least significant
+ * bits can be in the middle of the floats, not at either end.
+ *
+ * References:
+ * http://nssdc.gsfc.nasa.gov/nssdc/formats/VAXFloatingPoint.htm
+ * http://www.quadibloc.com/comp/cp0201.htm
+ * http://h71000.www7.hp.com/doc/82final/6443/6443pro_028.html
+ * (somebody at HP should be fired for the URLs)
+ *
+ * F   fraction_2:16 sign:1 exp:8  fraction_1:7
+ *     (exponent bias 128)
+ *
+ * D   fraction_2:16 sign:1 exp:8  fraction_1:7
+ *     fraction_4:16               fraction_3:16
+ *     (exponent bias 128)
+ *
+ * G   fraction_2:16 sign:1 exp:11 fraction_1:4
+ *     fraction_4:16               fraction_3:16
+ *     (exponent bias 1024)
+ *
+ * H   fraction_1:16 sign:1 exp:15
+ *     fraction_3:16               fraction_2:16
+ *     fraction_5:16               fraction_4:16
+ *     fraction_7:16               fraction_6:16
+ *     (exponent bias 16384)
+ *
+ * The formats T and X are available on the Alpha (and IA64?)
+ * and are equivalent with the IEEE 754 64 and 128 bit formats.
+ */
+
+#ifdef DOUBLE_IS_VAX_FLOAT
+#  define DOUBLE_VAX_ENDIAN
+#endif
+
+#ifdef DOUBLE_IS_IEEE_FORMAT
 /* All the basic IEEE formats have the implicit bit,
  * except for the 80-bit extended formats, which will undef this. */
-#define NV_IMPLICIT_BIT
+#  define NV_IMPLICIT_BIT
+#endif
 
-#ifdef LONG_DOUBLEKIND
+#if defined(LONG_DOUBLEKIND) && LONG_DOUBLEKIND != LONG_DOUBLE_IS_DOUBLE
 
 #  if LONG_DOUBLEKIND == LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN || \
       LONG_DOUBLEKIND == LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN || \
@@ -6818,6 +6877,9 @@ extern void moncontrol(int);
 #  ifdef DOUBLE_MIX_ENDIAN
 #    define NV_MIX_ENDIAN
 #  endif
+#  ifdef DOUBLE_VAX_ENDIAN
+#    define NV_VAX_ENDIAN
+#  endif
 #elif NVSIZE == LONG_DOUBLESIZE
 #  ifdef LONGDOUBLE_LITTLE_ENDIAN
 #    define NV_LITTLE_ENDIAN
@@ -6830,6 +6892,13 @@ extern void moncontrol(int);
 #  endif
 #endif
 
+#ifdef DOUBLE_IS_IEEE_FORMAT
+#  define DOUBLE_HAS_INF
+#  define DOUBLE_HAS_NAN
+#endif
+
+#ifdef DOUBLE_HAS_NAN
+
 /* NaNs (not-a-numbers) can carry payload bits, in addition to
  * "nan-ness".  Part of the payload is the quiet/signaling bit.
  * To back up a bit (harhar):
@@ -6980,6 +7049,8 @@ extern void moncontrol(int);
 #  elif DOUBLEKIND == DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE
 #    define NV_NAN_QS_BYTE_OFFSET 5 /* bytes 3 2 1 0 7 6 5 4 (MSB 7) */
 #  else
+/* For example the VAX formats should never
+ * get here because they do not have NaN. */
 #    error "Unexpected double format"
 #  endif
 #endif
@@ -7182,6 +7253,9 @@ extern void moncontrol(int);
 #    error "Unexpected double format"
 #  endif
 #endif
+
+#endif /* DOUBLE_HAS_NAN */
+
 /*
 
    (KEEP THIS LAST IN perl.h!)
index 445c264..63515d8 100644 (file)
--- a/perly.act
+++ b/perly.act
  */
 
 case 2:
-#line 115 "perly.y"
+#line 115 "perly.y" /* yacc.c:1646  */
     {
                          parser->expect = XSTATE;
-                       ;}
+                       }
+
     break;
 
   case 3:
-#line 119 "perly.y"
+#line 119 "perly.y" /* yacc.c:1646  */
     {
-                         newPROG(block_end((ps[(3) - (4)].val.ival),(ps[(4) - (4)].val.opval)));
+                         newPROG(block_end((ps[-1].val.ival),(ps[0].val.opval)));
                          PL_compiling.cop_seq = 0;
                          (yyval.ival) = 0;
-                       ;}
+                       }
+
     break;
 
   case 4:
-#line 125 "perly.y"
+#line 125 "perly.y" /* yacc.c:1646  */
     {
                          parser->expect = XTERM;
-                       ;}
+                       }
+
     break;
 
   case 5:
-#line 129 "perly.y"
+#line 129 "perly.y" /* yacc.c:1646  */
     {
-                         PL_eval_root = (ps[(3) - (3)].val.opval);
+                         PL_eval_root = (ps[0].val.opval);
                          (yyval.ival) = 0;
-                       ;}
+                       }
+
     break;
 
   case 6:
-#line 134 "perly.y"
+#line 134 "perly.y" /* yacc.c:1646  */
     {
                          parser->expect = XBLOCK;
-                       ;}
+                       }
+
     break;
 
   case 7:
-#line 138 "perly.y"
+#line 138 "perly.y" /* yacc.c:1646  */
     {
                          PL_pad_reset_pending = TRUE;
-                         PL_eval_root = (ps[(3) - (3)].val.opval);
+                         PL_eval_root = (ps[0].val.opval);
                          (yyval.ival) = 0;
                          yyunlex();
                          parser->yychar = YYEOF;
-                       ;}
+                       }
+
     break;
 
   case 8:
-#line 146 "perly.y"
+#line 146 "perly.y" /* yacc.c:1646  */
     {
                          parser->expect = XSTATE;
-                       ;}
+                       }
+
     break;
 
   case 9:
-#line 150 "perly.y"
+#line 150 "perly.y" /* yacc.c:1646  */
     {
                          PL_pad_reset_pending = TRUE;
-                         PL_eval_root = (ps[(3) - (3)].val.opval);
+                         PL_eval_root = (ps[0].val.opval);
                          (yyval.ival) = 0;
                          yyunlex();
                          parser->yychar = YYEOF;
-                       ;}
+                       }
+
     break;
 
   case 10:
-#line 158 "perly.y"
+#line 158 "perly.y" /* yacc.c:1646  */
     {
                          parser->expect = XSTATE;
-                       ;}
+                       }
+
     break;
 
   case 11:
-#line 162 "perly.y"
+#line 162 "perly.y" /* yacc.c:1646  */
     {
                          PL_pad_reset_pending = TRUE;
-                         PL_eval_root = (ps[(3) - (3)].val.opval);
+                         PL_eval_root = (ps[0].val.opval);
                          (yyval.ival) = 0;
                          yyunlex();
                          parser->yychar = YYEOF;
-                       ;}
+                       }
+
     break;
 
   case 12:
-#line 170 "perly.y"
+#line 170 "perly.y" /* yacc.c:1646  */
     {
                          parser->expect = XSTATE;
-                       ;}
+                       }
+
     break;
 
   case 13:
-#line 174 "perly.y"
+#line 174 "perly.y" /* yacc.c:1646  */
     {
-                         PL_eval_root = (ps[(3) - (3)].val.opval);
+                         PL_eval_root = (ps[0].val.opval);
                          (yyval.ival) = 0;
-                       ;}
+                       }
+
     break;
 
   case 14:
-#line 182 "perly.y"
-    { if (parser->copline > (line_t)(ps[(1) - (4)].val.ival))
-                             parser->copline = (line_t)(ps[(1) - (4)].val.ival);
-                         (yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
-                       ;}
+#line 182 "perly.y" /* yacc.c:1646  */
+    { if (parser->copline > (line_t)(ps[-3].val.ival))
+                             parser->copline = (line_t)(ps[-3].val.ival);
+                         (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));
+                       }
+
     break;
 
   case 15:
-#line 190 "perly.y"
-    { if (parser->copline > (line_t)(ps[(1) - (7)].val.ival))
-                             parser->copline = (line_t)(ps[(1) - (7)].val.ival);
-                         (yyval.opval) = block_end((ps[(2) - (7)].val.ival), (ps[(5) - (7)].val.opval));
-                       ;}
+#line 190 "perly.y" /* yacc.c:1646  */
+    { if (parser->copline > (line_t)(ps[-6].val.ival))
+                             parser->copline = (line_t)(ps[-6].val.ival);
+                         (yyval.opval) = block_end((ps[-5].val.ival), (ps[-2].val.opval));
+                       }
+
     break;
 
   case 16:
-#line 197 "perly.y"
+#line 197 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = block_start(TRUE);
-                         parser->parsed_sub = 0; ;}
+                         parser->parsed_sub = 0; }
+
     break;
 
   case 17:
-#line 202 "perly.y"
-    { if (parser->copline > (line_t)(ps[(1) - (4)].val.ival))
-                             parser->copline = (line_t)(ps[(1) - (4)].val.ival);
-                         (yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
-                       ;}
+#line 202 "perly.y" /* yacc.c:1646  */
+    { if (parser->copline > (line_t)(ps[-3].val.ival))
+                             parser->copline = (line_t)(ps[-3].val.ival);
+                         (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));
+                       }
+
     break;
 
   case 18:
-#line 209 "perly.y"
+#line 209 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = block_start(FALSE);
-                         parser->parsed_sub = 0; ;}
+                         parser->parsed_sub = 0; }
+
     break;
 
   case 19:
-#line 215 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 215 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 20:
-#line 217 "perly.y"
-    {   (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval));
+#line 217 "perly.y" /* yacc.c:1646  */
+    {   (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
                            PL_pad_reset_pending = TRUE;
-                           if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval))
+                           if ((ps[-1].val.opval) && (ps[0].val.opval))
                                PL_hints |= HINT_BLOCK_SCOPE;
-                       ;}
+                       }
+
     break;
 
   case 21:
-#line 226 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 226 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 22:
-#line 228 "perly.y"
-    {   (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval));
+#line 228 "perly.y" /* yacc.c:1646  */
+    {   (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
                            PL_pad_reset_pending = TRUE;
-                           if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval))
+                           if ((ps[-1].val.opval) && (ps[0].val.opval))
                                PL_hints |= HINT_BLOCK_SCOPE;
-                       ;}
+                       }
+
     break;
 
   case 23:
-#line 237 "perly.y"
+#line 237 "perly.y" /* yacc.c:1646  */
     {
-                         (yyval.opval) = (ps[(1) - (1)].val.opval) ? newSTATEOP(0, NULL, (ps[(1) - (1)].val.opval)) : NULL;
-                       ;}
+                         (yyval.opval) = (ps[0].val.opval) ? newSTATEOP(0, NULL, (ps[0].val.opval)) : NULL;
+                       }
+
     break;
 
   case 24:
-#line 241 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 241 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 25:
-#line 245 "perly.y"
+#line 245 "perly.y" /* yacc.c:1646  */
     {
-                         (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[(1) - (2)].val.pval)[strlen((ps[(1) - (2)].val.pval))+1], (ps[(1) - (2)].val.pval), (ps[(2) - (2)].val.opval));
-                       ;}
+                         (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[-1].val.pval)[strlen((ps[-1].val.pval))+1], (ps[-1].val.pval), (ps[0].val.opval));
+                       }
+
     break;
 
   case 26:
-#line 249 "perly.y"
+#line 249 "perly.y" /* yacc.c:1646  */
     {
-                         (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[(1) - (2)].val.pval)[strlen((ps[(1) - (2)].val.pval))+1], (ps[(1) - (2)].val.pval), (ps[(2) - (2)].val.opval));
-                       ;}
+                         (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[-1].val.pval)[strlen((ps[-1].val.pval))+1], (ps[-1].val.pval), (ps[0].val.opval));
+                       }
+
     break;
 
   case 27:
-#line 256 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 256 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 28:
-#line 258 "perly.y"
+#line 258 "perly.y" /* yacc.c:1646  */
     {
                          CV *fmtcv = PL_compcv;
-                         newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));
+                         newFORM((ps[-2].val.ival), (ps[-1].val.opval), (ps[0].val.opval));
                          (yyval.opval) = (OP*)NULL;
                          if (CvOUTSIDE(fmtcv) && !CvEVAL(CvOUTSIDE(fmtcv))) {
                              pad_add_weakref(fmtcv);
                          }
                          parser->parsed_sub = 1;
-                       ;}
+                       }
+
     break;
 
   case 29:
-#line 268 "perly.y"
+#line 268 "perly.y" /* yacc.c:1646  */
     {
-                         if ((ps[(2) - (3)].val.opval)->op_type == OP_CONST) {
+                         if ((ps[-1].val.opval)->op_type == OP_CONST) {
                            const char *const name =
-                               SvPV_nolen_const(((SVOP*)(ps[(2) - (3)].val.opval))->op_sv);
+                               SvPV_nolen_const(((SVOP*)(ps[-1].val.opval))->op_sv);
                            if (strEQ(name, "BEGIN") || strEQ(name, "END")
                              || strEQ(name, "INIT") || strEQ(name, "CHECK")
                              || strEQ(name, "UNITCHECK"))
@@ -230,33 +257,35 @@ case 2:
                           || CvCLONE(CvOUTSIDE(PL_compcv))
                           || !PadnameIsSTATE(PadlistNAMESARRAY(CvPADLIST(
                                                CvOUTSIDE(PL_compcv)
-                                            ))[(ps[(2) - (3)].val.opval)->op_targ]))
+                                            ))[(ps[-1].val.opval)->op_targ]))
                              CvCLONE_on(PL_compcv);
                          parser->in_my = 0;
                          parser->in_my_stash = NULL;
-                       ;}
+                       }
+
     break;
 
   case 30:
-#line 290 "perly.y"
+#line 290 "perly.y" /* yacc.c:1646  */
     {
                          SvREFCNT_inc_simple_void(PL_compcv);
-                         (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))
+                         (ps[-5].val.opval)->op_type == OP_CONST
+                             ? newATTRSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
+                             : newMYSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
                          ;
                          (yyval.opval) = (OP*)NULL;
                          intro_my();
                          parser->parsed_sub = 1;
-                       ;}
+                       }
+
     break;
 
   case 31:
-#line 301 "perly.y"
+#line 301 "perly.y" /* yacc.c:1646  */
     {
-                         if ((ps[(2) - (3)].val.opval)->op_type == OP_CONST) {
+                         if ((ps[-1].val.opval)->op_type == OP_CONST) {
                            const char *const name =
-                               SvPV_nolen_const(((SVOP*)(ps[(2) - (3)].val.opval))->op_sv);
+                               SvPV_nolen_const(((SVOP*)(ps[-1].val.opval))->op_sv);
                            if (strEQ(name, "BEGIN") || strEQ(name, "END")
                              || strEQ(name, "INIT") || strEQ(name, "CHECK")
                              || strEQ(name, "UNITCHECK"))
@@ -269,130 +298,144 @@ case 2:
                           || CvCLONE(CvOUTSIDE(PL_compcv))
                           || !PadnameIsSTATE(PadlistNAMESARRAY(CvPADLIST(
                                                CvOUTSIDE(PL_compcv)
-                                            ))[(ps[(2) - (3)].val.opval)->op_targ]))
+                                            ))[(ps[-1].val.opval)->op_targ]))
                              CvCLONE_on(PL_compcv);
                          parser->in_my = 0;
                          parser->in_my_stash = NULL;
-                       ;}
+                       }
+
     break;
 
   case 32:
-#line 323 "perly.y"
+#line 323 "perly.y" /* yacc.c:1646  */
     {
                          OP *body;
-                         if (parser->copline > (line_t)(ps[(8) - (10)].val.ival))
-                             parser->copline = (line_t)(ps[(8) - (10)].val.ival);
-                         body = block_end((ps[(5) - (10)].val.ival),
-                               op_append_list(OP_LINESEQ, (ps[(6) - (10)].val.opval), (ps[(9) - (10)].val.opval)));
+                         if (parser->copline > (line_t)(ps[-2].val.ival))
+                             parser->copline = (line_t)(ps[-2].val.ival);
+                         body = block_end((ps[-5].val.ival),
+                               op_append_list(OP_LINESEQ, (ps[-4].val.opval), (ps[-1].val.opval)));
 
                          SvREFCNT_inc_simple_void(PL_compcv);
-                         (ps[(2) - (10)].val.opval)->op_type == OP_CONST
-                             ? newATTRSUB((ps[(3) - (10)].val.ival), (ps[(2) - (10)].val.opval), NULL, (ps[(7) - (10)].val.opval), body)
-                             : newMYSUB((ps[(3) - (10)].val.ival), (ps[(2) - (10)].val.opval), NULL, (ps[(7) - (10)].val.opval), body)
+                         (ps[-8].val.opval)->op_type == OP_CONST
+                             ? newATTRSUB((ps[-7].val.ival), (ps[-8].val.opval), NULL, (ps[-3].val.opval), body)
+                             : newMYSUB((ps[-7].val.ival), (ps[-8].val.opval), NULL, (ps[-3].val.opval), body)
                          ;
                          (yyval.opval) = (OP*)NULL;
                          intro_my();
                          parser->parsed_sub = 1;
-                       ;}
+                       }
+
     break;
 
   case 33:
-#line 340 "perly.y"
+#line 340 "perly.y" /* yacc.c:1646  */
     {
-                         package((ps[(3) - (4)].val.opval));
-                         if ((ps[(2) - (4)].val.opval))
-                             package_version((ps[(2) - (4)].val.opval));
+                         package((ps[-1].val.opval));
+                         if ((ps[-2].val.opval))
+                             package_version((ps[-2].val.opval));
                          (yyval.opval) = (OP*)NULL;
-                       ;}
+                       }
+
     break;
 
   case 34:
-#line 347 "perly.y"
-    { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ ;}
+#line 347 "perly.y" /* yacc.c:1646  */
+    { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
+
     break;
 
   case 35:
-#line 349 "perly.y"
+#line 349 "perly.y" /* yacc.c:1646  */
     {
                          SvREFCNT_inc_simple_void(PL_compcv);
-                         utilize((ps[(1) - (7)].val.ival), (ps[(2) - (7)].val.ival), (ps[(4) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval));
+                         utilize((ps[-6].val.ival), (ps[-5].val.ival), (ps[-3].val.opval), (ps[-2].val.opval), (ps[-1].val.opval));
                          parser->parsed_sub = 1;
                          (yyval.opval) = (OP*)NULL;
-                       ;}
+                       }
+
     break;
 
   case 36:
-#line 356 "perly.y"
+#line 356 "perly.y" /* yacc.c:1646  */
     {
-                         (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)));
-                         parser->copline = (line_t)(ps[(1) - (7)].val.ival);
-                       ;}
+                         (yyval.opval) = block_end((ps[-4].val.ival),
+                             newCONDOP(0, (ps[-3].val.opval), op_scope((ps[-1].val.opval)), (ps[0].val.opval)));
+                         parser->copline = (line_t)(ps[-6].val.ival);
+                       }
+
     break;
 
   case 37:
-#line 362 "perly.y"
+#line 362 "perly.y" /* yacc.c:1646  */
     {
-                         (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
-                              newCONDOP(0, (ps[(4) - (7)].val.opval), (ps[(7) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval))));
-                         parser->copline = (line_t)(ps[(1) - (7)].val.ival);
-                       ;}
+                         (yyval.opval) = block_end((ps[-4].val.ival),
+                              newCONDOP(0, (ps[-3].val.opval), (ps[0].val.opval), op_scope((ps[-1].val.opval))));
+                         parser->copline = (line_t)(ps[-6].val.ival);
+                       }
+
     break;
 
   case 38:
-#line 368 "perly.y"
+#line 368 "perly.y" /* yacc.c:1646  */
     {
-                         (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newGIVENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)), 0));
-                         parser->copline = (line_t)(ps[(1) - (6)].val.ival);
-                       ;}
+                         (yyval.opval) = block_end((ps[-3].val.ival), newGIVENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)), 0));
+                         parser->copline = (line_t)(ps[-5].val.ival);
+                       }
+
     break;
 
   case 39:
-#line 373 "perly.y"
-    { (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newWHENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)))); ;}
+#line 373 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); }
+
     break;
 
   case 40:
-#line 375 "perly.y"
-    { (yyval.opval) = newWHENOP(0, op_scope((ps[(2) - (2)].val.opval))); ;}
+#line 375 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); }
+
     break;
 
   case 41:
-#line 377 "perly.y"
+#line 377 "perly.y" /* yacc.c:1646  */
     {
-                         (yyval.opval) = block_end((ps[(3) - (8)].val.ival),
+                         (yyval.opval) = block_end((ps[-5].val.ival),
                                  newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
-                                     (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
-                         parser->copline = (line_t)(ps[(1) - (8)].val.ival);
-                       ;}
+                                     (ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));
+                         parser->copline = (line_t)(ps[-7].val.ival);
+                       }
+
     break;
 
   case 42:
-#line 384 "perly.y"
+#line 384 "perly.y" /* yacc.c:1646  */
     {
-                         (yyval.opval) = block_end((ps[(3) - (8)].val.ival),
+                         (yyval.opval) = block_end((ps[-5].val.ival),
                                  newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
-                                     (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
-                         parser->copline = (line_t)(ps[(1) - (8)].val.ival);
-                       ;}
+                                     (ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));
+                         parser->copline = (line_t)(ps[-7].val.ival);
+                       }
+
     break;
 
   case 43:
-#line 391 "perly.y"
-    { parser->expect = XTERM; ;}
+#line 391 "perly.y" /* yacc.c:1646  */
+    { parser->expect = XTERM; }
+
     break;
 
   case 44:
-#line 393 "perly.y"
-    { parser->expect = XTERM; ;}
+#line 393 "perly.y" /* yacc.c:1646  */
+    { parser->expect = XTERM; }
+
     break;
 
   case 45:
-#line 396 "perly.y"
+#line 396 "perly.y" /* yacc.c:1646  */
     {
-                         OP *initop = (ps[(4) - (13)].val.opval);
+                         OP *initop = (ps[-9].val.opval);
                          OP *forop = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
-                                     scalar((ps[(7) - (13)].val.opval)), (ps[(13) - (13)].val.opval), (ps[(11) - (13)].val.opval), (ps[(10) - (13)].val.ival));
+                                     scalar((ps[-6].val.opval)), (ps[0].val.opval), (ps[-2].val.opval), (ps[-3].val.ival));
                          if (initop) {
                              forop = op_prepend_elem(OP_LINESEQ, initop,
                                  op_append_elem(OP_LINESEQ,
@@ -400,310 +443,355 @@ case 2:
                                      forop));
                          }
                          PL_hints |= HINT_BLOCK_SCOPE;
-                         (yyval.opval) = block_end((ps[(3) - (13)].val.ival), forop);
-                         parser->copline = (line_t)(ps[(1) - (13)].val.ival);
-                       ;}
+                         (yyval.opval) = block_end((ps[-10].val.ival), forop);
+                         parser->copline = (line_t)(ps[-12].val.ival);
+                       }
+
     break;
 
   case 46:
-#line 411 "perly.y"
+#line 411 "perly.y" /* yacc.c:1646  */
     {
-                         (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)));
-                         parser->copline = (line_t)(ps[(1) - (9)].val.ival);
-                       ;}
+                         (yyval.opval) = block_end((ps[-6].val.ival), newFOROP(0, (ps[-5].val.opval), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
+                         parser->copline = (line_t)(ps[-8].val.ival);
+                       }
+
     break;
 
   case 47:
-#line 416 "perly.y"
+#line 416 "perly.y" /* yacc.c:1646  */
     {
-                         (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)));
-                         parser->copline = (line_t)(ps[(1) - (8)].val.ival);
-                       ;}
+                         (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0,
+                                     op_lvalue((ps[-6].val.opval), OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
+                         parser->copline = (line_t)(ps[-7].val.ival);
+                       }
+
     break;
 
   case 48:
-#line 422 "perly.y"
-    { parser->in_my = 0; (yyval.opval) = my((ps[(5) - (5)].val.opval)); ;}
+#line 422 "perly.y" /* yacc.c:1646  */
+    { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
+
     break;
 
   case 49:
-#line 424 "perly.y"
+#line 424 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = block_end(
-                               (ps[(4) - (11)].val.ival),
+                               (ps[-7].val.ival),
                                newFOROP(0,
                                         op_lvalue(
                                            newUNOP(OP_REFGEN, 0,
-                                                   (ps[(6) - (11)].val.opval)),
+                                                   (ps[-5].val.opval)),
                                            OP_ENTERLOOP),
-                                        (ps[(8) - (11)].val.opval), (ps[(10) - (11)].val.opval), (ps[(11) - (11)].val.opval))
+                                        (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
                          );
-                         parser->copline = (line_t)(ps[(1) - (11)].val.ival);
-                       ;}
+                         parser->copline = (line_t)(ps[-9].val.ival);
+                       }
+
     break;
 
   case 50:
-#line 437 "perly.y"
+#line 437 "perly.y" /* yacc.c:1646  */
     {
-                         (yyval.opval) = block_end((ps[(5) - (9)].val.ival), newFOROP(
+                         (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(
                                0, op_lvalue(newUNOP(OP_REFGEN, 0,
-                                                    (ps[(3) - (9)].val.opval)),
-                                            OP_ENTERLOOP), (ps[(6) - (9)].val.opval), (ps[(8) - (9)].val.opval), (ps[(9) - (9)].val.opval)));
-                         parser->copline = (line_t)(ps[(1) - (9)].val.ival);
-                       ;}
+                                                    (ps[-6].val.opval)),
+                                            OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
+                         parser->copline = (line_t)(ps[-8].val.ival);
+                       }
+
     break;
 
   case 51:
-#line 445 "perly.y"
+#line 445 "perly.y" /* yacc.c:1646  */
     {
-                         (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)));
-                         parser->copline = (line_t)(ps[(1) - (7)].val.ival);
-                       ;}
+                         (yyval.opval) = block_end((ps[-4].val.ival),
+                                 newFOROP(0, (OP*)NULL, (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
+                         parser->copline = (line_t)(ps[-6].val.ival);
+                       }
+
     break;
 
   case 52:
-#line 451 "perly.y"
+#line 451 "perly.y" /* yacc.c:1646  */
     {
                          /* 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);
-                       ;}
+                                 (OP*)NULL, (ps[-1].val.opval), (ps[0].val.opval), 0);
+                       }
+
     break;
 
   case 53:
-#line 457 "perly.y"
+#line 457 "perly.y" /* yacc.c:1646  */
     {
-                         package((ps[(3) - (5)].val.opval));
-                         if ((ps[(2) - (5)].val.opval)) {
-                             package_version((ps[(2) - (5)].val.opval));
+                         package((ps[-2].val.opval));
+                         if ((ps[-3].val.opval)) {
+                             package_version((ps[-3].val.opval));
                          }
-                       ;}
+                       }
+
     break;
 
   case 54:
-#line 464 "perly.y"
+#line 464 "perly.y" /* yacc.c:1646  */
     {
                          /* 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);
-                         if (parser->copline > (line_t)(ps[(4) - (8)].val.ival))
-                             parser->copline = (line_t)(ps[(4) - (8)].val.ival);
-                       ;}
+                                 (OP*)NULL, block_end((ps[-3].val.ival), (ps[-1].val.opval)), (OP*)NULL, 0);
+                         if (parser->copline > (line_t)(ps[-4].val.ival))
+                             parser->copline = (line_t)(ps[-4].val.ival);
+                       }
+
     break;
 
   case 55:
-#line 472 "perly.y"
+#line 472 "perly.y" /* yacc.c:1646  */
     {
-                         (yyval.opval) = (ps[(1) - (2)].val.opval);
-                       ;}
+                         (yyval.opval) = (ps[-1].val.opval);
+                       }
+
     break;
 
   case 56:
-#line 476 "perly.y"
+#line 476 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = (OP*)NULL;
                          parser->copline = NOLINE;
-                       ;}
+                       }
+
     break;
 
   case 57:
-#line 484 "perly.y"
+#line 484 "perly.y" /* yacc.c:1646  */
     { OP *list;
-                         if ((ps[(2) - (2)].val.opval)) {
-                             OP *term = (ps[(2) - (2)].val.opval);
-                             list = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), term);
+                         if ((ps[0].val.opval)) {
+                             OP *term = (ps[0].val.opval);
+                             list = op_append_elem(OP_LIST, (ps[-1].val.opval), term);
                          }
                          else {
-                             list = (ps[(1) - (2)].val.opval);
+                             list = (ps[-1].val.opval);
                          }
                          if (parser->copline == NOLINE)
                               parser->copline = CopLINE(PL_curcop)-1;
                          else parser->copline--;
                          (yyval.opval) = newSTATEOP(0, NULL,
                                          op_convert_list(OP_FORMLINE, 0, list));
-                       ;}
+                       }
+
     break;
 
   case 58:
-#line 501 "perly.y"
-    { (yyval.opval) = NULL; ;}
+#line 501 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = NULL; }
+
     break;
 
   case 59:
-#line 503 "perly.y"
-    { (yyval.opval) = op_unscope((ps[(2) - (3)].val.opval)); ;}
+#line 503 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_unscope((ps[-1].val.opval)); }
+
     break;
 
   case 60:
-#line 508 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 508 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 61:
-#line 510 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 510 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 62:
-#line 512 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); ;}
+#line 512 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
+
     break;
 
   case 63:
-#line 514 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); ;}
+#line 514 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
+
     break;
 
   case 64:
-#line 516 "perly.y"
-    { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[(3) - (3)].val.opval)), (ps[(1) - (3)].val.opval)); ;}
+#line 516 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); }
+
     break;
 
   case 65:
-#line 518 "perly.y"
-    { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); ;}
+#line 518 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); }
+
     break;
 
   case 66:
-#line 520 "perly.y"
-    { (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval), (OP*)NULL);
-                         parser->copline = (line_t)(ps[(2) - (3)].val.ival); ;}
+#line 520 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[0].val.opval), (ps[-2].val.opval), (OP*)NULL);
+                         parser->copline = (line_t)(ps[-1].val.ival); }
+
     break;
 
   case 67:
-#line 523 "perly.y"
-    { (yyval.opval) = newWHENOP((ps[(3) - (3)].val.opval), op_scope((ps[(1) - (3)].val.opval))); ;}
+#line 523 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); }
+
     break;
 
   case 68:
-#line 528 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 528 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 69:
-#line 530 "perly.y"
+#line 530 "perly.y" /* yacc.c:1646  */
     {
-                         ((ps[(2) - (2)].val.opval))->op_flags |= OPf_PARENS;
-                         (yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
-                       ;}
+                         ((ps[0].val.opval))->op_flags |= OPf_PARENS;
+                         (yyval.opval) = op_scope((ps[0].val.opval));
+                       }
+
     break;
 
   case 70:
-#line 535 "perly.y"
-    { parser->copline = (line_t)(ps[(1) - (6)].val.ival);
+#line 535 "perly.y" /* yacc.c:1646  */
+    { parser->copline = (line_t)(ps[-5].val.ival);
                            (yyval.opval) = newCONDOP(0,
-                               newSTATEOP(OPf_SPECIAL,NULL,(ps[(3) - (6)].val.opval)),
-                               op_scope((ps[(5) - (6)].val.opval)), (ps[(6) - (6)].val.opval));
+                               newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)),
+                               op_scope((ps[-1].val.opval)), (ps[0].val.opval));
                          PL_hints |= HINT_BLOCK_SCOPE;
-                       ;}
+                       }
+
     break;
 
   case 71:
-#line 545 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 545 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 72:
-#line 547 "perly.y"
-    { (yyval.opval) = op_scope((ps[(2) - (2)].val.opval)); ;}
+#line 547 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_scope((ps[0].val.opval)); }
+
     break;
 
   case 73:
-#line 552 "perly.y"
+#line 552 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = (PL_min_intro_pending &&
                            PL_max_intro_pending >=  PL_min_intro_pending);
-                         intro_my(); ;}
+                         intro_my(); }
+
     break;
 
   case 74:
-#line 558 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 558 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 76:
-#line 564 "perly.y"
+#line 564 "perly.y" /* yacc.c:1646  */
     { YYSTYPE tmplval;
                          (void)scan_num("1", &tmplval);
-                         (yyval.opval) = tmplval.opval; ;}
+                         (yyval.opval) = tmplval.opval; }
+
     break;
 
   case 78:
-#line 572 "perly.y"
-    { (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); ;}
+#line 572 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = invert(scalar((ps[0].val.opval))); }
+
     break;
 
   case 79:
-#line 577 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
+#line 577 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); intro_my(); }
+
     break;
 
   case 80:
-#line 581 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); ;}
+#line 581 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); intro_my(); }
+
     break;
 
   case 81:
-#line 584 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 584 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 82:
-#line 585 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 585 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 83:
-#line 589 "perly.y"
+#line 589 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = start_subparse(FALSE, 0);
-                           SAVEFREESV(PL_compcv); ;}
+                           SAVEFREESV(PL_compcv); }
+
     break;
 
   case 84:
-#line 595 "perly.y"
+#line 595 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = start_subparse(FALSE, CVf_ANON);
-                           SAVEFREESV(PL_compcv); ;}
+                           SAVEFREESV(PL_compcv); }
+
     break;
 
   case 85:
-#line 600 "perly.y"
+#line 600 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = start_subparse(TRUE, 0);
-                           SAVEFREESV(PL_compcv); ;}
+                           SAVEFREESV(PL_compcv); }
+
     break;
 
   case 88:
-#line 611 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 611 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 90:
-#line 617 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 617 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 91:
-#line 619 "perly.y"
-    { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}
+#line 619 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 92:
-#line 621 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 621 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 93:
-#line 626 "perly.y"
-    { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}
+#line 626 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 94:
-#line 628 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 628 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 95:
-#line 633 "perly.y"
+#line 633 "perly.y" /* yacc.c:1646  */
     {
                          /* We shouldn't get here otherwise */
                          assert(FEATURE_SIGNATURES_IS_ENABLED);
@@ -712,319 +800,371 @@ case 2:
                                packWARN(WARN_EXPERIMENTAL__SIGNATURES),
                                "The signatures feature is experimental");
                          (yyval.opval) = parse_subsignature();
-                       ;}
+                       }
+
     break;
 
   case 96:
-#line 643 "perly.y"
+#line 643 "perly.y" /* yacc.c:1646  */
     {
-                         (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(2) - (3)].val.opval),
+                         (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval),
                                newSTATEOP(0, NULL, sawparens(newNULLLIST())));
                          parser->expect = XATTRBLOCK;
-                       ;}
+                       }
+
     break;
 
   case 98:
-#line 652 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 652 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 99:
-#line 657 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+#line 657 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 100:
-#line 659 "perly.y"
-    { (yyval.opval) = newLOGOP((ps[(2) - (3)].val.ival), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+#line 659 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 101:
-#line 661 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+#line 661 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 103:
-#line 667 "perly.y"
-    { (yyval.opval) = (ps[(1) - (2)].val.opval); ;}
+#line 667 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[-1].val.opval); }
+
     break;
 
   case 104:
-#line 669 "perly.y"
+#line 669 "perly.y" /* yacc.c:1646  */
     {
-                         OP* term = (ps[(3) - (3)].val.opval);
-                         (yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (3)].val.opval), term);
-                       ;}
+                         OP* term = (ps[0].val.opval);
+                         (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term);
+                       }
+
     break;
 
   case 106:
-#line 678 "perly.y"
-    { (yyval.opval) = op_convert_list((ps[(1) - (3)].val.ival), OPf_STACKED,
-                               op_prepend_elem(OP_LIST, newGVREF((ps[(1) - (3)].val.ival),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );
-                       ;}
+#line 678 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED,
+                               op_prepend_elem(OP_LIST, newGVREF((ps[-2].val.ival),(ps[-1].val.opval)), (ps[0].val.opval)) );
+                       }
+
     break;
 
   case 107:
-#line 682 "perly.y"
-    { (yyval.opval) = op_convert_list((ps[(1) - (5)].val.ival), OPf_STACKED,
-                               op_prepend_elem(OP_LIST, newGVREF((ps[(1) - (5)].val.ival),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );
-                       ;}
+#line 682 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED,
+                               op_prepend_elem(OP_LIST, newGVREF((ps[-4].val.ival),(ps[-2].val.opval)), (ps[-1].val.opval)) );
+                       }
+
     break;
 
   case 108:
-#line 686 "perly.y"
+#line 686 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(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)),
-                                   newMETHOP(OP_METHOD, 0, (ps[(3) - (6)].val.opval))));
-                       ;}
+                                   op_prepend_elem(OP_LIST, scalar((ps[-5].val.opval)), (ps[-1].val.opval)),
+                                   newMETHOP(OP_METHOD, 0, (ps[-3].val.opval))));
+                       }
+
     break;
 
   case 109:
-#line 692 "perly.y"
+#line 692 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
-                               op_append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)),
-                                   newMETHOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval))));
-                       ;}
+                               op_append_elem(OP_LIST, scalar((ps[-2].val.opval)),
+                                   newMETHOP(OP_METHOD, 0, (ps[0].val.opval))));
+                       }
+
     break;
 
   case 110:
-#line 697 "perly.y"
+#line 697 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST,
-                                   op_prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)),
-                                   newMETHOP(OP_METHOD, 0, (ps[(1) - (3)].val.opval))));
-                       ;}
+                                   op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)),
+                                   newMETHOP(OP_METHOD, 0, (ps[-2].val.opval))));
+                       }
+
     break;
 
   case 111:
-#line 703 "perly.y"
+#line 703 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
                                op_append_elem(OP_LIST,
-                                   op_prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)),
-                                   newMETHOP(OP_METHOD, 0, (ps[(1) - (5)].val.opval))));
-                       ;}
+                                   op_prepend_elem(OP_LIST, (ps[-3].val.opval), (ps[-1].val.opval)),
+                                   newMETHOP(OP_METHOD, 0, (ps[-4].val.opval))));
+                       }
+
     break;
 
   case 112:
-#line 709 "perly.y"
-    { (yyval.opval) = op_convert_list((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); ;}
+#line 709 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); }
+
     break;
 
   case 113:
-#line 711 "perly.y"
-    { (yyval.opval) = op_convert_list((ps[(1) - (4)].val.ival), 0, (ps[(3) - (4)].val.opval)); ;}
+#line 711 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
+
     break;
 
   case 114:
-#line 713 "perly.y"
+#line 713 "perly.y" /* yacc.c:1646  */
     { 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[-1].val.ival), 0, (OP*)NULL, (ps[0].val.opval)); }
+
     break;
 
   case 115:
-#line 716 "perly.y"
+#line 716 "perly.y" /* yacc.c:1646  */
     { (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)));
-                       ;}
+                                  op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), (ps[-4].val.opval)));
+                       }
+
     break;
 
   case 118:
-#line 731 "perly.y"
-    { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval))); ;}
+#line 731 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); }
+
     break;
 
   case 119:
-#line 733 "perly.y"
-    { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval)));
-                       ;}
+#line 733 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval)));
+                       }
+
     break;
 
   case 120:
-#line 736 "perly.y"
+#line 736 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_AELEM, 0,
-                                       ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV),
-                                       scalar((ps[(4) - (5)].val.opval)));
-                       ;}
+                                       ref(newAVREF((ps[-4].val.opval)),OP_RV2AV),
+                                       scalar((ps[-1].val.opval)));
+                       }
+
     break;
 
   case 121:
-#line 741 "perly.y"
+#line 741 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_AELEM, 0,
-                                       ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV),
-                                       scalar((ps[(3) - (4)].val.opval)));
-                       ;}
+                                       ref(newAVREF((ps[-3].val.opval)),OP_RV2AV),
+                                       scalar((ps[-1].val.opval)));
+                       }
+
     break;
 
   case 122:
-#line 746 "perly.y"
-    { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval)));
-                       ;}
+#line 746 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval)));
+                       }
+
     break;
 
   case 123:
-#line 749 "perly.y"
+#line 749 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_HELEM, 0,
-                                       ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV),
-                                       jmaybe((ps[(4) - (6)].val.opval))); ;}
+                                       ref(newHVREF((ps[-5].val.opval)),OP_RV2HV),
+                                       jmaybe((ps[-2].val.opval))); }
+
     break;
 
   case 124:
-#line 753 "perly.y"
+#line 753 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_HELEM, 0,
-                                       ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV),
-                                       jmaybe((ps[(3) - (5)].val.opval))); ;}
+                                       ref(newHVREF((ps[-4].val.opval)),OP_RV2HV),
+                                       jmaybe((ps[-2].val.opval))); }
+
     break;
 
   case 125:
-#line 757 "perly.y"
+#line 757 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
-                                  newCVREF(0, scalar((ps[(1) - (4)].val.opval)))); ;}
+                                  newCVREF(0, scalar((ps[-3].val.opval)))); }
+
     break;
 
   case 126:
-#line 760 "perly.y"
+#line 760 "perly.y" /* yacc.c:1646  */
     { (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))))); ;}
+                                  op_append_elem(OP_LIST, (ps[-1].val.opval),
+                                      newCVREF(0, scalar((ps[-4].val.opval))))); }
+
     break;
 
   case 127:
-#line 765 "perly.y"
+#line 765 "perly.y" /* yacc.c:1646  */
     { (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))))); ;}
+                                  op_append_elem(OP_LIST, (ps[-1].val.opval),
+                                              newCVREF(0, scalar((ps[-3].val.opval))))); }
+
     break;
 
   case 128:
-#line 769 "perly.y"
+#line 769 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
-                                  newCVREF(0, scalar((ps[(1) - (3)].val.opval)))); ;}
+                                  newCVREF(0, scalar((ps[-2].val.opval)))); }
+
     break;
 
   case 129:
-#line 772 "perly.y"
-    { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval)); ;}
+#line 772 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); }
+
     break;
 
   case 130:
-#line 774 "perly.y"
-    { (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - (4)].val.opval)); ;}
+#line 774 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); }
+
     break;
 
   case 131:
-#line 776 "perly.y"
-    { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL); ;}
+#line 776 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (OP*)NULL); }
+
     break;
 
   case 132:
-#line 781 "perly.y"
-    { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), (ps[(2) - (3)].val.ival), (ps[(3) - (3)].val.opval)); ;}
+#line 781 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); }
+
     break;
 
   case 133:
-#line 783 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+#line 783 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 134:
-#line 785 "perly.y"
-    {   if ((ps[(2) - (3)].val.ival) != OP_REPEAT)
-                               scalar((ps[(1) - (3)].val.opval));
-                           (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));
-                       ;}
+#line 785 "perly.y" /* yacc.c:1646  */
+    {   if ((ps[-1].val.ival) != OP_REPEAT)
+                               scalar((ps[-2].val.opval));
+                           (yyval.opval) = newBINOP((ps[-1].val.ival), 0, (ps[-2].val.opval), scalar((ps[0].val.opval)));
+                       }
+
     break;
 
   case 135:
-#line 790 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+#line 790 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 136:
-#line 792 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+#line 792 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 137:
-#line 794 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+#line 794 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 138:
-#line 796 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+#line 796 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 139:
-#line 798 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+#line 798 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 140:
-#line 800 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+#line 800 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 141:
-#line 802 "perly.y"
-    { (yyval.opval) = newRANGE((ps[(2) - (3)].val.ival), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); ;}
+#line 802 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 142:
-#line 804 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+#line 804 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 143:
-#line 806 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+#line 806 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 144:
-#line 808 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+#line 808 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 145:
-#line 810 "perly.y"
-    { (yyval.opval) = bind_match((ps[(2) - (3)].val.ival), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); ;}
+#line 810 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 146:
-#line 815 "perly.y"
-    { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval))); ;}
+#line 815 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); }
+
     break;
 
   case 147:
-#line 817 "perly.y"
-    { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}
+#line 817 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 148:
-#line 820 "perly.y"
-    { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); ;}
+#line 820 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
+
     break;
 
   case 149:
-#line 822 "perly.y"
-    { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, scalar((ps[(2) - (2)].val.opval))); ;}
+#line 822 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); }
+
     break;
 
   case 150:
-#line 824 "perly.y"
+#line 824 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_POSTINC, 0,
-                                       op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC)); ;}
+                                       op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); }
+
     break;
 
   case 151:
-#line 827 "perly.y"
+#line 827 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
-                                       op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));;}
+                                       op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));}
+
     break;
 
   case 152:
-#line 830 "perly.y"
+#line 830 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_JOIN, 0,
                                       op_append_elem(
                                        OP_LIST,
@@ -1032,513 +1172,610 @@ case 2:
                                            newSVOP(OP_CONST,0,
                                                    newSVpvs("\""))
                                        )),
-                                       (ps[(1) - (2)].val.opval)
+                                       (ps[-1].val.opval)
                                       ));
-                       ;}
+                       }
+
     break;
 
   case 153:
-#line 841 "perly.y"
+#line 841 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_PREINC, 0,
-                                       op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREINC)); ;}
+                                       op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); }
+
     break;
 
   case 154:
-#line 844 "perly.y"
+#line 844 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_PREDEC, 0,
-                                       op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC)); ;}
+                                       op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); }
+
     break;
 
   case 155:
-#line 851 "perly.y"
-    { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval)); ;}
+#line 851 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newANONLIST((ps[-1].val.opval)); }
+
     break;
 
   case 156:
-#line 853 "perly.y"
-    { (yyval.opval) = newANONLIST((OP*)NULL);;}
+#line 853 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newANONLIST((OP*)NULL);}
+
     break;
 
   case 157:
-#line 855 "perly.y"
-    { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval)); ;}
+#line 855 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newANONHASH((ps[-2].val.opval)); }
+
     break;
 
   case 158:
-#line 857 "perly.y"
-    { (yyval.opval) = newANONHASH((OP*)NULL); ;}
+#line 857 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newANONHASH((OP*)NULL); }
+
     break;
 
   case 159:
-#line 859 "perly.y"
+#line 859 "perly.y" /* yacc.c:1646  */
     { 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)); ;}
+                         (yyval.opval) = newANONATTRSUB((ps[-3].val.ival), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 160:
-#line 862 "perly.y"
+#line 862 "perly.y" /* yacc.c:1646  */
     {
                          OP *body;
-                         if (parser->copline > (line_t)(ps[(6) - (8)].val.ival))
-                             parser->copline = (line_t)(ps[(6) - (8)].val.ival);
-                         body = block_end((ps[(3) - (8)].val.ival),
-                               op_append_list(OP_LINESEQ, (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval)));
+                         if (parser->copline > (line_t)(ps[-2].val.ival))
+                             parser->copline = (line_t)(ps[-2].val.ival);
+                         body = block_end((ps[-5].val.ival),
+                               op_append_list(OP_LINESEQ, (ps[-4].val.opval), (ps[-1].val.opval)));
                          SvREFCNT_inc_simple_void(PL_compcv);
-                         (yyval.opval) = newANONATTRSUB((ps[(2) - (8)].val.ival), NULL, (ps[(5) - (8)].val.opval), body);
-                       ;}
+                         (yyval.opval) = newANONATTRSUB((ps[-6].val.ival), NULL, (ps[-3].val.opval), body);
+                       }
+
     break;
 
   case 161:
-#line 876 "perly.y"
-    { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), (ps[(1) - (2)].val.ival));;}
+#line 876 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));}
+
     break;
 
   case 162:
-#line 878 "perly.y"
-    { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - (2)].val.opval)));;}
+#line 878 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));}
+
     break;
 
   case 167:
-#line 886 "perly.y"
-    { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval)); ;}
+#line 886 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 168:
-#line 888 "perly.y"
-    { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[(2) - (2)].val.opval)); ;}
+#line 888 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); }
+
     break;
 
   case 169:
-#line 890 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 890 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_REFGEN, 0, localize((ps[0].val.opval),1)); }
+
     break;
 
   case 170:
-#line 892 "perly.y"
-    { (yyval.opval) = localize((ps[(2) - (2)].val.opval),0); ;}
+#line 892 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 171:
-#line 894 "perly.y"
-    { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); ;}
+#line 894 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = localize((ps[0].val.opval),0); }
+
     break;
 
   case 172:
-#line 896 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 896 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = sawparens((ps[-1].val.opval)); }
+
     break;
 
   case 173:
-#line 898 "perly.y"
-    { (yyval.opval) = sawparens(newNULLLIST()); ;}
+#line 898 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 174:
-#line 900 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 900 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = sawparens(newNULLLIST()); }
+
     break;
 
   case 175:
-#line 902 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 902 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 176:
-#line 904 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 904 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 177:
-#line 906 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 906 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 178:
-#line 908 "perly.y"
-    { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));;}
+#line 908 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 179:
-#line 910 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 910 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));}
+
     break;
 
   case 180:
-#line 912 "perly.y"
+#line 912 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
+    break;
+
+  case 181:
+#line 914 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_prepend_elem(OP_ASLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_ASLICE, 0,
-                                       list((ps[(3) - (4)].val.opval)),
-                                       ref((ps[(1) - (4)].val.opval), OP_ASLICE)));
-                         if ((yyval.opval) && (ps[(1) - (4)].val.opval))
+                                       list((ps[-1].val.opval)),
+                                       ref((ps[-3].val.opval), OP_ASLICE)));
+                         if ((yyval.opval) && (ps[-3].val.opval))
                              (yyval.opval)->op_private |=
-                                 (ps[(1) - (4)].val.opval)->op_private & OPpSLICEWARNING;
-                       ;}
+                                 (ps[-3].val.opval)->op_private & OPpSLICEWARNING;
+                       }
+
     break;
 
-  case 181:
-#line 922 "perly.y"
+  case 182:
+#line 924 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_prepend_elem(OP_KVASLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_KVASLICE, 0,
-                                       list((ps[(3) - (4)].val.opval)),
-                                       ref(oopsAV((ps[(1) - (4)].val.opval)), OP_KVASLICE)));
-                         if ((yyval.opval) && (ps[(1) - (4)].val.opval))
+                                       list((ps[-1].val.opval)),
+                                       ref(oopsAV((ps[-3].val.opval)), OP_KVASLICE)));
+                         if ((yyval.opval) && (ps[-3].val.opval))
                              (yyval.opval)->op_private |=
-                                 (ps[(1) - (4)].val.opval)->op_private & OPpSLICEWARNING;
-                       ;}
+                                 (ps[-3].val.opval)->op_private & OPpSLICEWARNING;
+                       }
+
     break;
 
-  case 182:
-#line 932 "perly.y"
+  case 183:
+#line 934 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_prepend_elem(OP_HSLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_HSLICE, 0,
-                                       list((ps[(3) - (5)].val.opval)),
-                                       ref(oopsHV((ps[(1) - (5)].val.opval)), OP_HSLICE)));
-                         if ((yyval.opval) && (ps[(1) - (5)].val.opval))
+                                       list((ps[-2].val.opval)),
+                                       ref(oopsHV((ps[-4].val.opval)), OP_HSLICE)));
+                         if ((yyval.opval) && (ps[-4].val.opval))
                              (yyval.opval)->op_private |=
-                                 (ps[(1) - (5)].val.opval)->op_private & OPpSLICEWARNING;
-                       ;}
+                                 (ps[-4].val.opval)->op_private & OPpSLICEWARNING;
+                       }
+
     break;
 
-  case 183:
-#line 942 "perly.y"
+  case 184:
+#line 944 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
                                newOP(OP_PUSHMARK, 0),
                                    newLISTOP(OP_KVHSLICE, 0,
-                                       list((ps[(3) - (5)].val.opval)),
-                                       ref((ps[(1) - (5)].val.opval), OP_KVHSLICE)));
-                         if ((yyval.opval) && (ps[(1) - (5)].val.opval))
+                                       list((ps[-2].val.opval)),
+                                       ref((ps[-4].val.opval), OP_KVHSLICE)));
+                         if ((yyval.opval) && (ps[-4].val.opval))
                              (yyval.opval)->op_private |=
-                                 (ps[(1) - (5)].val.opval)->op_private & OPpSLICEWARNING;
-                       ;}
-    break;
+                                 (ps[-4].val.opval)->op_private & OPpSLICEWARNING;
+                       }
 
-  case 184:
-#line 952 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
     break;
 
   case 185:
-#line 954 "perly.y"
-    { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); ;}
+#line 954 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 186:
-#line 956 "perly.y"
-    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval)));
-                       ;}
+#line 956 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); }
+
     break;
 
   case 187:
-#line 959 "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))));
-                       ;}
+#line 958 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval)));
+                       }
+
     break;
 
   case 188:
-#line 964 "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))));
-                       ;}
+#line 961 "perly.y" /* yacc.c:1646  */
+    {
+                         (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+                               op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval))));
+                       }
+
     break;
 
   case 189:
-#line 968 "perly.y"
-    { (yyval.opval) = newSVREF((ps[(1) - (4)].val.opval)); ;}
+#line 966 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+                           op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval))));
+                       }
+
     break;
 
   case 190:
-#line 970 "perly.y"
-    { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); ;}
+#line 970 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newSVREF((ps[-3].val.opval)); }
+
     break;
 
   case 191:
-#line 972 "perly.y"
-    { (yyval.opval) = newHVREF((ps[(1) - (4)].val.opval)); ;}
+#line 972 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
+
     break;
 
   case 192:
-#line 974 "perly.y"
-    { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
-                                      scalar(newCVREF((ps[(3) - (4)].val.ival),(ps[(1) - (4)].val.opval)))); ;}
+#line 974 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newHVREF((ps[-3].val.opval)); }
+
     break;
 
   case 193:
-#line 977 "perly.y"
-    { (yyval.opval) = newGVREF(0,(ps[(1) - (4)].val.opval)); ;}
+#line 976 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
+                                      scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); }
+
     break;
 
   case 194:
-#line 979 "perly.y"
-    { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), OPf_SPECIAL);
-                           PL_hints |= HINT_BLOCK_SCOPE; ;}
+#line 979 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); }
+
     break;
 
   case 195:
-#line 982 "perly.y"
-    { (yyval.opval) = newLOOPEX((ps[(1) - (2)].val.ival),(ps[(2) - (2)].val.opval)); ;}
+#line 981 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL);
+                           PL_hints |= HINT_BLOCK_SCOPE; }
+
     break;
 
   case 196:
-#line 984 "perly.y"
-    { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); ;}
+#line 984 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); }
+
     break;
 
   case 197:
-#line 986 "perly.y"
-    { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), 0); ;}
+#line 986 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
+
     break;
 
   case 198:
-#line 988 "perly.y"
-    { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); ;}
+#line 988 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newOP((ps[0].val.ival), 0); }
+
     break;
 
   case 199:
-#line 990 "perly.y"
-    { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); ;}
+#line 990 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
+
     break;
 
   case 200:
-#line 992 "perly.y"
-    { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.ival) ? OPf_SPECIAL : 0); ;}
+#line 992 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
+
     break;
 
   case 201:
-#line 994 "perly.y"
-    { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.ival) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval)); ;}
+#line 994 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); }
+
     break;
 
   case 202:
-#line 996 "perly.y"
-    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;}
+#line 996 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); }
+
     break;
 
   case 203:
-#line 998 "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)))); ;}
+#line 998 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
+
     break;
 
   case 204:
-#line 1001 "perly.y"
-    { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), 0); ;}
+#line 1000 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
+                           op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); }
+
     break;
 
   case 205:
-#line 1003 "perly.y"
-    { (yyval.opval) = newOP((ps[(1) - (3)].val.ival), 0);;}
+#line 1003 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newOP((ps[0].val.ival), 0); }
+
     break;
 
   case 206:
-#line 1005 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 1005 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newOP((ps[-2].val.ival), 0);}
+
     break;
 
   case 207:
-#line 1007 "perly.y"
-    { (yyval.opval) = (ps[(1) - (3)].val.opval); ;}
+#line 1007 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 208:
-#line 1009 "perly.y"
-    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); ;}
+#line 1009 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[-2].val.opval); }
+
     break;
 
   case 209:
-#line 1011 "perly.y"
-    { (yyval.opval) = ((ps[(1) - (3)].val.ival) == OP_NOT)
-                          ? newUNOP((ps[(1) - (3)].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0)))
-                          : newOP((ps[(1) - (3)].val.ival), OPf_SPECIAL); ;}
+#line 1011 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
+
     break;
 
   case 210:
-#line 1015 "perly.y"
-    { (yyval.opval) = newUNOP((ps[(1) - (4)].val.ival), 0, (ps[(3) - (4)].val.opval)); ;}
+#line 1013 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = ((ps[-2].val.ival) == OP_NOT)
+                          ? newUNOP((ps[-2].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0)))
+                          : newOP((ps[-2].val.ival), OPf_SPECIAL); }
+
     break;
 
   case 211:
-#line 1017 "perly.y"
+#line 1017 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
+
+    break;
+
+  case 212:
+#line 1019 "perly.y" /* yacc.c:1646  */
     {
-                           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))
+                           if (   (ps[0].val.opval)->op_type != OP_TRANS
+                               && (ps[0].val.opval)->op_type != OP_TRANSR
+                               && (((PMOP*)(ps[0].val.opval))->op_pmflags & PMf_HAS_CV))
                            {
                                (yyval.ival) = start_subparse(FALSE, CVf_ANON);
                                SAVEFREESV(PL_compcv);
                            } else
                                (yyval.ival) = 0;
-                       ;}
+                       }
+
     break;
 
-  case 212:
-#line 1028 "perly.y"
-    { (yyval.opval) = pmruntime((ps[(1) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), 1, (ps[(2) - (6)].val.ival)); ;}
+  case 213:
+#line 1030 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); }
+
     break;
 
-  case 215:
-#line 1032 "perly.y"
+  case 216:
+#line 1034 "perly.y" /* yacc.c:1646  */
     {
                          (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
                                newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
-                       ;}
-    break;
+                       }
 
-  case 217:
-#line 1041 "perly.y"
-    { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval)); ;}
     break;
 
   case 218:
-#line 1043 "perly.y"
-    { (yyval.opval) = localize((ps[(2) - (2)].val.opval),1); ;}
+#line 1043 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); }
+
     break;
 
   case 219:
-#line 1048 "perly.y"
-    { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); ;}
+#line 1045 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = localize((ps[0].val.opval),1); }
+
     break;
 
   case 220:
-#line 1050 "perly.y"
-    { (yyval.opval) = sawparens(newNULLLIST()); ;}
+#line 1047 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_REFGEN, 0, my_attrs((ps[-1].val.opval),(ps[0].val.opval))); }
+
     break;
 
   case 221:
-#line 1053 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 1052 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = sawparens((ps[-1].val.opval)); }
+
     break;
 
   case 222:
-#line 1055 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 1054 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = sawparens(newNULLLIST()); }
+
     break;
 
   case 223:
-#line 1057 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 1057 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 224:
-#line 1062 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 1059 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 225:
-#line 1064 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 1061 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 226:
-#line 1068 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 1066 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 227:
-#line 1070 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 1068 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 228:
-#line 1074 "perly.y"
-    { (yyval.opval) = (OP*)NULL; ;}
+#line 1072 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 229:
-#line 1076 "perly.y"
-    { (yyval.opval) = (ps[(2) - (2)].val.opval); ;}
+#line 1074 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 230:
-#line 1082 "perly.y"
-    { parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); ;}
-    break;
+#line 1078 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (OP*)NULL; }
 
-  case 236:
-#line 1095 "perly.y"
-    { (yyval.opval) = newCVREF((ps[(1) - (2)].val.ival),(ps[(2) - (2)].val.opval)); ;}
     break;
 
-  case 237:
-#line 1099 "perly.y"
-    { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval)); ;}
-    break;
+  case 231:
+#line 1080 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
 
-  case 238:
-#line 1103 "perly.y"
-    { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
-                         if ((yyval.opval)) (yyval.opval)->op_private |= (ps[(1) - (2)].val.ival);
-                       ;}
     break;
 
-  case 239:
-#line 1109 "perly.y"
-    { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval));
-                         if ((yyval.opval)) (yyval.opval)->op_private |= (ps[(1) - (2)].val.ival);
-                       ;}
+  case 232:
+#line 1086 "perly.y" /* yacc.c:1646  */
+    { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
+
     break;
 
   case 240:
-#line 1115 "perly.y"
-    { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); ;}
+#line 1103 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); }
+
     break;
 
   case 241:
-#line 1117 "perly.y"
-    { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); ;}
+#line 1107 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newSVREF((ps[0].val.opval)); }
+
     break;
 
   case 242:
-#line 1121 "perly.y"
-    { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval)); ;}
+#line 1111 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newAVREF((ps[0].val.opval));
+                         if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
+                       }
+
+    break;
+
+  case 243:
+#line 1117 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newHVREF((ps[0].val.opval));
+                         if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
+                       }
+
     break;
 
   case 244:
-#line 1126 "perly.y"
-    { (yyval.opval) = newAVREF((ps[(1) - (3)].val.opval)); ;}
+#line 1123 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newAVREF((ps[0].val.opval)); }
+
+    break;
+
+  case 245:
+#line 1125 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
+
     break;
 
   case 246:
-#line 1131 "perly.y"
-    { (yyval.opval) = newHVREF((ps[(1) - (3)].val.opval)); ;}
+#line 1129 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); }
+
     break;
 
   case 248:
-#line 1136 "perly.y"
-    { (yyval.opval) = newGVREF(0,(ps[(1) - (3)].val.opval)); ;}
-    break;
+#line 1134 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newAVREF((ps[-2].val.opval)); }
 
-  case 249:
-#line 1141 "perly.y"
-    { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
     break;
 
   case 250:
-#line 1143 "perly.y"
-    { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); ;}
-    break;
+#line 1139 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newHVREF((ps[-2].val.opval)); }
 
-  case 251:
-#line 1145 "perly.y"
-    { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); ;}
     break;
 
   case 252:
-#line 1148 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); ;}
+#line 1144 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); }
+
+    break;
+
+  case 253:
+#line 1149 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = scalar((ps[0].val.opval)); }
+
+    break;
+
+  case 254:
+#line 1151 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = scalar((ps[0].val.opval)); }
+
+    break;
+
+  case 255:
+#line 1153 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_scope((ps[0].val.opval)); }
+
+    break;
+
+  case 256:
+#line 1156 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
 
-/* Line 1267 of yacc.c.  */
 
       default: break;
     
 
 /* Generated from:
- * 70adb6e1be5382fb5c8cd783cd886cb4725c98a3e69c54eb16da5d7829d929aa perly.y
+ * fba24dfc68a3a84c9ae95cb9e14cc156ac487e6f3228cdf84c166d3cd820e59a perly.y
  * 3e1dff60f26df8933d7aed0c0e87177a0f022c14800c0707eb62a7db4196ac98 regen_perly.pl
  * ex: set ro: */
diff --git a/perly.h b/perly.h
index 9295f54..9184774 100644 (file)
--- a/perly.h
+++ b/perly.h
@@ -4,20 +4,19 @@
    Any changes made here will be lost!
  */
 
-#define PERL_BISON_VERSION  20003
+#define PERL_BISON_VERSION  30000
 
 #ifdef PERL_CORE
-/* A Bison parser, made by GNU Bison 2.3.  */
+/* A Bison parser, made by GNU Bison 3.0.2.  */
 
-/* Skeleton interface for Bison's Yacc-like parsers in C
+/* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
 
-   This program is free software; you can redistribute it and/or modify
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -25,9 +24,7 @@
    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.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-/* Tokens.  */
+/* Debug traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+
+/* Token type.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     GRAMPROG = 258,
-     GRAMEXPR = 259,
-     GRAMBLOCK = 260,
-     GRAMBARESTMT = 261,
-     GRAMFULLSTMT = 262,
-     GRAMSTMTSEQ = 263,
-     WORD = 264,
-     METHOD = 265,
-     FUNCMETH = 266,
-     THING = 267,
-     PMFUNC = 268,
-     PRIVATEREF = 269,
-     QWLIST = 270,
-     FUNC0OP = 271,
-     FUNC0SUB = 272,
-     UNIOPSUB = 273,
-     LSTOPSUB = 274,
-     PLUGEXPR = 275,
-     PLUGSTMT = 276,
-     LABEL = 277,
-     FORMAT = 278,
-     SUB = 279,
-     ANONSUB = 280,
-     PACKAGE = 281,
-     USE = 282,
-     WHILE = 283,
-     UNTIL = 284,
-     IF = 285,
-     UNLESS = 286,
-     ELSE = 287,
-     ELSIF = 288,
-     CONTINUE = 289,
-     FOR = 290,
-     GIVEN = 291,
-     WHEN = 292,
-     DEFAULT = 293,
-     LOOPEX = 294,
-     DOTDOT = 295,
-     YADAYADA = 296,
-     FUNC0 = 297,
-     FUNC1 = 298,
-     FUNC = 299,
-     UNIOP = 300,
-     LSTOP = 301,
-     RELOP = 302,
-     EQOP = 303,
-     MULOP = 304,
-     ADDOP = 305,
-     DOLSHARP = 306,
-     DO = 307,
-     HASHBRACK = 308,
-     NOAMP = 309,
-     LOCAL = 310,
-     MY = 311,
-     REQUIRE = 312,
-     COLONATTR = 313,
-     FORMLBRACK = 314,
-     FORMRBRACK = 315,
-     PREC_LOW = 316,
-     DOROP = 317,
-     OROP = 318,
-     ANDOP = 319,
-     NOTOP = 320,
-     ASSIGNOP = 321,
-     DORDOR = 322,
-     OROR = 323,
-     ANDAND = 324,
-     BITOROP = 325,
-     BITANDOP = 326,
-     SHIFTOP = 327,
-     MATCHOP = 328,
-     REFGEN = 329,
-     UMINUS = 330,
-     POWOP = 331,
-     POSTJOIN = 332,
-     POSTDEC = 333,
-     POSTINC = 334,
-     PREDEC = 335,
-     PREINC = 336,
-     ARROW = 337
-   };
+  enum yytokentype
+  {
+    GRAMPROG = 258,
+    GRAMEXPR = 259,
+    GRAMBLOCK = 260,
+    GRAMBARESTMT = 261,
+    GRAMFULLSTMT = 262,
+    GRAMSTMTSEQ = 263,
+    BAREWORD = 264,
+    METHOD = 265,
+    FUNCMETH = 266,
+    THING = 267,
+    PMFUNC = 268,
+    PRIVATEREF = 269,
+    QWLIST = 270,
+    FUNC0OP = 271,
+    FUNC0SUB = 272,
+    UNIOPSUB = 273,
+    LSTOPSUB = 274,
+    PLUGEXPR = 275,
+    PLUGSTMT = 276,
+    LABEL = 277,
+    FORMAT = 278,
+    SUB = 279,
+    ANONSUB = 280,
+    PACKAGE = 281,
+    USE = 282,
+    WHILE = 283,
+    UNTIL = 284,
+    IF = 285,
+    UNLESS = 286,
+    ELSE = 287,
+    ELSIF = 288,
+    CONTINUE = 289,
+    FOR = 290,
+    GIVEN = 291,
+    WHEN = 292,
+    DEFAULT = 293,
+    LOOPEX = 294,
+    DOTDOT = 295,
+    YADAYADA = 296,
+    FUNC0 = 297,
+    FUNC1 = 298,
+    FUNC = 299,
+    UNIOP = 300,
+    LSTOP = 301,
+    RELOP = 302,
+    EQOP = 303,
+    MULOP = 304,
+    ADDOP = 305,
+    DOLSHARP = 306,
+    DO = 307,
+    HASHBRACK = 308,
+    NOAMP = 309,
+    LOCAL = 310,
+    MY = 311,
+    REQUIRE = 312,
+    COLONATTR = 313,
+    FORMLBRACK = 314,
+    FORMRBRACK = 315,
+    PREC_LOW = 316,
+    OROP = 317,
+    DOROP = 318,
+    ANDOP = 319,
+    NOTOP = 320,
+    ASSIGNOP = 321,
+    OROR = 322,
+    DORDOR = 323,
+    ANDAND = 324,
+    BITOROP = 325,
+    BITANDOP = 326,
+    SHIFTOP = 327,
+    MATCHOP = 328,
+    UMINUS = 329,
+    REFGEN = 330,
+    POWOP = 331,
+    PREINC = 332,
+    PREDEC = 333,
+    POSTINC = 334,
+    POSTDEC = 335,
+    POSTJOIN = 336,
+    ARROW = 337
+  };
 #endif
-/* Tokens.  */
-#define GRAMPROG 258
-#define GRAMEXPR 259
-#define GRAMBLOCK 260
-#define GRAMBARESTMT 261
-#define GRAMFULLSTMT 262
-#define GRAMSTMTSEQ 263
-#define WORD 264
-#define METHOD 265
-#define FUNCMETH 266
-#define THING 267
-#define PMFUNC 268
-#define PRIVATEREF 269
-#define QWLIST 270
-#define FUNC0OP 271
-#define FUNC0SUB 272
-#define UNIOPSUB 273
-#define LSTOPSUB 274
-#define PLUGEXPR 275
-#define PLUGSTMT 276
-#define LABEL 277
-#define FORMAT 278
-#define SUB 279
-#define ANONSUB 280
-#define PACKAGE 281
-#define USE 282
-#define WHILE 283
-#define UNTIL 284
-#define IF 285
-#define UNLESS 286
-#define ELSE 287
-#define ELSIF 288
-#define CONTINUE 289
-#define FOR 290
-#define GIVEN 291
-#define WHEN 292
-#define DEFAULT 293
-#define LOOPEX 294
-#define DOTDOT 295
-#define YADAYADA 296
-#define FUNC0 297
-#define FUNC1 298
-#define FUNC 299
-#define UNIOP 300
-#define LSTOP 301
-#define RELOP 302
-#define EQOP 303
-#define MULOP 304
-#define ADDOP 305
-#define DOLSHARP 306
-#define DO 307
-#define HASHBRACK 308
-#define NOAMP 309
-#define LOCAL 310
-#define MY 311
-#define REQUIRE 312
-#define COLONATTR 313
-#define FORMLBRACK 314
-#define FORMRBRACK 315
-#define PREC_LOW 316
-#define DOROP 317
-#define OROP 318
-#define ANDOP 319
-#define NOTOP 320
-#define ASSIGNOP 321
-#define DORDOR 322
-#define OROR 323
-#define ANDAND 324
-#define BITOROP 325
-#define BITANDOP 326
-#define SHIFTOP 327
-#define MATCHOP 328
-#define REFGEN 329
-#define UMINUS 330
-#define POWOP 331
-#define POSTJOIN 332
-#define POSTDEC 333
-#define POSTINC 334
-#define PREDEC 335
-#define PREINC 336
-#define ARROW 337
-
-
-
 
+/* Value type.  */
 #ifdef PERL_IN_TOKE_C
 static bool
 S_is_opval_token(int type) {
     switch (type) {
+    case BAREWORD:
     case FUNC0OP:
     case FUNC0SUB:
     case FUNCMETH:
@@ -231,7 +153,6 @@ S_is_opval_token(int type) {
     case QWLIST:
     case THING:
     case UNIOPSUB:
-    case WORD:
        return 1;
     }
     return 0;
@@ -239,25 +160,27 @@ S_is_opval_token(int type) {
 #endif /* PERL_IN_TOKE_C */
 #endif /* PERL_CORE */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+typedef union YYSTYPE YYSTYPE;
+union YYSTYPE
 {
+
     I32        ival; /* __DEFAULT__ (marker for regen_perly.pl;
                                must always be 1st union member) */
     char *pval;
     OP *opval;
     GV *gvval;
-}
-/* Line 1529 of yacc.c.  */
-       YYSTYPE;
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
+
+};
 # define YYSTYPE_IS_TRIVIAL 1
+# define YYSTYPE_IS_DECLARED 1
 #endif
 
 
 
+int yyparse (void);
+
 
 /* Generated from:
- * 70adb6e1be5382fb5c8cd783cd886cb4725c98a3e69c54eb16da5d7829d929aa perly.y
+ * fba24dfc68a3a84c9ae95cb9e14cc156ac487e6f3228cdf84c166d3cd820e59a perly.y
  * 3e1dff60f26df8933d7aed0c0e87177a0f022c14800c0707eb62a7db4196ac98 regen_perly.pl
  * ex: set ro: */
index 8694bd4..a8fe5b5 100644 (file)
--- a/perly.tab
+++ b/perly.tab
@@ -6,25 +6,27 @@
 
 #define YYFINAL  14
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2913
+#define YYLAST   3111
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  105
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  77
+#define YYNNTS  78
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  252
-/* YYNRULES -- Number of states.  */
-#define YYNSTATES  508
+#define YYNRULES  256
+/* YYNSTATES -- Number of states.  */
+#define YYNSTATES  521
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   337
 
-#define YYTRANSLATE(YYX)                                               \
+#define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, without out-of-bounds checking.  */
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -64,133 +66,7 @@ static const yytype_uint8 yytranslate[] =
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     4,     9,    10,    14,    15,    19,    20,
-      24,    25,    29,    30,    34,    39,    47,    48,    53,    54,
-      55,    58,    59,    62,    64,    66,    69,    72,    74,    79,
-      80,    88,    89,   100,   105,   106,   114,   122,   130,   137,
-     144,   147,   156,   165,   166,   167,   181,   191,   200,   201,
-     213,   223,   231,   234,   235,   244,   247,   249,   252,   253,
-     257,   259,   261,   265,   269,   273,   277,   281,   285,   286,
-     289,   296,   297,   300,   301,   302,   304,   305,   307,   309,
-     311,   313,   315,   316,   317,   318,   319,   321,   323,   324,
-     326,   327,   330,   332,   335,   337,   338,   342,   344,   346,
-     350,   354,   358,   360,   363,   367,   369,   373,   379,   386,
-     390,   394,   400,   403,   408,   409,   415,   417,   419,   425,
-     430,   436,   441,   447,   454,   460,   465,   471,   476,   480,
-     487,   492,   498,   502,   506,   510,   514,   518,   522,   526,
-     530,   534,   538,   542,   546,   550,   554,   557,   560,   563,
-     566,   569,   572,   575,   578,   581,   585,   588,   593,   597,
-     603,   612,   615,   618,   620,   622,   624,   626,   632,   635,
-     637,   640,   644,   646,   649,   651,   653,   655,   657,   659,
-     661,   666,   671,   677,   683,   685,   687,   691,   696,   700,
-     705,   710,   715,   720,   725,   727,   730,   733,   735,   738,
-     741,   743,   746,   748,   751,   753,   757,   759,   763,   765,
-     769,   774,   775,   782,   784,   786,   788,   790,   794,   797,
-     801,   804,   806,   808,   810,   811,   813,   814,   816,   817,
-     820,   822,   824,   826,   828,   830,   832,   835,   838,   841,
-     844,   847,   852,   855,   857,   861,   863,   867,   869,   873,
-     875,   877,   879
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int16 yyrhs[] =
-{
-     106,     0,    -1,    -1,     3,   107,   115,   118,    -1,    -1,
-       4,   108,   167,    -1,    -1,     5,   109,   113,    -1,    -1,
-       6,   110,   122,    -1,    -1,     7,   111,   120,    -1,    -1,
-       8,   112,   118,    -1,     9,   115,   118,    10,    -1,    18,
-     115,   101,    71,   119,   101,    19,    -1,    -1,     9,   117,
-     118,    10,    -1,    -1,    -1,   118,   120,    -1,    -1,   119,
-     130,    -1,   122,    -1,   121,    -1,    33,   122,    -1,    33,
-     121,    -1,    32,    -1,    34,   144,   141,   114,    -1,    -1,
-      35,   145,   142,   123,   146,   147,   151,    -1,    -1,    35,
-     145,   142,   124,   115,   149,   147,     9,   118,    10,    -1,
-      37,    20,    20,   101,    -1,    -1,    38,   142,   125,    20,
-      20,   166,   101,    -1,    41,   100,   115,   139,    99,   116,
-     133,    -1,    42,   100,   115,   139,    99,   116,   133,    -1,
-      47,   100,   115,   139,    99,   116,    -1,    48,   100,   115,
-     139,    99,   116,    -1,    49,   113,    -1,    39,   100,   115,
-     137,    99,   135,   116,   134,    -1,    40,   100,   115,   138,
-      99,   135,   116,   134,    -1,    -1,    -1,    46,   100,   115,
-     140,   101,   126,   137,   101,   127,   135,   140,    99,   116,
-      -1,    46,    67,   115,   169,   100,   139,    99,   116,   134,
-      -1,    46,   173,   100,   115,   139,    99,   116,   134,    -1,
-      -1,    46,    90,    67,   115,   170,   128,   100,   139,    99,
-     116,   134,    -1,    46,    90,   171,   100,   115,   139,    99,
-     116,   134,    -1,    46,   100,   115,   139,    99,   116,   134,
-      -1,   113,   134,    -1,    -1,    37,    20,    20,     9,   115,
-     129,   118,    10,    -1,   132,   101,    -1,   101,    -1,    23,
-     131,    -1,    -1,    70,   118,    71,    -1,     1,    -1,   152,
-      -1,   152,    41,   152,    -1,   152,    42,   152,    -1,   152,
-      39,   152,    -1,   152,    40,   138,    -1,   152,    46,   152,
-      -1,   152,    48,   152,    -1,    -1,    43,   116,    -1,    44,
-     100,   139,    99,   116,   133,    -1,    -1,    45,   113,    -1,
-      -1,    -1,   132,    -1,    -1,   152,    -1,   152,    -1,   152,
-      -1,   136,    -1,    20,    -1,    -1,    -1,    -1,    -1,    20,
-      -1,    25,    -1,    -1,    23,    -1,    -1,    69,    23,    -1,
-      69,    -1,    69,    23,    -1,    69,    -1,    -1,   100,   150,
-      99,    -1,   113,    -1,   101,    -1,   152,    75,   152,    -1,
-     152,    74,   152,    -1,   152,    73,   152,    -1,   153,    -1,
-     153,    77,    -1,   153,    77,   162,    -1,   162,    -1,    57,
-     181,   153,    -1,    55,   100,   181,   152,    99,    -1,   162,
-      98,   156,   100,   167,    99,    -1,   162,    98,   156,    -1,
-      21,   181,   166,    -1,    22,   181,   100,   167,    99,    -1,
-      57,   166,    -1,    55,   100,   167,    99,    -1,    -1,    30,
-     143,   113,   155,   166,    -1,    21,    -1,   173,    -1,   180,
-       9,   152,   101,    10,    -1,   173,    11,   152,    12,    -1,
-     162,    98,    11,   152,    12,    -1,   157,    11,   152,    12,
-      -1,   173,     9,   152,   101,    10,    -1,   162,    98,     9,
-     152,   101,    10,    -1,   157,     9,   152,   101,    10,    -1,
-     162,    98,   100,    99,    -1,   162,    98,   100,   152,    99,
-      -1,   157,   100,   152,    99,    -1,   157,   100,    99,    -1,
-     100,   152,    99,    11,   152,    12,    -1,    26,    11,   152,
-      12,    -1,   100,    99,    11,   152,    12,    -1,   162,    78,
-     162,    -1,   162,    92,   162,    -1,   162,    60,   162,    -1,
-     162,    61,   162,    -1,   162,    86,   162,    -1,   162,    58,
-     162,    -1,   162,    59,   162,    -1,   162,    85,   162,    -1,
-     162,    84,   162,    -1,   162,    51,   162,    -1,   162,    83,
-     162,    -1,   162,    82,   162,    -1,   162,    81,   162,    -1,
-     162,    87,   162,    -1,    13,   162,    -1,    14,   162,    -1,
-      88,   162,    -1,    89,   162,    -1,   162,    95,    -1,   162,
-      94,    -1,   162,    93,    -1,    97,   162,    -1,    96,   162,
-      -1,    11,   152,    12,    -1,    11,    12,    -1,    64,   152,
-     101,    10,    -1,    64,   101,    10,    -1,    36,   143,   146,
-     147,   113,    -1,    36,   143,   115,   149,   147,     9,   118,
-      10,    -1,    63,   162,    -1,    63,   113,    -1,   158,    -1,
-     159,    -1,   160,    -1,   161,    -1,   162,    79,   162,    80,
-     162,    -1,    90,   162,    -1,   164,    -1,    66,   162,    -1,
-     100,   152,    99,    -1,    26,    -1,   100,    99,    -1,   173,
-      -1,   177,    -1,   175,    -1,   174,    -1,   176,    -1,   157,
-      -1,   178,    11,   152,    12,    -1,   179,    11,   152,    12,
-      -1,   178,     9,   152,   101,    10,    -1,   179,     9,   152,
-     101,    10,    -1,    23,    -1,   172,    -1,   172,   100,    99,
-      -1,   172,   100,   152,    99,    -1,    65,   145,   166,    -1,
-     162,    98,   102,   103,    -1,   162,    98,    15,   103,    -1,
-     162,    98,    16,   103,    -1,   162,    98,    17,   103,    -1,
-     162,    98,   103,   103,    -1,    50,    -1,    50,   162,    -1,
-      76,   153,    -1,    56,    -1,    56,   113,    -1,    56,   162,
-      -1,    68,    -1,    68,   162,    -1,    29,    -1,    29,   162,
-      -1,    53,    -1,    53,   100,    99,    -1,    27,    -1,    27,
-     100,    99,    -1,    28,    -1,    54,   100,    99,    -1,    54,
-     100,   152,    99,    -1,    -1,    24,   163,   100,   153,   168,
-      99,    -1,    20,    -1,   154,    -1,    52,    -1,    31,    -1,
-      67,   165,   148,    -1,    67,   165,    -1,   100,   152,    99,
-      -1,   100,    99,    -1,   173,    -1,   175,    -1,   174,    -1,
-      -1,   153,    -1,    -1,   152,    -1,    -1,   104,   152,    -1,
-     173,    -1,   173,    -1,   174,    -1,   175,    -1,   170,    -1,
-     172,    -1,    17,   181,    -1,   102,   181,    -1,    15,   181,
-      -1,    16,   181,    -1,    62,   181,    -1,   162,    98,    62,
-     103,    -1,   103,   181,    -1,   174,    -1,   162,    98,    15,
-      -1,   175,    -1,   162,    98,    16,    -1,   177,    -1,   162,
-      98,   103,    -1,    20,    -1,   173,    -1,   113,    -1,    25,
-      -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
        0,   115,   115,   114,   125,   124,   134,   133,   146,   145,
@@ -211,55 +87,55 @@ static const yytype_uint16 yyrline[] =
      823,   826,   829,   840,   843,   850,   852,   854,   856,   858,
      861,   875,   877,   881,   882,   883,   884,   885,   887,   889,
      891,   893,   895,   897,   899,   901,   903,   905,   907,   909,
-     911,   921,   931,   941,   951,   953,   955,   958,   963,   967,
-     969,   971,   973,   976,   978,   981,   983,   985,   987,   989,
-     991,   993,   995,   997,  1000,  1002,  1004,  1006,  1008,  1010,
-    1014,  1017,  1016,  1029,  1030,  1031,  1036,  1040,  1042,  1047,
-    1049,  1052,  1054,  1056,  1061,  1063,  1068,  1069,  1074,  1075,
-    1081,  1085,  1086,  1087,  1090,  1091,  1094,  1098,  1102,  1108,
-    1114,  1116,  1120,  1124,  1125,  1129,  1130,  1134,  1135,  1140,
-    1142,  1144,  1147
+     911,   913,   923,   933,   943,   953,   955,   957,   960,   965,
+     969,   971,   973,   975,   978,   980,   983,   985,   987,   989,
+     991,   993,   995,   997,   999,  1002,  1004,  1006,  1008,  1010,
+    1012,  1016,  1019,  1018,  1031,  1032,  1033,  1038,  1042,  1044,
+    1046,  1051,  1053,  1056,  1058,  1060,  1065,  1067,  1072,  1073,
+    1078,  1079,  1085,  1089,  1090,  1091,  1094,  1095,  1098,  1099,
+    1102,  1106,  1110,  1116,  1122,  1124,  1128,  1132,  1133,  1137,
+    1138,  1142,  1143,  1148,  1150,  1152,  1155
 };
 #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",
+  "']'", "'-'", "'+'", "'@'", "'%'", "'&'", "'='", "'.'", "BAREWORD",
+  "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", "POSTJOIN", "POSTDEC", "POSTINC", "PREDEC", "PREINC",
+  "FORMLBRACK", "FORMRBRACK", "PREC_LOW", "OROP", "DOROP", "ANDOP",
+  "NOTOP", "','", "ASSIGNOP", "'?'", "':'", "OROR", "DORDOR", "ANDAND",
+  "BITOROP", "BITANDOP", "SHIFTOP", "MATCHOP", "'!'", "'~'", "UMINUS",
+  "REFGEN", "POWOP", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "POSTJOIN",
   "ARROW", "')'", "'('", "';'", "'$'", "'*'", "'/'", "$accept", "grammar",
-  "@1", "@2", "@3", "@4", "@5", "@6", "block", "formblock", "remember",
-  "mblock", "mremember", "stmtseq", "formstmtseq", "fullstmt",
-  "labfullstmt", "barestmt", "@7", "@8", "@9", "@10", "@11", "@12", "@13",
-  "formline", "formarg", "sideff", "else", "cont", "mintro", "nexpr",
-  "texpr", "iexpr", "mexpr", "mnexpr", "formname", "startsub",
+  "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "block", "formblock",
+  "remember", "mblock", "mremember", "stmtseq", "formstmtseq", "fullstmt",
+  "labfullstmt", "barestmt", "$@7", "$@8", "$@9", "$@10", "$@11", "@12",
+  "$@13", "formline", "formarg", "sideff", "else", "cont", "mintro",
+  "nexpr", "texpr", "iexpr", "mexpr", "mnexpr", "formname", "startsub",
   "startanonsub", "startformsub", "subname", "proto", "subattrlist",
   "myattrlist", "subsignature", "@14", "optsubbody", "expr", "listexpr",
   "listop", "@15", "method", "subscripted", "termbinop", "termunop",
   "anonymous", "termdo", "term", "@16", "myattrterm", "myterm",
   "optlistexpr", "optexpr", "optrepl", "my_scalar", "my_var",
-  "refgen_topic", "amper", "scalar", "ary", "hsh", "arylen", "star",
-  "sliceme", "kvslice", "gelem", "indirob", 0
+  "refgen_topic", "my_refgen", "amper", "scalar", "ary", "hsh", "arylen",
+  "star", "sliceme", "kvslice", "gelem", "indirob", YY_NULLPTR
 };
 #endif
 
 # ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
 static const yytype_uint16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   123,
@@ -276,299 +152,270 @@ static const yytype_uint16 yytoknum[] =
 };
 # endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,   105,   107,   106,   108,   106,   109,   106,   110,   106,
-     111,   106,   112,   106,   113,   114,   115,   116,   117,   118,
-     118,   119,   119,   120,   120,   121,   121,   122,   122,   123,
-     122,   124,   122,   122,   125,   122,   122,   122,   122,   122,
-     122,   122,   122,   126,   127,   122,   122,   122,   128,   122,
-     122,   122,   122,   129,   122,   122,   122,   130,   131,   131,
-     132,   132,   132,   132,   132,   132,   132,   132,   133,   133,
-     133,   134,   134,   135,   136,   136,   137,   137,   138,   139,
-     140,   141,   141,   142,   143,   144,   145,   145,   146,   146,
-     147,   147,   147,   148,   148,   150,   149,   151,   151,   152,
-     152,   152,   152,   153,   153,   153,   154,   154,   154,   154,
-     154,   154,   154,   154,   155,   154,   156,   156,   157,   157,
-     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
-     157,   157,   158,   158,   158,   158,   158,   158,   158,   158,
-     158,   158,   158,   158,   158,   158,   159,   159,   159,   159,
-     159,   159,   159,   159,   159,   160,   160,   160,   160,   160,
-     160,   161,   161,   162,   162,   162,   162,   162,   162,   162,
-     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-     162,   163,   162,   162,   162,   162,   162,   164,   164,   165,
-     165,   165,   165,   165,   166,   166,   167,   167,   168,   168,
-     169,   170,   170,   170,   171,   171,   172,   173,   174,   175,
-     176,   176,   177,   178,   178,   179,   179,   180,   180,   181,
-     181,   181,   181
-};
+#define YYPACT_NINF -412
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-412)))
+
+#define YYTABLE_NINF -252
+
+#define yytable_value_is_error(Yytable_value) \
+  (!!((Yytable_value) == (-252)))
+
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
+static const yytype_int16 yypact[] =
 {
-       0,     2,     0,     4,     0,     3,     0,     3,     0,     3,
-       0,     3,     0,     3,     4,     7,     0,     4,     0,     0,
-       2,     0,     2,     1,     1,     2,     2,     1,     4,     0,
-       7,     0,    10,     4,     0,     7,     7,     7,     6,     6,
-       2,     8,     8,     0,     0,    13,     9,     8,     0,    11,
-       9,     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,     0,     0,     0,     0,     1,     1,     0,     1,
-       0,     2,     1,     2,     1,     0,     3,     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,     2,     3,     2,     4,     3,     5,
-       8,     2,     2,     1,     1,     1,     1,     5,     2,     1,
-       2,     3,     1,     2,     1,     1,     1,     1,     1,     1,
-       4,     4,     5,     5,     1,     1,     3,     4,     3,     4,
-       4,     4,     4,     4,     1,     2,     2,     1,     2,     2,
-       1,     2,     1,     2,     1,     3,     1,     3,     1,     3,
-       4,     0,     6,     1,     1,     1,     1,     3,     2,     3,
-       2,     1,     1,     1,     0,     1,     0,     1,     0,     2,
-       1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
-       2,     4,     2,     1,     3,     1,     3,     1,     3,     1,
-       1,     1,     1
+     903,  -412,  -412,  -412,  -412,  -412,  -412,     8,  -412,  2810,
+      16,  1502,  1407,  -412,  -412,  -412,  1973,  2810,  2810,    31,
+      31,    31,  -412,    31,    31,  -412,  -412,    46,   -66,  -412,
+    2810,  -412,  -412,  -412,  2810,  -412,   -54,   -20,   -19,  1880,
+    1785,    31,  1880,  2066,    35,  2810,    62,  2810,  2810,  2810,
+    2810,  2810,  2810,  2810,  2159,    31,    31,   341,   -13,  -412,
+       7,  -412,  -412,  -412,  -412,  2971,  -412,  -412,    -2,    73,
+      79,    82,  -412,    76,   123,   180,    92,  -412,  -412,  -412,
+    -412,  -412,    35,    90,  -412,    18,    28,    36,    47,   167,
+      88,   104,    16,  -412,    78,  -412,   102,  1971,  1407,  -412,
+    -412,  -412,   647,   742,  -412,    77,   731,   731,  -412,  -412,
+    -412,  -412,  -412,  -412,  -412,  2810,   117,   118,  2810,   122,
+     367,    16,    -4,  2971,   126,  2252,  1785,  -412,   367,   545,
+     -13,  -412,   438,  2810,  -412,  -412,   367,   212,   100,  -412,
+    -412,  2810,   367,  2903,  2345,   157,  -412,  -412,  -412,   367,
+     -13,   731,   731,   731,    71,    71,   219,   221,  -412,  -412,
+    2810,  2810,  2810,  2810,  2810,  2810,  2438,  2810,  2810,  2810,
+    2810,  2810,  2810,  2810,  2810,  2810,  2810,  2810,  2810,  2810,
+    2810,  2810,  -412,  -412,  -412,   245,  2531,  2810,  2810,  2810,
+    2810,  2810,  2810,  2810,  -412,   209,  -412,   213,  -412,  -412,
+    -412,  -412,  -412,   144,    55,  -412,  -412,   139,  -412,  -412,
+    -412,    16,  -412,  -412,  2810,  2810,  2810,  2810,  2810,  2810,
+    -412,  -412,  -412,  -412,  -412,  2810,  2810,    97,  -412,  -412,
+    -412,   141,   173,  -412,  -412,   256,   145,  2810,   -13,  -412,
+     242,  -412,  2624,   731,   157,    52,    57,    58,  -412,   312,
+     230,  -412,  2810,   244,   193,   193,  -412,  2971,   201,   103,
+    -412,   346,  1584,   483,  1768,   724,   502,  2971,  2929,   468,
+     468,  1675,   408,  1863,   630,   731,   731,  2810,  2810,   170,
+     177,   184,  -412,   186,  2717,    11,   187,   225,  -412,  -412,
+     473,   218,   119,   259,   125,   279,   132,   309,   837,  -412,
+     252,   235,     2,   288,  2810,  2810,  2810,  2810,  -412,   207,
+    -412,  -412,   236,  -412,  -412,  -412,  -412,  1596,    23,  -412,
+    2810,  2810,  -412,   341,  -412,   341,   341,   341,   341,   341,
+     222,   -30,  -412,  2810,  -412,   173,   323,    16,  -412,  -412,
+     534,  -412,    30,   540,  -412,  -412,  -412,   190,  2810,   340,
+    -412,  -412,  2810,   329,   208,  -412,  -412,  -412,  -412,  -412,
+     632,  -412,  -412,  2810,  -412,   352,  -412,   354,  -412,   380,
+    -412,   387,  -412,  -412,  -412,   328,  -412,  -412,  -412,   336,
+     301,   341,   302,   306,   341,   307,   308,  -412,  -412,  -412,
+    -412,   310,   325,   264,  -412,  2810,   334,   335,  -412,  2810,
+     338,  -412,   343,   426,  -412,  -412,  -412,    42,  -412,   211,
+    -412,  3013,   429,  -412,  -412,   344,  -412,  -412,  -412,  -412,
+     355,   173,   141,  -412,  2810,  -412,  -412,   435,   435,  2810,
+    2810,   435,  -412,   360,   356,   435,   435,   341,  -412,  -412,
+    -412,  -412,  -412,  -412,   390,     5,   173,  -412,   370,   435,
+     435,  -412,    32,    32,   373,   374,    78,  2810,  2810,   435,
+    -412,  -412,   932,  -412,  -412,  -412,  -412,   466,  1027,  -412,
+      78,    78,  -412,   435,   376,  -412,  -412,   435,   435,  -412,
+     382,   388,    78,  -412,    29,  -412,  -412,  -412,  -412,  1122,
+    -412,  2810,    78,    78,  -412,   435,  -412,   411,   471,  -412,
+    1217,  -412,   392,  -412,  -412,  -412,    78,  -412,  -412,  -412,
+    -412,   435,  1690,  -412,  1312,    32,   402,  -412,  -412,   435,
+    -412
 };
 
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint8 yydefact[] =
+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
+static const yytype_uint16 yydefact[] =
 {
-       0,     2,     4,     6,     8,    10,    12,     0,    16,   226,
+       0,     2,     4,     6,     8,    10,    12,     0,    16,   228,
        0,     0,     0,    19,     1,    19,     0,     0,     0,     0,
-       0,     0,   213,     0,     0,   184,   211,   172,   206,   208,
-     202,    84,   216,    84,   194,   215,   204,     0,     0,   197,
-     224,     0,     0,     0,     0,     0,     0,   200,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   227,   102,   214,
-     179,   163,   164,   165,   166,   105,   169,     5,   185,   174,
-     177,   176,   178,   175,     0,     0,     0,    16,     7,    60,
+       0,     0,   214,     0,     0,   185,   212,   173,   207,   209,
+     203,    84,   217,    84,   195,   216,   205,     0,     0,   198,
+     226,     0,     0,     0,     0,     0,     0,   201,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   229,   102,   215,
+     180,   163,   164,   165,   166,   105,   170,     5,   186,   175,
+     178,   177,   179,   176,     0,     0,     0,    16,     7,    60,
       27,    85,     0,     0,    83,     0,     0,     0,     0,     0,
        0,     0,     0,    56,    71,     9,     0,    61,     0,    11,
-      24,    23,     0,     0,   156,     0,   146,   147,   249,   252,
-     251,   250,   238,   239,   236,   224,     0,     0,     0,     0,
-     203,     0,    88,   195,     0,     0,   226,   198,   199,   249,
-     225,   112,   250,     0,   240,   162,   161,     0,     0,    86,
-      87,   224,   170,     0,   218,   221,   223,   222,   201,   196,
-     148,   149,   168,   154,   153,   173,     0,   237,   242,     0,
-       0,     0,   103,     0,     0,     0,     0,     0,     0,     0,
+      24,    23,     0,     0,   156,     0,   146,   147,   253,   256,
+     255,   254,   242,   243,   240,   226,     0,     0,     0,     0,
+     204,     0,    88,   196,     0,     0,   228,   199,   200,   253,
+     227,   112,   254,     0,   244,   162,   161,     0,     0,    86,
+      87,   226,   171,     0,     0,   219,   223,   225,   224,   202,
+     197,   148,   149,   168,   153,   154,   174,     0,   241,   246,
+       0,     0,     0,   103,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   152,   151,   150,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    19,    82,    83,     0,    34,    16,    16,
-      16,    16,    16,     0,    16,     0,    16,    16,    40,     0,
-      52,    55,     0,     0,     0,     0,     0,     0,    26,    25,
-      20,   155,   110,   226,     0,     0,   207,   114,    89,     0,
-      90,   205,   209,     0,     0,     0,   106,   158,     0,   188,
-     220,     0,    94,   217,     0,   171,   101,   100,    99,   104,
-       0,     0,   128,     0,   141,   137,   138,   134,   135,   132,
-       0,   144,   143,   142,   140,   139,   136,   145,   133,     0,
-       0,   244,   246,     0,   116,     0,     0,     0,   248,   109,
-     117,   186,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    81,     0,    29,     0,     0,    76,     0,     0,     0,
-       0,    16,   234,     0,   235,   231,   232,   233,     0,    16,
+       0,     0,   150,   151,   152,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    19,    82,    83,     0,    34,    16,
+      16,    16,    16,    16,     0,    16,    16,     0,    16,    16,
+      40,     0,    52,    55,     0,     0,     0,     0,     0,     0,
+      26,    25,    20,   155,   110,   228,     0,     0,   208,   114,
+      89,     0,    90,   206,   210,     0,     0,     0,   106,   158,
+       0,   189,     0,   169,     0,   175,   178,   177,   222,     0,
+      94,   218,     0,   172,   100,   101,    99,   104,     0,     0,
+     128,     0,   141,   137,   138,   134,   135,   132,     0,   143,
+     144,   142,   140,   139,   136,   145,   133,     0,     0,   248,
+     250,     0,   116,     0,     0,     0,   252,   109,   117,   187,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    81,
+       0,    29,     0,     0,    76,     0,     0,     0,   238,     0,
+     239,   236,     0,   237,   233,   234,   235,     0,     0,    16,
        0,     0,    72,    64,    65,    78,    62,    63,    66,    67,
-       0,   228,   130,   224,    95,    90,    92,     0,   210,   113,
-       0,   157,   219,    93,     0,     0,     0,   121,   127,     0,
-       0,     0,   190,   191,   192,   241,   125,     0,   189,   193,
-     226,   187,     0,   119,     0,   180,     0,   181,     0,    14,
-      16,    28,    88,    16,    16,    33,     0,     0,    77,     0,
-       0,    79,     0,     0,   230,     0,    16,    75,    80,     0,
-       0,    61,     0,     0,     0,   111,     0,     0,   115,     0,
-       0,    91,   159,   107,   131,     0,   124,   167,     0,   120,
-     126,     0,   122,   182,   183,   118,     0,    90,     0,    53,
-     224,    73,    73,     0,     0,     0,    48,     0,     0,    43,
-       0,     0,     0,   229,   212,    96,    19,   129,   123,   108,
-       0,     0,    90,    19,     0,     0,     0,    18,    68,    68,
-       0,     0,     0,    71,    76,     0,    38,    39,     0,    21,
-      98,    97,    30,     0,     0,    35,    71,    71,    19,     0,
-       0,    36,    37,     0,     0,     0,    51,     0,    71,   160,
-       0,    19,    54,    41,    42,     0,    69,     0,    71,     0,
-      71,    44,    47,    58,     0,    22,     0,    17,     0,    46,
-       0,    50,    73,    19,    57,    15,    32,     0,    71,     0,
-       0,    68,    49,     0,    59,    70,     0,    45
+       0,   230,   130,   226,    95,    90,    92,     0,   211,   113,
+       0,   157,   174,     0,   220,   221,    93,     0,     0,     0,
+     121,   127,     0,     0,     0,   191,   192,   193,   245,   125,
+       0,   190,   194,   228,   188,     0,   119,     0,   181,     0,
+     182,     0,    14,    16,    28,    88,    16,    16,    33,     0,
+       0,    77,     0,     0,    79,     0,     0,   232,    16,    75,
+      80,     0,     0,    61,    48,     0,     0,     0,   111,     0,
+       0,   115,     0,     0,    91,   159,   107,   172,   131,     0,
+     124,   167,     0,   120,   126,     0,   122,   183,   184,   118,
+       0,    90,     0,    53,   226,    73,    73,     0,     0,     0,
+       0,     0,    43,     0,     0,     0,     0,   231,   213,    96,
+      19,   129,   123,   108,     0,     0,    90,    19,     0,     0,
+       0,    18,    68,    68,     0,     0,    71,    76,     0,     0,
+      38,    39,     0,    21,    98,    97,    30,     0,     0,    35,
+      71,    71,    19,     0,     0,    36,    37,     0,     0,    51,
+       0,     0,    71,   160,     0,    19,    54,    41,    42,     0,
+      69,     0,    71,    71,    44,     0,    47,    58,     0,    22,
+       0,    17,     0,    46,    50,    73,    71,    19,    57,    15,
+      32,     0,     0,    49,     0,    68,     0,    59,    70,     0,
+      45
 };
 
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,     7,     8,     9,    10,    11,    12,    13,    94,   361,
-      15,   438,   458,   102,   470,   220,   100,   101,   362,   363,
-     295,   444,   492,   441,   433,   485,   494,    96,   461,   210,
-     435,   378,   367,   314,   370,   380,   292,   197,   121,   194,
-     141,   230,   327,   243,   325,   389,   452,    97,    58,    59,
-     323,   279,    60,    61,    62,    63,    64,    65,   117,    66,
-     144,   131,    67,   387,   373,   302,   303,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,   157
-};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -400
-static const yytype_int16 yypact[] =
+  /* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
 {
-     565,  -400,  -400,  -400,  -400,  -400,  -400,    73,  -400,  2699,
-      69,  1486,  1389,  -400,  -400,  -400,  1955,  2699,  2699,    49,
-      49,    49,  -400,    49,    49,  -400,  -400,    76,    -8,  -400,
-    2699,  -400,  -400,  -400,  2699,  -400,    -3,     8,    11,  1862,
-    1767,    49,  1862,  2048,    22,  2699,     1,  2699,  2699,  2699,
-    2699,  2699,  2699,  2699,  2141,    49,    49,   -19,    14,  -400,
-       9,  -400,  -400,  -400,  -400,  2770,  -400,  -400,    24,    68,
-      72,   106,  -400,   105,   118,   165,   109,  -400,  -400,  -400,
-    -400,  -400,    22,   111,  -400,    39,    50,    62,    65,   -14,
-      77,    95,    69,  -400,    87,  -400,    48,   506,  1389,  -400,
-    -400,  -400,   612,   710,  -400,    70,   490,   490,  -400,  -400,
-    -400,  -400,  -400,  -400,  -400,  2699,    96,   101,  2699,   107,
-     410,    69,    16,  2770,   120,  2234,  1767,  -400,   410,   516,
-      14,  -400,   440,  2699,  -400,  -400,   410,   159,    93,  -400,
-    -400,  2699,   410,  2327,   136,  -400,  -400,  -400,   410,    14,
-     490,   490,   490,   258,   258,   210,   152,  -400,  -400,  2699,
-    2699,  2699,  2699,  2699,  2699,  2420,  2699,  2699,  2699,  2699,
-    2699,  2699,  2699,  2699,  2699,  2699,  2699,  2699,  2699,  2699,
-    2699,  -400,  -400,  -400,   131,  2513,  2699,  2699,  2699,  2699,
-    2699,  2699,  2699,  -400,   200,  -400,   223,  -400,  -400,  -400,
-    -400,  -400,  -400,    55,  -400,   146,  -400,  -400,  -400,    69,
-    -400,  -400,  2699,  2699,  2699,  2699,  2699,  2699,  -400,  -400,
-    -400,  -400,  -400,  2699,  2699,    98,  -400,  -400,  -400,   148,
-     160,  -400,  -400,   163,   150,  2699,    14,  -400,   240,  -400,
-    -400,   293,   232,  -400,  2699,   245,   192,   192,  -400,  2770,
-     209,   125,  -400,   531,  1567,  2033,   371,   695,   203,  2770,
-    2725,  1658,  1658,  1752,  1847,  1940,   278,   490,   490,  2699,
-    2699,   170,   172,   182,  -400,   183,  2606,    32,   184,   168,
-    -400,  -400,   597,   249,   129,   273,   141,   436,   149,   486,
-     807,  -400,   252,   189,    -6,   279,  2699,  2699,  2699,  2699,
-     198,  -400,  -400,   202,  -400,  -400,  -400,  -400,  1579,  -400,
-    2699,  2699,  -400,   -19,  -400,   -19,   -19,   -19,   -19,   -19,
-     208,   -29,  -400,  2699,  -400,   160,   285,    69,  -400,  -400,
-     617,  -400,  -400,  -400,   167,  2699,   299,  -400,  -400,  2699,
-     582,   179,  -400,  -400,  -400,  -400,  -400,   630,  -400,  -400,
-    2699,  -400,   306,  -400,   308,  -400,   319,  -400,   332,  -400,
-    -400,  -400,   320,  -400,  -400,  -400,   329,   259,   -19,   263,
-     264,   -19,   270,   257,  -400,    21,  -400,  -400,  -400,   280,
-     282,   286,  2699,   281,   287,  -400,  2699,   288,  -400,   289,
-     381,  -400,  -400,  -400,  -400,   185,  -400,  2815,   398,  -400,
-    -400,   292,  -400,  -400,  -400,  -400,   314,   160,   148,  -400,
-    2699,  -400,  -400,   408,   408,  2699,  -400,  2699,   408,  -400,
-     321,   408,   408,   -19,  -400,  -400,  -400,  -400,  -400,  -400,
-     350,     6,   160,  -400,   322,   408,   408,  -400,    18,    18,
-     325,   328,   334,    87,  2699,   408,  -400,  -400,   904,  -400,
-    -400,  -400,  -400,   425,  1001,  -400,    87,    87,  -400,   408,
-     336,  -400,  -400,   408,  2699,   408,  -400,   340,    87,  -400,
-       3,  -400,  -400,  -400,  -400,  1098,  -400,  2699,    87,   338,
-      87,  -400,  -400,   372,   426,  -400,  1195,  -400,   345,  -400,
-     408,  -400,  -400,  -400,  -400,  -400,  -400,   408,    87,  1672,
-    1292,    18,  -400,   347,  -400,  -400,   408,  -400
+    -412,  -412,  -412,  -412,  -412,  -412,  -412,  -412,     3,  -412,
+     -60,   -37,  -412,   -15,  -412,   490,   410,    10,  -412,  -412,
+    -412,  -412,  -412,  -412,  -412,  -412,  -412,  -315,  -399,   -75,
+    -411,  -412,    53,   204,  -234,    19,  -412,   318,   499,  -412,
+     456,   165,  -329,   305,   134,  -412,  -412,    -6,   -36,  -412,
+    -412,  -412,  -412,  -412,  -412,  -412,  -412,   198,  -412,  -412,
+     415,  -106,  -125,  -412,  -412,   241,  -412,  -412,   357,   303,
+     -41,   -39,  -412,  -412,  -412,  -412,  -412,     9
 };
 
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
+  /* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
 {
-    -400,  -400,  -400,  -400,  -400,  -400,  -400,  -400,     4,  -400,
-     113,   -81,  -400,   -15,  -400,   435,   355,    -9,  -400,  -400,
-    -400,  -400,  -400,  -400,  -400,  -400,  -400,  -307,  -399,   -30,
-    -380,  -400,    17,   157,  -289,   -44,  -400,   265,   429,  -400,
-     385,   112,  -313,  -400,    67,  -400,  -400,    -5,   -35,  -400,
-    -400,  -400,  -400,  -400,  -400,  -400,  -400,   227,  -400,  -400,
-    -400,  -106,  -118,  -400,  -400,   108,  -400,   284,    44,   -40,
-     -39,  -400,  -400,  -400,  -400,  -400,    10
+      -1,     7,     8,     9,    10,    11,    12,    13,    94,   374,
+      15,   452,   472,   102,   484,   222,   100,   101,   375,   376,
+     303,   457,   505,   433,   447,   499,   508,    96,   475,   212,
+     449,   390,   380,   324,   383,   392,   300,   198,   121,   195,
+     141,   232,   337,   251,   335,   402,   466,    97,    58,    59,
+     333,   287,    60,    61,    62,    63,    64,    65,   117,    66,
+     145,   131,    67,   400,   386,   311,   312,   206,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,   158
 };
 
-/* 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 -248
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-     103,   377,    95,   364,    57,   130,   146,   147,   234,   222,
-     372,   105,   390,   149,    78,    77,    19,    20,   163,   379,
-     164,   383,   384,   110,   110,   110,   483,   110,   110,   112,
-     113,   114,   436,   115,   116,   239,    19,    20,   138,   228,
-     462,    77,   139,   127,   110,   110,   135,   140,   162,   156,
-     133,   134,   108,   202,   159,   160,   161,   109,    77,   110,
-     110,   459,   460,   111,   111,   111,   158,   111,   111,   108,
-      19,    20,    21,    14,   109,   386,   203,   186,    77,   187,
-     130,  -243,   221,  -243,   132,   111,   204,   118,    55,   219,
-     145,   162,   119,   420,   431,   365,   208,   124,   236,   111,
-     111,   143,   505,    55,   484,   320,   130,   450,   125,   165,
-     322,   126,   499,   225,  -247,  -245,   -16,  -245,   192,   453,
-     233,    57,   301,    55,   185,   227,   440,   188,   442,   189,
-     110,   196,   209,   205,    55,   348,   235,   337,   241,   198,
-     269,   353,   270,   159,   160,   161,   271,   272,   273,   211,
-     199,    55,   274,   355,   246,   247,   248,    55,   250,   251,
-     253,   357,   200,   306,   307,   201,   159,   160,   161,   237,
-     132,   159,   160,   161,   190,   479,   191,   206,   290,   394,
-     282,   283,   284,   285,   286,   287,   288,   289,   488,   321,
-     193,   399,   377,   275,   238,   207,   223,   427,   159,   160,
-     161,   224,   159,   160,   161,   242,   226,   313,   315,   316,
-     317,   318,   319,   312,   159,   160,   161,   388,    57,   231,
-     291,   244,   159,   160,   161,   159,   160,   161,   280,   326,
-     330,   276,   401,   277,   278,   229,   159,   160,   161,   334,
-     159,   160,   161,   294,   106,   107,   309,   305,   324,   329,
-     331,   245,   159,   160,   161,   333,   335,   120,   159,   160,
-     161,   123,   328,   169,   340,   341,   128,   161,   350,   136,
-     360,   347,   142,   342,   148,   343,   150,   151,   152,   153,
-     154,   110,   159,   160,   161,   344,   345,   349,   130,   -31,
-     179,   368,   315,   371,   371,   180,   181,   182,   183,   366,
-      55,   184,   376,   381,   434,   371,   371,   385,   391,   396,
-     336,   296,   297,   298,   299,   300,   402,   308,   403,   310,
-     311,   111,   159,   160,   161,   212,   213,   214,   215,   404,
-     395,   392,   216,   439,   217,   306,   307,   443,   169,   170,
-     446,   447,   405,   228,   374,    57,   159,   160,   161,   410,
-     352,  -248,  -248,  -248,   456,   457,   184,   415,   411,   159,
-     160,   161,   412,   413,   468,   179,   159,   160,   161,   414,
-     180,   181,   182,   183,   354,   130,   184,   371,   476,   418,
-     421,   423,   478,   419,   480,   -79,   422,   424,   425,   249,
-     426,   429,   332,   254,   255,   256,   257,   258,   259,   260,
-     261,   262,   263,   264,   265,   266,   267,   268,   428,   498,
-     371,   448,   371,   466,   375,   430,   501,   437,   454,   305,
-     445,   449,   382,   455,   463,   507,   473,   474,   464,   167,
-    -248,   169,   170,   465,   471,   451,   477,   490,   482,   368,
-    -174,   481,   493,   475,   497,   495,   506,    99,   489,   186,
-     491,   187,  -174,   218,   369,   503,   486,   178,   179,   371,
-     293,   467,   122,   180,   181,   182,   183,   195,   502,   184,
-     169,   170,   371,   406,   407,   432,   408,   409,   500,  -174,
-    -174,  -174,  -174,   416,     0,     0,  -174,   304,  -174,   417,
-       0,  -174,     0,     0,     0,     0,   178,   179,  -174,  -174,
-    -174,  -174,   180,   181,   182,   183,     0,     0,   184,   159,
-     160,   161,     0,  -174,  -174,  -174,  -213,  -174,  -174,  -174,
-    -174,  -174,  -174,  -174,  -174,  -174,  -174,  -174,  -213,     0,
-       0,     0,  -174,  -174,  -174,  -174,     0,   356,  -174,  -174,
-       0,  -174,     0,     0,  -174,   212,   213,   214,   215,     0,
-       0,     0,   216,     0,   217,  -213,  -213,  -213,  -213,   159,
-     160,   161,  -213,     0,  -213,     0,   397,  -213,     1,     2,
-       3,     4,     5,     6,  -213,  -213,  -213,  -213,     0,   159,
-     160,   161,   180,   181,   182,   183,     0,   358,   184,  -213,
-    -213,  -213,     0,  -213,  -213,  -213,  -213,  -213,  -213,  -213,
-    -213,  -213,  -213,  -213,   159,   160,   161,     0,  -213,  -213,
-    -213,  -213,   -13,    79,  -213,  -213,     0,  -213,     0,     0,
-    -213,    77,     0,    16,     0,    17,    18,    19,    20,    21,
-     338,     0,    22,    23,    24,    25,    26,     0,    27,    28,
+     103,   236,   389,    57,   130,   147,   403,   148,    14,   224,
+     105,   377,   150,    78,    77,   450,   164,   194,   165,   230,
+      77,    95,   110,   110,   110,    77,   110,   110,   112,   113,
+     114,   108,   115,   116,   119,   241,   109,   138,    19,    20,
+      77,   252,   127,   110,   110,   135,   124,   163,   157,   133,
+     134,   108,   497,   348,   476,   139,   109,   118,   110,   110,
+     140,   187,   231,   188,   163,   159,  -247,  -249,  -247,  -249,
+      19,    20,    21,   385,   399,   473,   474,    19,    20,   130,
+     125,   126,   187,   391,   188,  -251,   396,   397,  -247,   223,
+    -247,  -249,   445,  -249,   512,   210,   -16,   238,   186,  -222,
+     330,   193,   246,   378,   247,   130,   464,   166,   221,   332,
+     197,  -221,   227,    55,   361,   350,   518,   467,   199,   235,
+      57,  -223,   310,   211,   229,    55,  -225,  -224,   200,   110,
+     498,   366,   189,    55,   190,   237,   201,   368,   249,   304,
+     305,   306,   307,   309,   370,   317,   318,   202,   320,   321,
+     160,   161,   162,   143,   254,   255,   256,    55,   258,   259,
+     261,   434,   144,   315,    55,   316,  -252,  -252,  -252,   185,
+     160,   161,   162,   160,   161,   162,   160,   161,   162,   298,
+     290,   291,   292,   293,   294,   295,   296,   297,   208,   191,
+     331,   192,   160,   161,   162,   454,   455,   389,   160,   161,
+     162,   240,   408,   213,   209,   160,   161,   162,   323,   325,
+     326,   327,   328,   329,   322,   106,   107,   225,   226,    57,
+     413,   228,   239,   441,   481,   233,   250,   401,   120,   299,
+     252,   340,   123,   302,   203,   308,   343,   128,   415,   319,
+     136,   334,   336,   142,   339,   149,   347,   151,   152,   153,
+     154,   155,   341,   346,   277,   348,   278,   502,   204,   395,
+     279,   280,   281,   160,   161,   162,   282,   205,   162,    55,
+     373,   353,   354,   355,   160,   161,   162,   315,   360,   316,
+     356,   160,   161,   162,   160,   161,   162,   357,   110,   358,
+     362,   160,   161,   162,   160,   161,   162,   130,   381,   325,
+     384,   384,   349,   214,   215,   216,   217,   283,   379,    55,
+     218,   393,   219,   420,   384,   384,   422,   423,   448,   365,
+     253,   398,   111,   111,   111,   363,   111,   111,   430,   160,
+     161,   162,   160,   161,   162,   -31,   388,   160,   161,   162,
+     405,   243,   409,   132,   111,   284,   404,   285,   286,   146,
+     410,   230,   160,   161,   162,   338,   424,    57,   111,   111,
+     367,   257,   416,   -79,   417,   262,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
+     369,   479,   160,   161,   162,   160,   161,   162,   130,   384,
+     418,   453,   207,   437,   456,   487,   488,   419,   460,   461,
+     425,   426,   160,   161,   162,   427,   428,   496,   429,   431,
+     371,   345,   470,   471,   160,   161,   162,   503,   504,   160,
+     161,   162,   482,   384,   384,   462,   432,   170,   171,   132,
+     412,   513,   468,   435,   436,   440,   490,   438,  -175,   442,
+     492,   493,   439,   443,   451,   351,   245,   187,   465,   188,
+    -175,   381,   384,   179,   180,   459,   444,   489,   506,   181,
+     458,   463,   182,   183,   184,   185,   168,   169,   170,   171,
+     500,   469,   477,   478,   515,   485,   491,  -175,  -175,  -175,
+    -175,   507,   520,   494,  -175,   384,  -175,   495,   288,  -175,
+     509,   511,   514,   178,   179,   180,  -175,  -175,  -175,  -175,
+     181,   519,    99,   182,   183,   184,   185,   314,   220,   382,
+     480,  -175,  -175,  -175,   301,  -175,  -175,  -175,  -175,  -175,
+    -175,  -175,  -175,  -175,  -175,  -175,   168,   169,   170,   171,
+    -175,   516,   122,  -175,  -175,  -175,  -175,  -175,   196,  -175,
+     421,  -252,  -175,   170,   171,  -214,   160,   161,   162,   344,
+     411,   176,   177,   178,   179,   180,   446,  -214,   244,   394,
+     181,   313,   170,   182,   183,   184,   185,     0,     0,   179,
+     180,     0,   364,     0,     0,   181,     0,     0,   182,   183,
+     184,   185,     0,     0,  -214,  -214,  -214,  -214,   111,   180,
+       0,  -214,     0,  -214,   181,     0,  -214,   182,   183,   184,
+     185,     0,     0,  -214,  -214,  -214,  -214,   160,   161,   162,
+       0,     0,   387,   160,   161,   162,     0,     0,  -214,  -214,
+    -214,   314,  -214,  -214,  -214,  -214,  -214,  -214,  -214,  -214,
+    -214,  -214,  -214,   406,     0,     0,     0,  -214,     0,   407,
+    -214,  -214,  -214,  -214,  -214,     0,  -214,   -13,    79,  -214,
+       0,     0,     0,     0,     0,     0,    77,     0,    16,     0,
+      17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
+      25,    26,     0,    27,    28,    29,    30,    31,    32,    80,
+      98,    81,    82,    33,    83,    84,    85,    86,    87,    88,
+     170,   171,     0,    89,    90,    91,    92,    34,     0,    35,
+      36,    37,    38,    39,    40,   160,   161,   162,     0,    41,
+      42,    43,    44,    45,    46,    47,     0,   180,     0,     0,
+       0,     0,   181,    48,     0,   182,   183,   184,   185,     0,
+       0,   414,     0,     0,     0,    49,    50,     0,    51,     0,
+      52,    53,    -3,    79,     0,     0,     0,    54,    93,    55,
+      56,    77,     0,    16,     0,    17,    18,    19,    20,    21,
+       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
       29,    30,    31,    32,    80,    98,    81,    82,    33,    83,
-      84,    85,    86,    87,    88,   159,   160,   161,    89,    90,
+      84,    85,    86,    87,    88,     0,     0,     0,    89,    90,
       91,    92,    34,     0,    35,    36,    37,    38,    39,    40,
-     159,   160,   161,     0,    41,    42,    43,    44,    45,    46,
-      47,     0,     0,   398,     0,     0,     0,     0,    48,     0,
-     159,   160,   161,     0,     0,     0,   351,     0,     0,     0,
-      49,    50,    51,   159,   160,   161,     0,     0,    52,    53,
-      -3,    79,    54,    93,    55,    56,   393,     0,     0,    77,
-       0,    16,     0,    17,    18,    19,    20,    21,     0,   400,
-      22,    23,    24,    25,    26,     0,    27,    28,    29,    30,
-      31,    32,    80,    98,    81,    82,    33,    83,    84,    85,
-      86,    87,    88,     0,     0,     0,    89,    90,    91,    92,
-      34,     0,    35,    36,    37,    38,    39,    40,     0,     0,
-       0,     0,    41,    42,    43,    44,    45,    46,    47,     0,
-       0,     0,   179,     0,     0,     0,    48,   180,   181,   182,
-     183,     0,     0,   184,     0,     0,     0,     0,    49,    50,
-      51,     0,     0,     0,     0,     0,    52,    53,    79,     0,
-      54,    93,    55,    56,     0,     0,    77,   359,    16,     0,
+       0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
+      47,   180,     0,     0,     0,     0,   181,     0,    48,   182,
+     183,   184,   185,   181,     0,     0,   182,   183,   184,   185,
+      49,    50,     0,    51,     0,    52,    53,     0,    79,     0,
+       0,     0,    54,    93,    55,    56,    77,   372,    16,     0,
+      17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
+      25,    26,     0,    27,    28,    29,    30,    31,    32,    80,
+      98,    81,    82,    33,    83,    84,    85,    86,    87,    88,
+       0,     0,     0,    89,    90,    91,    92,    34,     0,    35,
+      36,    37,    38,    39,    40,     0,     0,     0,     0,    41,
+      42,    43,    44,    45,    46,    47,     1,     2,     3,     4,
+       5,     6,     0,    48,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    49,    50,     0,    51,     0,
+      52,    53,     0,    79,     0,     0,     0,    54,    93,    55,
+      56,    77,   483,    16,     0,    17,    18,    19,    20,    21,
+       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
+      29,    30,    31,    32,    80,    98,    81,    82,    33,    83,
+      84,    85,    86,    87,    88,     0,     0,     0,    89,    90,
+      91,    92,    34,     0,    35,    36,    37,    38,    39,    40,
+       0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
+      47,     0,     0,     0,     0,     0,     0,     0,    48,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      49,    50,     0,    51,     0,    52,    53,     0,    79,     0,
+       0,     0,    54,    93,    55,    56,    77,   486,    16,     0,
       17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
       25,    26,     0,    27,    28,    29,    30,    31,    32,    80,
       98,    81,    82,    33,    83,    84,    85,    86,    87,    88,
@@ -576,132 +423,149 @@ static const yytype_int16 yytable[] =
       36,    37,    38,    39,    40,     0,     0,     0,     0,    41,
       42,    43,    44,    45,    46,    47,     0,     0,     0,     0,
        0,     0,     0,    48,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    49,    50,    51,     0,     0,
-       0,     0,     0,    52,    53,    79,     0,    54,    93,    55,
-      56,     0,     0,    77,   469,    16,     0,    17,    18,    19,
-      20,    21,     0,     0,    22,    23,    24,    25,    26,     0,
-      27,    28,    29,    30,    31,    32,    80,    98,    81,    82,
-      33,    83,    84,    85,    86,    87,    88,     0,     0,     0,
-      89,    90,    91,    92,    34,     0,    35,    36,    37,    38,
-      39,    40,     0,     0,     0,     0,    41,    42,    43,    44,
-      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
-      48,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    49,    50,    51,     0,     0,     0,     0,     0,
-      52,    53,    79,     0,    54,    93,    55,    56,     0,     0,
-      77,   472,    16,     0,    17,    18,    19,    20,    21,     0,
-       0,    22,    23,    24,    25,    26,     0,    27,    28,    29,
-      30,    31,    32,    80,    98,    81,    82,    33,    83,    84,
-      85,    86,    87,    88,     0,     0,     0,    89,    90,    91,
-      92,    34,     0,    35,    36,    37,    38,    39,    40,     0,
-       0,     0,     0,    41,    42,    43,    44,    45,    46,    47,
-       0,     0,     0,     0,     0,     0,     0,    48,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    49,
-      50,    51,     0,     0,     0,     0,     0,    52,    53,    79,
-       0,    54,    93,    55,    56,     0,     0,    77,   487,    16,
-       0,    17,    18,    19,    20,    21,     0,     0,    22,    23,
-      24,    25,    26,     0,    27,    28,    29,    30,    31,    32,
-      80,    98,    81,    82,    33,    83,    84,    85,    86,    87,
-      88,     0,     0,     0,    89,    90,    91,    92,    34,     0,
-      35,    36,    37,    38,    39,    40,     0,     0,     0,     0,
-      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
-       0,     0,     0,     0,    48,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    49,    50,    51,     0,
-       0,     0,     0,     0,    52,    53,    79,     0,    54,    93,
-      55,    56,     0,     0,    77,   496,    16,     0,    17,    18,
-      19,    20,    21,     0,     0,    22,    23,    24,    25,    26,
-       0,    27,    28,    29,    30,    31,    32,    80,    98,    81,
-      82,    33,    83,    84,    85,    86,    87,    88,     0,     0,
-       0,    89,    90,    91,    92,    34,     0,    35,    36,    37,
-      38,    39,    40,     0,     0,     0,     0,    41,    42,    43,
-      44,    45,    46,    47,     0,     0,     0,     0,     0,     0,
-       0,    48,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    49,    50,    51,     0,     0,     0,     0,
-       0,    52,    53,    79,     0,    54,    93,    55,    56,     0,
-       0,    77,     0,    16,     0,    17,    18,    19,    20,    21,
+       0,     0,     0,     0,     0,    49,    50,     0,    51,     0,
+      52,    53,     0,    79,     0,     0,     0,    54,    93,    55,
+      56,    77,   501,    16,     0,    17,    18,    19,    20,    21,
        0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
       29,    30,    31,    32,    80,    98,    81,    82,    33,    83,
       84,    85,    86,    87,    88,     0,     0,     0,    89,    90,
       91,    92,    34,     0,    35,    36,    37,    38,    39,    40,
        0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
-      47,     0,     0,   504,     0,     0,     0,     0,    48,     0,
+      47,     0,     0,     0,     0,     0,     0,     0,    48,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      49,    50,    51,     0,     0,     0,     0,     0,    52,    53,
-      79,     0,    54,    93,    55,    56,     0,     0,    77,     0,
-      16,     0,    17,    18,    19,    20,    21,     0,     0,    22,
-      23,    24,    25,    26,     0,    27,    28,    29,    30,    31,
-      32,    80,    98,    81,    82,    33,    83,    84,    85,    86,
-      87,    88,     0,     0,     0,    89,    90,    91,    92,    34,
-       0,    35,    36,    37,    38,    39,    40,     0,     0,     0,
-       0,    41,    42,    43,    44,    45,    46,    47,     0,     0,
-       0,     0,     0,     0,     0,    48,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    49,    50,    51,
-       0,     0,     0,     0,     0,    52,    53,    79,     0,    54,
-      93,    55,    56,     0,     0,    77,     0,    16,     0,    17,
+      49,    50,     0,    51,     0,    52,    53,     0,    79,     0,
+       0,     0,    54,    93,    55,    56,    77,   510,    16,     0,
+      17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
+      25,    26,     0,    27,    28,    29,    30,    31,    32,    80,
+      98,    81,    82,    33,    83,    84,    85,    86,    87,    88,
+       0,     0,     0,    89,    90,    91,    92,    34,     0,    35,
+      36,    37,    38,    39,    40,     0,     0,     0,     0,    41,
+      42,    43,    44,    45,    46,    47,     0,     0,     0,     0,
+       0,     0,     0,    48,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    49,    50,     0,    51,     0,
+      52,    53,     0,    79,     0,     0,     0,    54,    93,    55,
+      56,    77,     0,    16,     0,    17,    18,    19,    20,    21,
+       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
+      29,    30,    31,    32,    80,    98,    81,    82,    33,    83,
+      84,    85,    86,    87,    88,     0,     0,     0,    89,    90,
+      91,    92,    34,     0,    35,    36,    37,    38,    39,    40,
+       0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
+      47,     0,     0,   517,     0,     0,     0,     0,    48,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      49,    50,     0,    51,     0,    52,    53,     0,    79,     0,
+       0,     0,    54,    93,    55,    56,    77,     0,    16,     0,
+      17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
+      25,    26,     0,    27,    28,    29,    30,    31,    32,    80,
+      98,    81,    82,    33,    83,    84,    85,    86,    87,    88,
+       0,     0,     0,    89,    90,    91,    92,    34,     0,    35,
+      36,    37,    38,    39,    40,     0,     0,     0,     0,    41,
+      42,    43,    44,    45,    46,    47,     0,     0,     0,     0,
+       0,     0,     0,    48,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    49,    50,     0,    51,     0,
+      52,    53,     0,    79,     0,     0,     0,    54,    93,    55,
+      56,    77,     0,    16,     0,    17,    18,    19,    20,    21,
+       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
+      29,    30,    31,    32,    80,     0,    81,    82,    33,    83,
+      84,    85,    86,    87,    88,     0,     0,     0,    89,    90,
+      91,    92,    34,     0,    35,    36,    37,    38,    39,    40,
+       0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
+      47,     0,     0,     0,     0,     0,     0,     0,    48,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      49,    50,     0,    51,     0,    52,    53,    79,     0,     0,
+       0,     0,    54,    93,    55,    56,     0,    16,     0,    17,
       18,    19,    20,    21,     0,     0,    22,    23,    24,    25,
-      26,     0,    27,    28,    29,    30,    31,    32,    80,     0,
-      81,    82,    33,    83,    84,    85,    86,    87,    88,     0,
-       0,     0,    89,    90,    91,    92,    34,     0,    35,    36,
+      26,     0,    27,    28,    29,    30,    31,    32,     0,     0,
+       0,     0,    33,     0,     0,  -252,     0,     0,     0,     0,
+       0,     0,   168,   169,   170,   171,    34,     0,    35,    36,
+      37,    38,    39,    40,     0,     0,     0,     0,    41,    42,
+      43,    44,    45,    46,    47,   174,   175,   176,   177,   178,
+     179,   180,    48,     0,     0,     0,   181,     0,     0,   182,
+     183,   184,   185,     0,    49,    50,     0,    51,     0,    52,
+      53,    79,     0,     0,     0,     0,    54,   -74,    55,    56,
+       0,    16,     0,    17,    18,    19,    20,    21,     0,     0,
+      22,    23,    24,    25,    26,     0,    27,    28,    29,    30,
+      31,    32,     0,     0,     0,     0,    33,     0,     0,     0,
+       0,     0,     0,   168,   169,   170,   171,     0,     0,     0,
+      34,     0,    35,    36,    37,    38,    39,    40,     0,     0,
+       0,     0,    41,    42,    43,    44,    45,    46,    47,   177,
+     178,   179,   180,     0,     0,     0,    48,   181,     0,     0,
+     182,   183,   184,   185,     0,     0,     0,     0,    49,    50,
+       0,    51,     0,    52,    53,     0,     0,     0,     0,   -74,
+      54,     0,    55,    56,    77,     0,    16,     0,    17,    18,
+      19,    20,    21,     0,     0,   129,    23,    24,    25,    26,
+     109,    27,    28,    29,    30,    31,    32,     0,     0,     0,
+       0,    33,     0,     0,     0,     0,   168,  -252,   170,   171,
+       0,     0,     0,     0,     0,    34,     0,    35,    36,    37,
+      38,    39,    40,     0,     0,     0,     0,    41,    42,    43,
+      44,    45,    46,    47,   179,   180,     0,     0,     0,     0,
+     181,    48,     0,   182,   183,   184,   185,     0,     0,     0,
+       0,     0,     0,    49,    50,     0,    51,     0,    52,    53,
+       0,     0,     0,     0,     0,    54,     0,    55,    56,    77,
+       0,    16,     0,    17,    18,    19,    20,    21,     0,     0,
+      22,    23,    24,    25,    26,     0,    27,    28,    29,    30,
+      31,    32,     0,     0,     0,     0,    33,     0,     0,     0,
+       0,   168,   169,   170,   171,     0,     0,     0,     0,     0,
+      34,     0,    35,    36,    37,    38,    39,    40,     0,     0,
+       0,     0,    41,    42,    43,    44,    45,    46,    47,   179,
+     180,     0,     0,     0,     0,   181,    48,     0,   182,   183,
+     184,   185,     0,     0,     0,     0,     0,     0,    49,    50,
+       0,    51,     0,    52,    53,     0,     0,     0,     0,     0,
+      54,     0,    55,    56,    16,   104,    17,    18,    19,    20,
+      21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
+      28,    29,    30,    31,    32,     0,     0,     0,     0,    33,
+     214,   215,   216,   217,     0,     0,     0,   218,     0,   219,
+       0,     0,     0,    34,     0,    35,    36,    37,    38,    39,
+      40,     0,     0,     0,     0,    41,    42,    43,    44,    45,
+      46,    47,     0,     0,   160,   161,   162,     0,     0,    48,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    49,    50,     0,    51,     0,    52,    53,     0,     0,
+       0,     0,     0,    54,     0,    55,    56,    16,     0,    17,
+      18,    19,    20,    21,     0,     0,    22,    23,    24,    25,
+      26,     0,    27,    28,    29,    30,    31,    32,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    34,     0,    35,    36,
       37,    38,    39,    40,     0,     0,     0,     0,    41,    42,
       43,    44,    45,    46,    47,     0,     0,     0,     0,     0,
        0,     0,    48,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    49,    50,    51,     0,     0,     0,
-      79,     0,    52,    53,     0,     0,    54,    93,    55,    56,
+       0,     0,     0,     0,    49,    50,     0,    51,     0,    52,
+      53,     0,     0,     0,     0,     0,    54,   137,    55,    56,
       16,     0,    17,    18,    19,    20,    21,     0,     0,    22,
       23,    24,    25,    26,     0,    27,    28,    29,    30,    31,
-      32,     0,     0,     0,     0,    33,     0,     0,  -248,     0,
-       0,     0,     0,     0,     0,   167,   168,   169,   170,    34,
+      32,     0,     0,     0,     0,    33,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
        0,    35,    36,    37,    38,    39,    40,     0,     0,     0,
-       0,    41,    42,    43,    44,    45,    46,    47,   173,   174,
-     175,   176,   177,   178,   179,    48,     0,     0,     0,   180,
-     181,   182,   183,     0,     0,   184,     0,    49,    50,    51,
-       0,     0,     0,    79,     0,    52,    53,     0,     0,    54,
-     -74,    55,    56,    16,     0,    17,    18,    19,    20,    21,
-       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
-      29,    30,    31,    32,     0,     0,     0,     0,    33,     0,
-       0,     0,     0,     0,     0,     0,   167,   168,   169,   170,
-       0,     0,    34,     0,    35,    36,    37,    38,    39,    40,
-       0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
-      47,   175,   176,   177,   178,   179,     0,     0,    48,     0,
-     180,   181,   182,   183,     0,     0,   184,     0,     0,     0,
-      49,    50,    51,     0,     0,     0,     0,     0,    52,    53,
-       0,   -74,    54,     0,    55,    56,    77,     0,    16,     0,
-      17,    18,    19,    20,    21,     0,     0,   129,    23,    24,
-      25,    26,   109,    27,    28,    29,    30,    31,    32,     0,
-       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
-     167,   168,   169,   170,     0,     0,     0,    34,     0,    35,
-      36,    37,    38,    39,    40,     0,     0,     0,     0,    41,
-      42,    43,    44,    45,    46,    47,   176,   177,   178,   179,
-       0,     0,     0,    48,   180,   181,   182,   183,     0,     0,
-     184,     0,     0,     0,     0,    49,    50,    51,     0,     0,
-       0,     0,     0,    52,    53,     0,     0,    54,     0,    55,
-      56,    77,     0,    16,     0,    17,    18,    19,    20,    21,
+       0,    41,    42,    43,    44,    45,    46,    47,     0,     0,
+       0,     0,     0,     0,     0,    48,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    49,    50,     0,
+      51,     0,    52,    53,     0,     0,     0,     0,   156,    54,
+       0,    55,    56,    16,     0,    17,    18,    19,    20,    21,
        0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
       29,    30,    31,    32,     0,     0,     0,     0,    33,     0,
-       0,     0,     0,     0,     0,   167,   168,   169,   170,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    34,     0,    35,    36,    37,    38,    39,    40,
        0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
-      47,     0,   177,   178,   179,     0,     0,     0,    48,   180,
-     181,   182,   183,     0,     0,   184,     0,     0,     0,     0,
-      49,    50,    51,     0,     0,     0,     0,     0,    52,    53,
-       0,     0,    54,     0,    55,    56,    16,   104,    17,    18,
+      47,     0,     0,     0,     0,     0,     0,     0,    48,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      49,    50,     0,    51,     0,    52,    53,     0,     0,     0,
+       0,   234,    54,     0,    55,    56,    16,     0,    17,    18,
       19,    20,    21,     0,     0,    22,    23,    24,    25,    26,
        0,    27,    28,    29,    30,    31,    32,     0,     0,     0,
-       0,    33,     0,     0,     0,     0,     0,     0,   167,   168,
-     169,   170,     0,     0,     0,    34,     0,    35,    36,    37,
+       0,    33,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    34,     0,    35,    36,    37,
       38,    39,    40,     0,     0,     0,     0,    41,    42,    43,
-      44,    45,    46,    47,     0,     0,   178,   179,     0,     0,
-       0,    48,   180,   181,   182,   183,     0,     0,   184,     0,
-       0,     0,     0,    49,    50,    51,     0,     0,     0,     0,
-       0,    52,    53,     0,     0,    54,     0,    55,    56,    16,
+      44,    45,    46,    47,     0,     0,     0,     0,     0,     0,
+       0,    48,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    49,    50,     0,    51,     0,    52,    53,
+       0,     0,     0,     0,   248,    54,     0,    55,    56,    16,
        0,    17,    18,    19,    20,    21,     0,     0,    22,    23,
       24,    25,    26,     0,    27,    28,    29,    30,    31,    32,
        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
-       0,  -248,     0,   169,   170,     0,     0,     0,    34,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
       35,    36,    37,    38,    39,    40,     0,     0,     0,     0,
-      41,    42,    43,    44,    45,    46,    47,     0,     0,   178,
-     179,     0,     0,     0,    48,   180,   181,   182,   183,     0,
-       0,   184,     0,     0,     0,     0,    49,    50,    51,     0,
-       0,     0,     0,     0,    52,    53,     0,     0,    54,   137,
+      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
+       0,     0,     0,     0,    48,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    49,    50,     0,    51,
+       0,    52,    53,     0,     0,     0,     0,   260,    54,     0,
       55,    56,    16,     0,    17,    18,    19,    20,    21,     0,
        0,    22,    23,    24,    25,    26,     0,    27,    28,    29,
       30,    31,    32,     0,     0,     0,     0,    33,     0,     0,
@@ -710,8 +574,8 @@ static const yytype_int16 yytable[] =
        0,     0,     0,    41,    42,    43,    44,    45,    46,    47,
        0,     0,     0,     0,     0,     0,     0,    48,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    49,
-      50,    51,     0,     0,     0,     0,     0,    52,    53,     0,
-     155,    54,     0,    55,    56,    16,     0,    17,    18,    19,
+      50,     0,    51,     0,    52,    53,     0,     0,     0,     0,
+     289,    54,     0,    55,    56,    16,     0,    17,    18,    19,
       20,    21,     0,     0,    22,    23,    24,    25,    26,     0,
       27,    28,    29,    30,    31,    32,     0,     0,     0,     0,
       33,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -719,8 +583,8 @@ static const yytype_int16 yytable[] =
       39,    40,     0,     0,     0,     0,    41,    42,    43,    44,
       45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
       48,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    49,    50,    51,     0,     0,     0,     0,     0,
-      52,    53,     0,   232,    54,     0,    55,    56,    16,     0,
+       0,     0,    49,    50,     0,    51,     0,    52,    53,     0,
+       0,     0,     0,   342,    54,     0,    55,    56,    16,     0,
       17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
       25,    26,     0,    27,    28,    29,    30,    31,    32,     0,
        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
@@ -728,8 +592,8 @@ static const yytype_int16 yytable[] =
       36,    37,    38,    39,    40,     0,     0,     0,     0,    41,
       42,    43,    44,    45,    46,    47,     0,     0,     0,     0,
        0,     0,     0,    48,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    49,    50,    51,     0,     0,
-       0,     0,     0,    52,    53,     0,   240,    54,     0,    55,
+       0,     0,     0,     0,     0,    49,    50,     0,    51,     0,
+      52,    53,     0,     0,     0,     0,   359,    54,     0,    55,
       56,    16,     0,    17,    18,    19,    20,    21,     0,     0,
       22,    23,    24,    25,    26,     0,    27,    28,    29,    30,
       31,    32,     0,     0,     0,     0,    33,     0,     0,     0,
@@ -738,7 +602,7 @@ static const yytype_int16 yytable[] =
        0,     0,    41,    42,    43,    44,    45,    46,    47,     0,
        0,     0,     0,     0,     0,     0,    48,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    49,    50,
-      51,     0,     0,     0,     0,     0,    52,    53,     0,   252,
+       0,    51,     0,    52,    53,     0,     0,     0,     0,     0,
       54,     0,    55,    56,    16,     0,    17,    18,    19,    20,
       21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
       28,    29,    30,    31,    32,     0,     0,     0,     0,    33,
@@ -746,125 +610,128 @@ static const yytype_int16 yytable[] =
        0,     0,     0,    34,     0,    35,    36,    37,    38,    39,
       40,     0,     0,     0,     0,    41,    42,    43,    44,    45,
       46,    47,     0,     0,     0,     0,     0,     0,     0,    48,
+     167,     0,     0,     0,     0,     0,     0,   168,   169,   170,
+     171,    49,    50,     0,    51,     0,    52,    53,     0,     0,
+       0,     0,     0,   242,     0,    55,    56,   172,   173,   352,
+     174,   175,   176,   177,   178,   179,   180,     0,     0,     0,
+       0,   181,   167,     0,   182,   183,   184,   185,     0,   168,
+     169,   170,   171,     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,     0,   181,   167,     0,   182,   183,   184,   185,
+       0,   168,   169,   170,   171,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    49,    50,    51,     0,     0,     0,     0,     0,    52,
-      53,     0,   281,    54,     0,    55,    56,    16,     0,    17,
-      18,    19,    20,    21,     0,     0,    22,    23,    24,    25,
-      26,     0,    27,    28,    29,    30,    31,    32,     0,     0,
-       0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    34,     0,    35,    36,
-      37,    38,    39,    40,     0,     0,     0,     0,    41,    42,
-      43,    44,    45,    46,    47,     0,     0,     0,     0,     0,
-       0,     0,    48,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    49,    50,    51,     0,     0,     0,
-       0,     0,    52,    53,     0,   346,    54,     0,    55,    56,
-      16,     0,    17,    18,    19,    20,    21,     0,     0,    22,
-      23,    24,    25,    26,     0,    27,    28,    29,    30,    31,
-      32,     0,     0,     0,     0,    33,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
-       0,    35,    36,    37,    38,    39,    40,     0,     0,     0,
-       0,    41,    42,    43,    44,    45,    46,    47,     0,     0,
-       0,     0,     0,     0,     0,    48,   166,     0,     0,     0,
-       0,     0,     0,   167,   168,   169,   170,    49,    50,    51,
-       0,     0,     0,     0,     0,    52,    53,     0,     0,    54,
-       0,    55,    56,   171,   172,   339,   173,   174,   175,   176,
-     177,   178,   179,     0,     0,     0,     0,   180,   181,   182,
-     183,   166,     0,   184,     0,     0,     0,     0,   167,   168,
-     169,   170,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   171,   172,
-       0,   173,   174,   175,   176,   177,   178,   179,     0,     0,
-       0,     0,   180,   181,   182,   183,   166,     0,   184,     0,
-       0,     0,     0,   167,   168,   169,   170,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   172,     0,   173,   174,   175,   176,
-     177,   178,   179,     0,     0,     0,     0,   180,   181,   182,
-     183,     0,     0,   184
+       0,     0,   173,     0,   174,   175,   176,   177,   178,   179,
+     180,     0,     0,     0,     0,   181,     0,     0,   182,   183,
+     184,   185
 };
 
 static const yytype_int16 yycheck[] =
 {
-      15,   308,    11,     9,     9,    40,    46,    46,   126,   115,
-     299,    16,   325,    48,    10,     9,    15,    16,     9,   308,
-      11,   310,   311,    19,    20,    21,    23,    23,    24,    19,
-      20,    21,   412,    23,    24,   141,    15,    16,    43,    23,
-     439,     9,    20,    39,    40,    41,    42,    25,    77,    54,
-      40,    41,    20,    67,    73,    74,    75,    25,     9,    55,
-      56,    43,    44,    19,    20,    21,    56,    23,    24,    20,
-      15,    16,    17,     0,    25,   104,    90,     9,     9,    11,
-     115,     9,    12,    11,    40,    41,   100,    11,   102,    98,
-      46,    77,   100,   382,   407,   101,    92,   100,   133,    55,
-      56,   100,   501,   102,   101,   223,   141,   101,   100,   100,
-      12,   100,   492,   118,     9,     9,   100,    11,     9,   432,
-     125,   126,    67,   102,   100,   121,   415,     9,   417,    11,
-     126,    20,    45,    89,   102,   103,   126,    12,   143,   100,
-       9,    12,    11,    73,    74,    75,    15,    16,    17,   101,
-     100,   102,    21,    12,   159,   160,   161,   102,   163,   164,
-     165,    12,   100,   203,   203,   100,    73,    74,    75,    10,
-     126,    73,    74,    75,     9,   464,    11,   100,   193,    12,
-     185,   186,   187,   188,   189,   190,   191,   192,   477,   224,
-      77,    12,   499,    62,   101,   100,   100,    12,    73,    74,
-      75,   100,    73,    74,    75,    69,    99,   212,   213,   214,
-     215,   216,   217,   209,    73,    74,    75,   323,   223,    99,
-      20,    11,    73,    74,    75,    73,    74,    75,   184,    69,
-     235,   100,   350,   102,   103,   122,    73,    74,    75,   244,
-      73,    74,    75,    20,    17,    18,   100,   203,   100,    99,
-      10,    99,    73,    74,    75,    23,    11,    30,    73,    74,
-      75,    34,    99,    60,   269,   270,    39,    75,   100,    42,
-      18,   276,    45,   103,    47,   103,    49,    50,    51,    52,
-      53,   277,    73,    74,    75,   103,   103,   103,   323,   100,
-      87,   296,   297,   298,   299,    92,    93,    94,    95,    20,
-     102,    98,   100,   308,   410,   310,   311,    99,    23,    10,
-     101,   198,   199,   200,   201,   202,    10,   204,    10,   206,
-     207,   277,    73,    74,    75,    39,    40,    41,    42,    10,
-     335,   327,    46,   414,    48,   375,   375,   418,    60,    61,
-     421,   422,    10,    23,   300,   350,    73,    74,    75,    20,
-     101,    93,    94,    95,   435,   436,    98,   100,    99,    73,
-      74,    75,    99,    99,   445,    87,    73,    74,    75,    99,
-      92,    93,    94,    95,   101,   410,    98,   382,   459,    99,
-      99,   386,   463,   101,   465,    99,    99,    99,    99,   162,
-       9,    99,    99,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   179,   180,    10,   490,
-     415,   426,   417,   443,   301,   101,   497,     9,   433,   375,
-      99,    71,   309,   101,    99,   506,   456,   457,   100,    58,
-      59,    60,    61,    99,     9,   431,   100,    99,   468,   444,
-       0,   101,    70,   458,    99,    19,    99,    12,   478,     9,
-     480,    11,    12,    98,   297,   499,   471,    86,    87,   464,
-     195,   444,    33,    92,    93,    94,    95,    82,   498,    98,
-      60,    61,   477,   360,   362,   408,   363,   364,   493,    39,
-      40,    41,    42,   375,    -1,    -1,    46,   203,    48,   376,
-      -1,    51,    -1,    -1,    -1,    -1,    86,    87,    58,    59,
-      60,    61,    92,    93,    94,    95,    -1,    -1,    98,    73,
-      74,    75,    -1,    73,    74,    75,     0,    77,    78,    79,
-      80,    81,    82,    83,    84,    85,    86,    87,    12,    -1,
-      -1,    -1,    92,    93,    94,    95,    -1,   101,    98,    99,
-      -1,   101,    -1,    -1,   104,    39,    40,    41,    42,    -1,
-      -1,    -1,    46,    -1,    48,    39,    40,    41,    42,    73,
-      74,    75,    46,    -1,    48,    -1,   339,    51,     3,     4,
-       5,     6,     7,     8,    58,    59,    60,    61,    -1,    73,
-      74,    75,    92,    93,    94,    95,    -1,   101,    98,    73,
-      74,    75,    -1,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    73,    74,    75,    -1,    92,    93,
-      94,    95,     0,     1,    98,    99,    -1,   101,    -1,    -1,
-     104,     9,    -1,    11,    -1,    13,    14,    15,    16,    17,
-      99,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
+      15,   126,   317,     9,    40,    46,   335,    46,     0,   115,
+      16,     9,    48,    10,     9,   426,     9,    77,    11,    23,
+       9,    11,    19,    20,    21,     9,    23,    24,    19,    20,
+      21,    20,    23,    24,   100,   141,    25,    43,    15,    16,
+       9,    11,    39,    40,    41,    42,   100,    77,    54,    40,
+      41,    20,    23,    11,   453,    20,    25,    11,    55,    56,
+      25,     9,   122,    11,    77,    56,     9,     9,    11,    11,
+      15,    16,    17,   307,   104,    43,    44,    15,    16,   115,
+     100,   100,     9,   317,    11,     9,   320,   321,     9,    12,
+      11,     9,   421,    11,   505,    92,   100,   133,   100,    69,
+     225,     9,   143,   101,   143,   141,   101,   100,    98,    12,
+      20,    69,   118,   102,   103,    12,   515,   446,   100,   125,
+     126,    69,    67,    45,   121,   102,    69,    69,   100,   126,
+     101,    12,     9,   102,    11,   126,   100,    12,   144,   199,
+     200,   201,   202,   203,    12,   205,   206,   100,   208,   209,
+      73,    74,    75,    91,   160,   161,   162,   102,   164,   165,
+     166,   395,   100,   204,   102,   204,    95,    96,    97,    98,
+      73,    74,    75,    73,    74,    75,    73,    74,    75,   194,
+     186,   187,   188,   189,   190,   191,   192,   193,   100,     9,
+     226,    11,    73,    74,    75,   429,   430,   512,    73,    74,
+      75,   101,    12,   101,   100,    73,    74,    75,   214,   215,
+     216,   217,   218,   219,   211,    17,    18,   100,   100,   225,
+      12,    99,    10,    12,   458,    99,    69,   333,    30,    20,
+      11,   237,    34,    20,    67,    91,   242,    39,   363,   100,
+      42,   100,    69,    45,    99,    47,   252,    49,    50,    51,
+      52,    53,    10,    23,     9,    11,    11,   491,    91,   319,
+      15,    16,    17,    73,    74,    75,    21,   100,    75,   102,
+      18,   277,   278,   103,    73,    74,    75,   318,   284,   318,
+     103,    73,    74,    75,    73,    74,    75,   103,   285,   103,
+     103,    73,    74,    75,    73,    74,    75,   333,   304,   305,
+     306,   307,   101,    39,    40,    41,    42,    62,    20,   102,
+      46,   317,    48,   373,   320,   321,   376,   377,   424,   101,
+      99,    99,    19,    20,    21,   100,    23,    24,   388,    73,
+      74,    75,    73,    74,    75,   100,   100,    73,    74,    75,
+     337,   143,   348,    40,    41,   100,    23,   102,   103,    46,
+      10,    23,    73,    74,    75,    99,    20,   363,    55,    56,
+     101,   163,    10,    99,    10,   167,   168,   169,   170,   171,
+     172,   173,   174,   175,   176,   177,   178,   179,   180,   181,
+     101,   456,    73,    74,    75,    73,    74,    75,   424,   395,
+      10,   428,    89,   399,   431,   470,   471,    10,   435,   436,
+      99,    99,    73,    74,    75,    99,    99,   482,   100,    99,
+     101,    99,   449,   450,    73,    74,    75,   492,   493,    73,
+      74,    75,   459,   429,   430,   440,   101,    60,    61,   126,
+     101,   506,   447,    99,    99,     9,   473,    99,     0,    10,
+     477,   478,    99,    99,     9,    99,   143,     9,   445,    11,
+      12,   457,   458,    86,    87,    99,   101,   472,   495,    92,
+     100,    71,    95,    96,    97,    98,    58,    59,    60,    61,
+     485,   101,    99,    99,   511,     9,   100,    39,    40,    41,
+      42,    70,   519,   101,    46,   491,    48,    99,   185,    51,
+      19,    99,   507,    85,    86,    87,    58,    59,    60,    61,
+      92,    99,    12,    95,    96,    97,    98,   204,    98,   305,
+     457,    73,    74,    75,   196,    77,    78,    79,    80,    81,
+      82,    83,    84,    85,    86,    87,    58,    59,    60,    61,
+      92,   512,    33,    95,    96,    97,    98,    99,    82,   101,
+     375,    58,   104,    60,    61,     0,    73,    74,    75,   244,
+     352,    83,    84,    85,    86,    87,   422,    12,   143,   318,
+      92,   204,    60,    95,    96,    97,    98,    -1,    -1,    86,
+      87,    -1,    99,    -1,    -1,    92,    -1,    -1,    95,    96,
+      97,    98,    -1,    -1,    39,    40,    41,    42,   285,    87,
+      -1,    46,    -1,    48,    92,    -1,    51,    95,    96,    97,
+      98,    -1,    -1,    58,    59,    60,    61,    73,    74,    75,
+      -1,    -1,   309,    73,    74,    75,    -1,    -1,    73,    74,
+      75,   318,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    99,    -1,    -1,    -1,    92,    -1,    99,
+      95,    96,    97,    98,    99,    -1,   101,     0,     1,   104,
+      -1,    -1,    -1,    -1,    -1,    -1,     9,    -1,    11,    -1,
+      13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
+      23,    24,    -1,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      60,    61,    -1,    46,    47,    48,    49,    50,    -1,    52,
+      53,    54,    55,    56,    57,    73,    74,    75,    -1,    62,
+      63,    64,    65,    66,    67,    68,    -1,    87,    -1,    -1,
+      -1,    -1,    92,    76,    -1,    95,    96,    97,    98,    -1,
+      -1,    99,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,
+      93,    94,     0,     1,    -1,    -1,    -1,   100,   101,   102,
+     103,     9,    -1,    11,    -1,    13,    14,    15,    16,    17,
+      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    73,    74,    75,    46,    47,
+      38,    39,    40,    41,    42,    -1,    -1,    -1,    46,    47,
       48,    49,    50,    -1,    52,    53,    54,    55,    56,    57,
-      73,    74,    75,    -1,    62,    63,    64,    65,    66,    67,
-      68,    -1,    -1,   101,    -1,    -1,    -1,    -1,    76,    -1,
-      73,    74,    75,    -1,    -1,    -1,    99,    -1,    -1,    -1,
-      88,    89,    90,    73,    74,    75,    -1,    -1,    96,    97,
-       0,     1,   100,   101,   102,   103,    99,    -1,    -1,     9,
-      -1,    11,    -1,    13,    14,    15,    16,    17,    -1,    99,
-      20,    21,    22,    23,    24,    -1,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    -1,    -1,    -1,    46,    47,    48,    49,
-      50,    -1,    52,    53,    54,    55,    56,    57,    -1,    -1,
-      -1,    -1,    62,    63,    64,    65,    66,    67,    68,    -1,
-      -1,    -1,    87,    -1,    -1,    -1,    76,    92,    93,    94,
-      95,    -1,    -1,    98,    -1,    -1,    -1,    -1,    88,    89,
-      90,    -1,    -1,    -1,    -1,    -1,    96,    97,     1,    -1,
-     100,   101,   102,   103,    -1,    -1,     9,    10,    11,    -1,
+      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
+      68,    87,    -1,    -1,    -1,    -1,    92,    -1,    76,    95,
+      96,    97,    98,    92,    -1,    -1,    95,    96,    97,    98,
+      88,    89,    -1,    91,    -1,    93,    94,    -1,     1,    -1,
+      -1,    -1,   100,   101,   102,   103,     9,    10,    11,    -1,
+      13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
+      23,    24,    -1,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      -1,    -1,    -1,    46,    47,    48,    49,    50,    -1,    52,
+      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
+      63,    64,    65,    66,    67,    68,     3,     4,     5,     6,
+       7,     8,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,
+      93,    94,    -1,     1,    -1,    -1,    -1,   100,   101,   102,
+     103,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
+      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    -1,    -1,    -1,    46,    47,
+      48,    49,    50,    -1,    52,    53,    54,    55,    56,    57,
+      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
+      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      88,    89,    -1,    91,    -1,    93,    94,    -1,     1,    -1,
+      -1,    -1,   100,   101,   102,   103,     9,    10,    11,    -1,
       13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
       23,    24,    -1,    26,    27,    28,    29,    30,    31,    32,
       33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
@@ -872,48 +739,28 @@ static const yytype_int16 yycheck[] =
       53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
       63,    64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    90,    -1,    -1,
-      -1,    -1,    -1,    96,    97,     1,    -1,   100,   101,   102,
-     103,    -1,    -1,     9,    10,    11,    -1,    13,    14,    15,
-      16,    17,    -1,    -1,    20,    21,    22,    23,    24,    -1,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    -1,    -1,    -1,
-      46,    47,    48,    49,    50,    -1,    52,    53,    54,    55,
-      56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,
-      66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    -1,    -1,    -1,    -1,    -1,
-      96,    97,     1,    -1,   100,   101,   102,   103,    -1,    -1,
-       9,    10,    11,    -1,    13,    14,    15,    16,    17,    -1,
-      -1,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    -1,    -1,    -1,    46,    47,    48,
-      49,    50,    -1,    52,    53,    54,    55,    56,    57,    -1,
-      -1,    -1,    -1,    62,    63,    64,    65,    66,    67,    68,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,
-      89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,     1,
-      -1,   100,   101,   102,   103,    -1,    -1,     9,    10,    11,
-      -1,    13,    14,    15,    16,    17,    -1,    -1,    20,    21,
-      22,    23,    24,    -1,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    -1,    -1,    -1,    46,    47,    48,    49,    50,    -1,
-      52,    53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,
-      62,    63,    64,    65,    66,    67,    68,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    -1,
-      -1,    -1,    -1,    -1,    96,    97,     1,    -1,   100,   101,
-     102,   103,    -1,    -1,     9,    10,    11,    -1,    13,    14,
-      15,    16,    17,    -1,    -1,    20,    21,    22,    23,    24,
-      -1,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    -1,    -1,
-      -1,    46,    47,    48,    49,    50,    -1,    52,    53,    54,
-      55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,
-      65,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    90,    -1,    -1,    -1,    -1,
-      -1,    96,    97,     1,    -1,   100,   101,   102,   103,    -1,
-      -1,     9,    -1,    11,    -1,    13,    14,    15,    16,    17,
+      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,
+      93,    94,    -1,     1,    -1,    -1,    -1,   100,   101,   102,
+     103,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
+      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    -1,    -1,    -1,    46,    47,
+      48,    49,    50,    -1,    52,    53,    54,    55,    56,    57,
+      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
+      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      88,    89,    -1,    91,    -1,    93,    94,    -1,     1,    -1,
+      -1,    -1,   100,   101,   102,   103,     9,    10,    11,    -1,
+      13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
+      23,    24,    -1,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      -1,    -1,    -1,    46,    47,    48,    49,    50,    -1,    52,
+      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
+      63,    64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,
+      93,    94,    -1,     1,    -1,    -1,    -1,   100,   101,   102,
+     103,     9,    -1,    11,    -1,    13,    14,    15,    16,    17,
       -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
       38,    39,    40,    41,    42,    -1,    -1,    -1,    46,    47,
@@ -921,83 +768,120 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
       68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    76,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,
-       1,    -1,   100,   101,   102,   103,    -1,    -1,     9,    -1,
-      11,    -1,    13,    14,    15,    16,    17,    -1,    -1,    20,
-      21,    22,    23,    24,    -1,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    -1,    -1,    -1,    46,    47,    48,    49,    50,
-      -1,    52,    53,    54,    55,    56,    57,    -1,    -1,    -1,
-      -1,    62,    63,    64,    65,    66,    67,    68,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
-      -1,    -1,    -1,    -1,    -1,    96,    97,     1,    -1,   100,
-     101,   102,   103,    -1,    -1,     9,    -1,    11,    -1,    13,
+      88,    89,    -1,    91,    -1,    93,    94,    -1,     1,    -1,
+      -1,    -1,   100,   101,   102,   103,     9,    -1,    11,    -1,
+      13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
+      23,    24,    -1,    26,    27,    28,    29,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      -1,    -1,    -1,    46,    47,    48,    49,    50,    -1,    52,
+      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
+      63,    64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,
+      93,    94,    -1,     1,    -1,    -1,    -1,   100,   101,   102,
+     103,     9,    -1,    11,    -1,    13,    14,    15,    16,    17,
+      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
+      28,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    -1,    -1,    -1,    46,    47,
+      48,    49,    50,    -1,    52,    53,    54,    55,    56,    57,
+      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
+      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      88,    89,    -1,    91,    -1,    93,    94,     1,    -1,    -1,
+      -1,    -1,   100,   101,   102,   103,    -1,    11,    -1,    13,
+      14,    15,    16,    17,    -1,    -1,    20,    21,    22,    23,
+      24,    -1,    26,    27,    28,    29,    30,    31,    -1,    -1,
+      -1,    -1,    36,    -1,    -1,    51,    -1,    -1,    -1,    -1,
+      -1,    -1,    58,    59,    60,    61,    50,    -1,    52,    53,
+      54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,
+      64,    65,    66,    67,    68,    81,    82,    83,    84,    85,
+      86,    87,    76,    -1,    -1,    -1,    92,    -1,    -1,    95,
+      96,    97,    98,    -1,    88,    89,    -1,    91,    -1,    93,
+      94,     1,    -1,    -1,    -1,    -1,   100,   101,   102,   103,
+      -1,    11,    -1,    13,    14,    15,    16,    17,    -1,    -1,
+      20,    21,    22,    23,    24,    -1,    26,    27,    28,    29,
+      30,    31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,
+      -1,    -1,    -1,    58,    59,    60,    61,    -1,    -1,    -1,
+      50,    -1,    52,    53,    54,    55,    56,    57,    -1,    -1,
+      -1,    -1,    62,    63,    64,    65,    66,    67,    68,    84,
+      85,    86,    87,    -1,    -1,    -1,    76,    92,    -1,    -1,
+      95,    96,    97,    98,    -1,    -1,    -1,    -1,    88,    89,
+      -1,    91,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,
+     100,    -1,   102,   103,     9,    -1,    11,    -1,    13,    14,
+      15,    16,    17,    -1,    -1,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    -1,    -1,    -1,
+      -1,    36,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
+      -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    53,    54,
+      55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,
+      65,    66,    67,    68,    86,    87,    -1,    -1,    -1,    -1,
+      92,    76,    -1,    95,    96,    97,    98,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    -1,    91,    -1,    93,    94,
+      -1,    -1,    -1,    -1,    -1,   100,    -1,   102,   103,     9,
+      -1,    11,    -1,    13,    14,    15,    16,    17,    -1,    -1,
+      20,    21,    22,    23,    24,    -1,    26,    27,    28,    29,
+      30,    31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,
+      -1,    58,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,
+      50,    -1,    52,    53,    54,    55,    56,    57,    -1,    -1,
+      -1,    -1,    62,    63,    64,    65,    66,    67,    68,    86,
+      87,    -1,    -1,    -1,    -1,    92,    76,    -1,    95,    96,
+      97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
+      -1,    91,    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,
+     100,    -1,   102,   103,    11,    12,    13,    14,    15,    16,
+      17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
+      27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
+      39,    40,    41,    42,    -1,    -1,    -1,    46,    -1,    48,
+      -1,    -1,    -1,    50,    -1,    52,    53,    54,    55,    56,
+      57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,
+      67,    68,    -1,    -1,    73,    74,    75,    -1,    -1,    76,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    88,    89,    -1,    91,    -1,    93,    94,    -1,    -1,
+      -1,    -1,    -1,   100,    -1,   102,   103,    11,    -1,    13,
       14,    15,    16,    17,    -1,    -1,    20,    21,    22,    23,
-      24,    -1,    26,    27,    28,    29,    30,    31,    32,    -1,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    -1,
-      -1,    -1,    46,    47,    48,    49,    50,    -1,    52,    53,
+      24,    -1,    26,    27,    28,    29,    30,    31,    -1,    -1,
+      -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    53,
       54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,
       64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    88,    89,    90,    -1,    -1,    -1,
-       1,    -1,    96,    97,    -1,    -1,   100,   101,   102,   103,
+      -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,    93,
+      94,    -1,    -1,    -1,    -1,    -1,   100,   101,   102,   103,
       11,    -1,    13,    14,    15,    16,    17,    -1,    -1,    20,
       21,    22,    23,    24,    -1,    26,    27,    28,    29,    30,
-      31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    51,    -1,
-      -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,    50,
+      31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,
       -1,    52,    53,    54,    55,    56,    57,    -1,    -1,    -1,
-      -1,    62,    63,    64,    65,    66,    67,    68,    81,    82,
-      83,    84,    85,    86,    87,    76,    -1,    -1,    -1,    92,
-      93,    94,    95,    -1,    -1,    98,    -1,    88,    89,    90,
-      -1,    -1,    -1,     1,    -1,    96,    97,    -1,    -1,   100,
-     101,   102,   103,    11,    -1,    13,    14,    15,    16,    17,
-      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
-      28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
-      -1,    -1,    50,    -1,    52,    53,    54,    55,    56,    57,
-      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
-      68,    83,    84,    85,    86,    87,    -1,    -1,    76,    -1,
-      92,    93,    94,    95,    -1,    -1,    98,    -1,    -1,    -1,
-      88,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,
-      -1,    99,   100,    -1,   102,   103,     9,    -1,    11,    -1,
-      13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    -1,
-      -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,
-      58,    59,    60,    61,    -1,    -1,    -1,    50,    -1,    52,
-      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
-      63,    64,    65,    66,    67,    68,    84,    85,    86,    87,
-      -1,    -1,    -1,    76,    92,    93,    94,    95,    -1,    -1,
-      98,    -1,    -1,    -1,    -1,    88,    89,    90,    -1,    -1,
-      -1,    -1,    -1,    96,    97,    -1,    -1,   100,    -1,   102,
-     103,     9,    -1,    11,    -1,    13,    14,    15,    16,    17,
+      -1,    62,    63,    64,    65,    66,    67,    68,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,
+      91,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,   100,
+      -1,   102,   103,    11,    -1,    13,    14,    15,    16,    17,
       -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
       28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    -1,
-      -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    50,    -1,    52,    53,    54,    55,    56,    57,
       -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
-      68,    -1,    85,    86,    87,    -1,    -1,    -1,    76,    92,
-      93,    94,    95,    -1,    -1,    98,    -1,    -1,    -1,    -1,
-      88,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,
-      -1,    -1,   100,    -1,   102,   103,    11,    12,    13,    14,
+      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      88,    89,    -1,    91,    -1,    93,    94,    -1,    -1,    -1,
+      -1,    99,   100,    -1,   102,   103,    11,    -1,    13,    14,
       15,    16,    17,    -1,    -1,    20,    21,    22,    23,    24,
       -1,    26,    27,    28,    29,    30,    31,    -1,    -1,    -1,
-      -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
-      60,    61,    -1,    -1,    -1,    50,    -1,    52,    53,    54,
+      -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    53,    54,
       55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,
-      65,    66,    67,    68,    -1,    -1,    86,    87,    -1,    -1,
-      -1,    76,    92,    93,    94,    95,    -1,    -1,    98,    -1,
-      -1,    -1,    -1,    88,    89,    90,    -1,    -1,    -1,    -1,
-      -1,    96,    97,    -1,    -1,   100,    -1,   102,   103,    11,
+      65,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    -1,    91,    -1,    93,    94,
+      -1,    -1,    -1,    -1,    99,   100,    -1,   102,   103,    11,
       -1,    13,    14,    15,    16,    17,    -1,    -1,    20,    21,
       22,    23,    24,    -1,    26,    27,    28,    29,    30,    31,
       -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,
-      -1,    58,    -1,    60,    61,    -1,    -1,    -1,    50,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
       52,    53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,
-      62,    63,    64,    65,    66,    67,    68,    -1,    -1,    86,
-      87,    -1,    -1,    -1,    76,    92,    93,    94,    95,    -1,
-      -1,    98,    -1,    -1,    -1,    -1,    88,    89,    90,    -1,
-      -1,    -1,    -1,    -1,    96,    97,    -1,    -1,   100,   101,
+      62,    63,    64,    65,    66,    67,    68,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,
+      -1,    93,    94,    -1,    -1,    -1,    -1,    99,   100,    -1,
      102,   103,    11,    -1,    13,    14,    15,    16,    17,    -1,
       -1,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
       29,    30,    31,    -1,    -1,    -1,    -1,    36,    -1,    -1,
@@ -1006,7 +890,7 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    62,    63,    64,    65,    66,    67,    68,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,
-      89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,    -1,
+      89,    -1,    91,    -1,    93,    94,    -1,    -1,    -1,    -1,
       99,   100,    -1,   102,   103,    11,    -1,    13,    14,    15,
       16,    17,    -1,    -1,    20,    21,    22,    23,    24,    -1,
       26,    27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,
@@ -1015,8 +899,8 @@ static const yytype_int16 yycheck[] =
       56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,
       66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    -1,    -1,    -1,    -1,    -1,
-      96,    97,    -1,    99,   100,    -1,   102,   103,    11,    -1,
+      -1,    -1,    88,    89,    -1,    91,    -1,    93,    94,    -1,
+      -1,    -1,    -1,    99,   100,    -1,   102,   103,    11,    -1,
       13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
       23,    24,    -1,    26,    27,    28,    29,    30,    31,    -1,
       -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,
@@ -1024,8 +908,8 @@ static const yytype_int16 yycheck[] =
       53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
       63,    64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    90,    -1,    -1,
-      -1,    -1,    -1,    96,    97,    -1,    99,   100,    -1,   102,
+      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,
+      93,    94,    -1,    -1,    -1,    -1,    99,   100,    -1,   102,
      103,    11,    -1,    13,    14,    15,    16,    17,    -1,    -1,
       20,    21,    22,    23,    24,    -1,    26,    27,    28,    29,
       30,    31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,
@@ -1034,7 +918,7 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    62,    63,    64,    65,    66,    67,    68,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
-      90,    -1,    -1,    -1,    -1,    -1,    96,    97,    -1,    99,
+      -1,    91,    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,
      100,    -1,   102,   103,    11,    -1,    13,    14,    15,    16,
       17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
       27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
@@ -1042,43 +926,24 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    50,    -1,    52,    53,    54,    55,    56,
       57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,
       67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+      51,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,
+      61,    88,    89,    -1,    91,    -1,    93,    94,    -1,    -1,
+      -1,    -1,    -1,   100,    -1,   102,   103,    78,    79,    80,
+      81,    82,    83,    84,    85,    86,    87,    -1,    -1,    -1,
+      -1,    92,    51,    -1,    95,    96,    97,    98,    -1,    58,
+      59,    60,    61,    -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,    -1,    92,    51,    -1,    95,    96,    97,    98,
+      -1,    58,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    88,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,
-      97,    -1,    99,   100,    -1,   102,   103,    11,    -1,    13,
-      14,    15,    16,    17,    -1,    -1,    20,    21,    22,    23,
-      24,    -1,    26,    27,    28,    29,    30,    31,    -1,    -1,
-      -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    53,
-      54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,
-      64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    88,    89,    90,    -1,    -1,    -1,
-      -1,    -1,    96,    97,    -1,    99,   100,    -1,   102,   103,
-      11,    -1,    13,    14,    15,    16,    17,    -1,    -1,    20,
-      21,    22,    23,    24,    -1,    26,    27,    28,    29,    30,
-      31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,
-      -1,    52,    53,    54,    55,    56,    57,    -1,    -1,    -1,
-      -1,    62,    63,    64,    65,    66,    67,    68,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    76,    51,    -1,    -1,    -1,
-      -1,    -1,    -1,    58,    59,    60,    61,    88,    89,    90,
-      -1,    -1,    -1,    -1,    -1,    96,    97,    -1,    -1,   100,
-      -1,   102,   103,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    -1,    -1,    -1,    -1,    92,    93,    94,
-      95,    51,    -1,    98,    -1,    -1,    -1,    -1,    58,    59,
-      60,    61,    -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,    -1,    92,    93,    94,    95,    51,    -1,    98,    -1,
-      -1,    -1,    -1,    58,    59,    60,    61,    -1,    -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,    -1,    92,    93,    94,
-      95,    -1,    -1,    98
+      -1,    -1,    79,    -1,    81,    82,    83,    84,    85,    86,
+      87,    -1,    -1,    -1,    -1,    92,    -1,    -1,    95,    96,
+      97,    98
 };
 
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
+  /* 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,   106,   107,   108,
@@ -1086,52 +951,116 @@ static const yytype_uint8 yystos[] =
       16,    17,    20,    21,    22,    23,    24,    26,    27,    28,
       29,    30,    31,    36,    50,    52,    53,    54,    55,    56,
       57,    62,    63,    64,    65,    66,    67,    68,    76,    88,
-      89,    90,    96,    97,   100,   102,   103,   152,   153,   154,
-     157,   158,   159,   160,   161,   162,   164,   167,   172,   173,
-     174,   175,   176,   177,   178,   179,   180,     9,   113,     1,
+      89,    91,    93,    94,   100,   102,   103,   152,   153,   154,
+     157,   158,   159,   160,   161,   162,   164,   167,   173,   174,
+     175,   176,   177,   178,   179,   180,   181,     9,   113,     1,
       32,    34,    35,    37,    38,    39,    40,    41,    42,    46,
       47,    48,    49,   101,   113,   122,   132,   152,    33,   120,
      121,   122,   118,   118,    12,   152,   162,   162,    20,    25,
-     113,   173,   181,   181,   181,   181,   181,   163,    11,   100,
+     113,   174,   182,   182,   182,   182,   182,   163,    11,   100,
      162,   143,   143,   162,   100,   100,   100,   113,   162,    20,
-     153,   166,   173,   181,   181,   113,   162,   101,   152,    20,
-      25,   145,   162,   100,   165,   173,   174,   175,   162,   153,
-     162,   162,   162,   162,   162,    99,   152,   181,   181,    73,
-      74,    75,    77,     9,    11,   100,    51,    58,    59,    60,
-      61,    78,    79,    81,    82,    83,    84,    85,    86,    87,
-      92,    93,    94,    95,    98,   100,     9,    11,     9,    11,
-       9,    11,     9,   115,   144,   145,    20,   142,   100,   100,
-     100,   100,    67,    90,   100,   173,   100,   100,   113,    45,
-     134,   101,    39,    40,    41,    42,    46,    48,   121,   122,
-     120,    12,   166,   100,   100,   152,    99,   113,    23,   115,
-     146,    99,    99,   152,   167,   181,   153,    10,   101,   166,
-      99,   152,    69,   148,    11,    99,   152,   152,   152,   162,
-     152,   152,    99,   152,   162,   162,   162,   162,   162,   162,
-     162,   162,   162,   162,   162,   162,   162,   162,   162,     9,
-      11,    15,    16,    17,    21,    62,   100,   102,   103,   156,
-     173,    99,   152,   152,   152,   152,   152,   152,   152,   152,
-     118,    20,   141,   142,    20,   125,   115,   115,   115,   115,
-     115,    67,   170,   171,   172,   173,   174,   175,   115,   100,
+     153,   166,   174,   182,   182,   113,   162,   101,   152,    20,
+      25,   145,   162,    91,   100,   165,   174,   175,   176,   162,
+     153,   162,   162,   162,   162,   162,    99,   152,   182,   182,
+      73,    74,    75,    77,     9,    11,   100,    51,    58,    59,
+      60,    61,    78,    79,    81,    82,    83,    84,    85,    86,
+      87,    92,    95,    96,    97,    98,   100,     9,    11,     9,
+      11,     9,    11,     9,   115,   144,   145,    20,   142,   100,
+     100,   100,   100,    67,    91,   100,   172,   174,   100,   100,
+     113,    45,   134,   101,    39,    40,    41,    42,    46,    48,
+     121,   122,   120,    12,   166,   100,   100,   152,    99,   113,
+      23,   115,   146,    99,    99,   152,   167,   182,   153,    10,
+     101,   166,   100,   162,   165,   174,   175,   176,    99,   152,
+      69,   148,    11,    99,   152,   152,   152,   162,   152,   152,
+      99,   152,   162,   162,   162,   162,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,     9,    11,    15,
+      16,    17,    21,    62,   100,   102,   103,   156,   174,    99,
+     152,   152,   152,   152,   152,   152,   152,   152,   118,    20,
+     141,   142,    20,   125,   115,   115,   115,   115,    91,   115,
+      67,   170,   171,   173,   174,   175,   176,   115,   115,   100,
      115,   115,   113,   152,   138,   152,   152,   152,   152,   152,
      167,   153,    12,   155,   100,   149,    69,   147,    99,    99,
-     152,    10,    99,    23,   152,    11,   101,    12,    99,    80,
-     152,   152,   103,   103,   103,   103,    99,   152,   103,   103,
-     100,    99,   101,    12,   101,    12,   101,    12,   101,    10,
-      18,   114,   123,   124,     9,   101,    20,   137,   152,   138,
-     139,   152,   139,   169,   173,   115,   100,   132,   136,   139,
-     140,   152,   115,   139,   139,    99,   104,   168,   166,   150,
-     147,    23,   113,    99,    12,   152,    10,   162,   101,    12,
-      99,   167,    10,    10,    10,    10,   115,   146,   115,   115,
-      20,    99,    99,    99,    99,   100,   170,   115,    99,   101,
-     139,    99,    99,   152,    99,    99,     9,    12,    10,    99,
-     101,   147,   149,   129,   166,   135,   135,     9,   116,   116,
-     139,   128,   139,   116,   126,    99,   116,   116,   118,    71,
-     101,   113,   151,   147,   118,   101,   116,   116,   117,    43,
-      44,   133,   133,    99,   100,    99,   134,   137,   116,    10,
-     119,     9,    10,   134,   134,   118,   116,   100,   116,   139,
-     116,   101,   134,    23,   101,   130,   118,    10,   139,   134,
-      99,   134,   127,    70,   131,    19,    10,    99,   116,   135,
-     118,   116,   134,   140,    71,   133,    99,   116
+     152,    10,    99,   152,   148,    99,    23,   152,    11,   101,
+      12,    99,    80,   152,   152,   103,   103,   103,   103,    99,
+     152,   103,   103,   100,    99,   101,    12,   101,    12,   101,
+      12,   101,    10,    18,   114,   123,   124,     9,   101,    20,
+     137,   152,   138,   139,   152,   139,   169,   174,   100,   132,
+     136,   139,   140,   152,   170,   115,   139,   139,    99,   104,
+     168,   166,   150,   147,    23,   113,    99,    99,    12,   152,
+      10,   162,   101,    12,    99,   167,    10,    10,    10,    10,
+     115,   146,   115,   115,    20,    99,    99,    99,    99,   100,
+     115,    99,   101,   128,   139,    99,    99,   152,    99,    99,
+       9,    12,    10,    99,   101,   147,   149,   129,   166,   135,
+     135,     9,   116,   116,   139,   139,   116,   126,   100,    99,
+     116,   116,   118,    71,   101,   113,   151,   147,   118,   101,
+     116,   116,   117,    43,    44,   133,   133,    99,    99,   134,
+     137,   139,   116,    10,   119,     9,    10,   134,   134,   118,
+     116,   100,   116,   116,   101,    99,   134,    23,   101,   130,
+     118,    10,   139,   134,   134,   127,   116,    70,   131,    19,
+      10,    99,   135,   134,   118,   116,   140,    71,   133,    99,
+     116
+};
+
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint8 yyr1[] =
+{
+       0,   105,   107,   106,   108,   106,   109,   106,   110,   106,
+     111,   106,   112,   106,   113,   114,   115,   116,   117,   118,
+     118,   119,   119,   120,   120,   121,   121,   122,   122,   123,
+     122,   124,   122,   122,   125,   122,   122,   122,   122,   122,
+     122,   122,   122,   126,   127,   122,   122,   122,   128,   122,
+     122,   122,   122,   129,   122,   122,   122,   130,   131,   131,
+     132,   132,   132,   132,   132,   132,   132,   132,   133,   133,
+     133,   134,   134,   135,   136,   136,   137,   137,   138,   139,
+     140,   141,   141,   142,   143,   144,   145,   145,   146,   146,
+     147,   147,   147,   148,   148,   150,   149,   151,   151,   152,
+     152,   152,   152,   153,   153,   153,   154,   154,   154,   154,
+     154,   154,   154,   154,   155,   154,   156,   156,   157,   157,
+     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
+     157,   157,   158,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   159,   159,   159,   159,
+     159,   159,   159,   159,   159,   160,   160,   160,   160,   160,
+     160,   161,   161,   162,   162,   162,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
+     162,   162,   163,   162,   162,   162,   162,   162,   164,   164,
+     164,   165,   165,   165,   165,   165,   166,   166,   167,   167,
+     168,   168,   169,   170,   170,   170,   171,   171,   172,   172,
+     173,   174,   175,   176,   177,   177,   178,   179,   179,   180,
+     180,   181,   181,   182,   182,   182,   182
+};
+
+  /* YYR2[YYN] -- Number of symbols on the 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,     7,     0,     4,     0,     0,
+       2,     0,     2,     1,     1,     2,     2,     1,     4,     0,
+       7,     0,    10,     4,     0,     7,     7,     7,     6,     6,
+       2,     8,     8,     0,     0,    13,     9,     8,     0,    10,
+       9,     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,     0,     0,     0,     0,     1,     1,     0,     1,
+       0,     2,     1,     2,     1,     0,     3,     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,     2,     3,     2,     4,     3,     5,
+       8,     2,     2,     1,     1,     1,     1,     5,     2,     3,
+       1,     2,     3,     1,     2,     1,     1,     1,     1,     1,
+       1,     4,     4,     5,     5,     1,     1,     3,     4,     3,
+       4,     4,     4,     4,     4,     1,     2,     2,     1,     2,
+       2,     1,     2,     1,     2,     1,     3,     1,     3,     1,
+       3,     4,     0,     6,     1,     1,     1,     1,     3,     2,
+       4,     3,     2,     1,     1,     1,     0,     1,     0,     1,
+       0,     2,     1,     1,     1,     1,     1,     1,     2,     2,
+       2,     2,     2,     2,     2,     4,     2,     1,     3,     1,
+       3,     1,     3,     1,     1,     1,     1
 };
 
 typedef enum {
@@ -1143,34 +1072,34 @@ 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_ival, toketype_ival, toketype_ival,
-  toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_opval, toketype_opval,
+  toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, 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_opval, toketype_pval,
-  toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival, toketype_ival,
+  toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval, toketype_opval,
+  toketype_pval, 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_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_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_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_ival, 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_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_ival, 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_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_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, 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
 };
 
 /* Generated from:
- * 70adb6e1be5382fb5c8cd783cd886cb4725c98a3e69c54eb16da5d7829d929aa perly.y
+ * fba24dfc68a3a84c9ae95cb9e14cc156ac487e6f3228cdf84c166d3cd820e59a perly.y
  * 3e1dff60f26df8933d7aed0c0e87177a0f022c14800c0707eb62a7db4196ac98 regen_perly.pl
  * ex: set ro: */
diff --git a/perly.y b/perly.y
index e7cea35..6eb4b23 100644 (file)
--- a/perly.y
+++ b/perly.y
@@ -47,7 +47,7 @@
 
 %token <ival> '{' '}' '[' ']' '-' '+' '@' '%' '&' '=' '.'
 
-%token <opval> WORD METHOD FUNCMETH THING PMFUNC PRIVATEREF QWLIST
+%token <opval> BAREWORD METHOD FUNCMETH THING PMFUNC PRIVATEREF QWLIST
 %token <opval> FUNC0OP FUNC0SUB UNIOPSUB LSTOPSUB
 %token <opval> PLUGEXPR PLUGSTMT
 %token <pval> LABEL
@@ -336,7 +336,7 @@ barestmt:   PLUGSTMT
                          intro_my();
                          parser->parsed_sub = 1;
                        }
-       |       PACKAGE WORD WORD ';'
+       |       PACKAGE BAREWORD BAREWORD ';'
                        {
                          package($3);
                          if ($2)
@@ -345,7 +345,7 @@ barestmt:   PLUGSTMT
                        }
        |       USE startsub
                        { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
-               WORD WORD optlistexpr ';'
+               BAREWORD BAREWORD optlistexpr ';'
                        {
                          SvREFCNT_inc_simple_void(PL_compcv);
                          utilize($1, $2, $4, $5, $6);
@@ -418,18 +418,18 @@ barestmt: PLUGSTMT
                                      op_lvalue($2, OP_ENTERLOOP), $5, $7, $8));
                          parser->copline = (line_t)$1;
                        }
-       |       FOR REFGEN MY remember my_var
-                       { parser->in_my = 0; $<opval>$ = my($5); }
+       |       FOR my_refgen remember my_var
+                       { parser->in_my = 0; $<opval>$ = my($4); }
                '(' mexpr ')' mblock cont
                        {
                          $$ = block_end(
-                               $4,
+                               $3,
                                newFOROP(0,
                                         op_lvalue(
                                            newUNOP(OP_REFGEN, 0,
-                                                   $<opval>6),
+                                                   $<opval>5),
                                            OP_ENTERLOOP),
-                                        $8, $10, $11)
+                                        $7, $9, $10)
                          );
                          parser->copline = (line_t)$1;
                        }
@@ -453,7 +453,7 @@ barestmt:   PLUGSTMT
                          $$ = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
                                  (OP*)NULL, $1, $2, 0);
                        }
-       |       PACKAGE WORD WORD '{' remember
+       |       PACKAGE BAREWORD BAREWORD '{' remember
                        {
                          package($3);
                          if ($2) {
@@ -581,7 +581,7 @@ mnexpr      :       nexpr
                        { $$ = $1; intro_my(); }
        ;
 
-formname:      WORD            { $$ = $1; }
+formname:      BAREWORD        { $$ = $1; }
        |       /* NULL */      { $$ = (OP*)NULL; }
        ;
 
@@ -602,7 +602,7 @@ startformsub:       /* NULL */      /* start a format subroutine scope */
        ;
 
 /* Name of a subroutine - must be a bareword, could be special */
-subname        :       WORD
+subname        :       BAREWORD
        |       PRIVATEREF
        ;
 
@@ -886,6 +886,8 @@ term        :       termbinop
                        { $$ = newCONDOP(0, $1, $3, $5); }
        |       REFGEN term                          /* \$x, \@y, \%z */
                        { $$ = newUNOP(OP_REFGEN, 0, $2); }
+       |       MY REFGEN term
+                       { $$ = newUNOP(OP_REFGEN, 0, localize($3,1)); }
        |       myattrterm      %prec UNIOP
                        { $$ = $1; }
        |       LOCAL term      %prec UNIOP
@@ -1026,7 +1028,7 @@ term      :       termbinop
                        }
                    '(' listexpr optrepl ')'
                        { $$ = pmruntime($1, $4, $5, 1, $<ival>2); }
-       |       WORD
+       |       BAREWORD
        |       listop
        |       YADAYADA
                        {
@@ -1041,6 +1043,8 @@ myattrterm:       MY myterm myattrlist
                        { $$ = my_attrs($2,$3); }
        |       MY myterm
                        { $$ = localize($2,1); }
+       |       MY REFGEN myterm myattrlist
+                       { $$ = newUNOP(OP_REFGEN, 0, my_attrs($3,$4)); }
        ;
 
 /* Things that can be "my"'d */
@@ -1091,6 +1095,10 @@ refgen_topic:    my_var
        |       amper
        ;
 
+my_refgen:     MY REFGEN
+       |       REFGEN MY
+       ;
+
 amper  :       '&' indirob
                        { $$ = newCVREF($1,$2); }
        ;
@@ -1137,7 +1145,7 @@ gelem     :       star
        ;
 
 /* Indirect objects */
-indirob        :       WORD
+indirob        :       BAREWORD
                        { $$ = scalar($1); }
        |       scalar %prec PREC_LOW
                        { $$ = scalar($1); }
index d7a4af9..b2305e7 100644 (file)
  *     This symbol contains the ~name expanded version of PRIVLIB, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define PRIVLIB "/sys/lib/perl/5.25.2"         /**/
-#define PRIVLIB_EXP "/sys/lib/perl/5.25.2"             /**/
+#define PRIVLIB "/sys/lib/perl/5.25.3"         /**/
+#define PRIVLIB_EXP "/sys/lib/perl/5.25.3"             /**/
 
 /* PTRSIZE:
  *     This symbol contains the size of a pointer, so that the C preprocessor
  *     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 "/sys/lib/perl/5.25.2/site_perl"               /**/
-#define SITELIB_EXP "/sys/lib/perl/5.25.2/site_perl"           /**/
-#define SITELIB_STEM "/sys/lib/perl/5.25.2/site_perl"          /**/
+#define SITELIB "/sys/lib/perl/5.25.3/site_perl"               /**/
+#define SITELIB_EXP "/sys/lib/perl/5.25.3/site_perl"           /**/
+#define SITELIB_STEM "/sys/lib/perl/5.25.3/site_perl"          /**/
 
 /* Size_t_size:
  *     This symbol holds the size of a Size_t in bytes.
index 4171745..7dd1927 100644 (file)
@@ -32,12 +32,12 @@ alignbytes='4'
 ansi2knr=''
 aphostname='/bin/uname -n'
 api_revision='5'
-api_subversion='2'
+api_subversion='3'
 api_version='25'
-api_versionstring='5.25.2'
+api_versionstring='5.25.3'
 ar='ar'
-archlib='/sys/lib/perl5/5.25.2/386'
-archlibexp='/sys/lib/perl5/5.25.2/386'
+archlib='/sys/lib/perl5/5.25.3/386'
+archlibexp='/sys/lib/perl5/5.25.3/386'
 archname64=''
 archname='386'
 archobjs=''
@@ -804,17 +804,17 @@ inc_version_list=' '
 inc_version_list_init='0'
 incpath=''
 inews=''
-installarchlib='/sys/lib/perl/5.25.2/386'
+installarchlib='/sys/lib/perl/5.25.3/386'
 installbin='/usr/bin'
 installman1dir='/sys/man/1pub'
 installman3dir='/sys/man/2pub'
 installprefix='/usr'
 installprefixexp='/usr'
-installprivlib='/sys/lib/perl/5.25.2'
+installprivlib='/sys/lib/perl/5.25.3'
 installscript='/usr/bin'
-installsitearch='/sys/lib/perl/5.25.2/site_perl/386'
+installsitearch='/sys/lib/perl/5.25.3/site_perl/386'
 installsitebin='/usr/bin'
-installsitelib='/sys/lib/perl/5.25.2/site_perl'
+installsitelib='/sys/lib/perl/5.25.3/site_perl'
 installstyle='lib/perl5'
 installusrbinperl='undef'
 installvendorarch=''
@@ -939,8 +939,8 @@ pmake=''
 pr=''
 prefix='/usr'
 prefixexp='/usr'
-privlib='/sys/lib/perl/5.25.2'
-privlibexp='/sys/lib/perl/5.25.2'
+privlib='/sys/lib/perl/5.25.3'
+privlibexp='/sys/lib/perl/5.25.3'
 procselfexe=''
 prototype='define'
 ptrsize='4'
@@ -1005,13 +1005,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.25.2/site_perl/386'
+sitearch='/sys/lib/perl/5.25.3/site_perl/386'
 sitearchexp='/sys/lib/perl/site_perl/386'
 sitebin='/usr/bin'
 sitebinexp='/usr/bin'
-sitelib='/sys/lib/perl/5.25.2/site_perl'
-sitelib_stem='/sys/lib/perl/5.25.2/site_perl'
-sitelibexp='/sys/lib/perl/5.25.2/site_perl'
+sitelib='/sys/lib/perl/5.25.3/site_perl'
+sitelib_stem='/sys/lib/perl/5.25.3/site_perl'
+sitelibexp='/sys/lib/perl/5.25.3/site_perl'
 siteprefix='/usr'
 siteprefixexp='/usr'
 sizesize='4'
@@ -1044,7 +1044,7 @@ stdio_stream_array=''
 strerror_r_proto='0'
 strings='/sys/include/ape/string.h'
 submit=''
-subversion='2'
+subversion='3'
 sysman='/sys/man/1pub'
 tail=''
 tar=''
@@ -1126,8 +1126,8 @@ vendorlib_stem=''
 vendorlibexp=''
 vendorprefix=''
 vendorprefixexp=''
-version='5.25.2'
-version_patchlevel_string='version 25 subversion 2'
+version='5.25.3'
+version_patchlevel_string='version 25 subversion 3'
 versiononly='undef'
 vi=''
 xlibpth=''
@@ -1141,9 +1141,9 @@ config_args=''
 config_argc=0
 PERL_REVISION=5
 PERL_VERSION=25
-PERL_SUBVERSION=2
+PERL_SUBVERSION=3
 PERL_API_REVISION=5
 PERL_API_VERSION=25
-PERL_API_SUBVERSION=2
+PERL_API_SUBVERSION=3
 PERL_PATCHLEVEL=
 PERL_CONFIG_SH=true
index a305636..286d32d 100644 (file)
@@ -53,7 +53,7 @@
 /roffitall
 
 # generated
-/perl5252delta.pod
+/perl5253delta.pod
 /perlapi.pod
 /perlintern.pod
 *.html
index dbf57ec..0cbaa8d 100644 (file)
@@ -180,6 +180,7 @@ aux c2ph h2ph h2xs perlbug pl2pm pod2html pod2man splain xsubpp
 
     perlhist           Perl history records
     perldelta          Perl changes since previous version
+    perl5252delta      Perl changes in version 5.25.2
     perl5251delta      Perl changes in version 5.25.1
     perl5250delta      Perl changes in version 5.25.0
     perl5240delta      Perl changes in version 5.24.0
diff --git a/pod/perl5252delta.pod b/pod/perl5252delta.pod
new file mode 100644 (file)
index 0000000..0410a92
--- /dev/null
@@ -0,0 +1,482 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5252delta - what is new for perl v5.25.2
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.25.1 release and the 5.25.2
+release.
+
+If you are upgrading from an earlier release such as 5.25.0, first read
+L<perl5251delta>, which describes differences between 5.25.0 and 5.25.1.
+
+=head1 Core Enhancements
+
+=head2 Perl can now do default collation in UTF-8 locales on platforms
+that support it
+
+Some platforms natively do a reasonable job of collating and sorting in
+UTF-8 locales.  Perl now works with those.  For portability and full
+control, L<Unicode::Collate> is still recommended, but now you may
+not need to do anything special to get good-enough results, depending on
+your application.  See
+L<perllocale/Category C<LC_COLLATE>: Collation: Text Comparisons and Sorting>.
+
+=head2 Better locale collation of strings containing embedded C<NUL>
+characters
+
+In locales that have multi-level character weights, these are now
+ignored at the higher priority ones.  There are still some gotchas in
+some strings, though.  See
+L<perllocale/Collation of strings containing embedded C<NUL> characters>.
+
+=head2 Lexical subroutines are no longer experimental
+
+Using the C<lexical_subs> feature no longer emits a warning.  Existing code that disables the C<experimental::lexical_subs> warning category that the
+feature previously used will continue to work.  The C<lexical_subs> feature
+has no effect; all Perl code can use lexical subroutines, regardless of
+what feature declarations are in scope.
+
+=head2 C<CORE> subroutines for hash and array functions callable via
+reference
+
+The hash and array functions in the C<CORE> namespace--C<keys>, C<each>,
+C<values>, C<push>, C<pop>, C<shift>, C<unshift> and C<splice>--, can now
+be called with ampersand syntax (C<&CORE::keys(\%hash>) and via reference
+(C<< my $k = \&CORE::keys; $k->(\%hash) >>).  Previously they could only be
+used when inlined.
+
+=head1 Security
+
+=head2 C<-Di> switch is now required for PerlIO debugging output
+
+Previously PerlIO debugging output would be sent to the file specified
+by the C<PERLIO_DEBUG> environment variable if perl wasn't running
+setuid and the C<-T> or C<-t> switches hadn't been parsed yet.
+
+If perl performed output at a point where it hadn't yet parsed its
+switches this could result in perl creating or overwriting the file
+named by C<PERLIO_DEBUG> even when the C<-T> switch had been supplied.
+
+Perl now requires the C<-Di> switch to produce PerlIO debugging
+output.  By default this is written to C<stderr>, but can optionally
+be redirected to a file by setting the C<PERLIO_DEBUG> environment
+variable.
+
+If perl is running setuid or the C<-T> switch has supplied
+C<PERLIO_DEBUG> is ignored and the debugging output is sent to
+C<stderr> as for any other C<-D> switch.
+
+=head1 Incompatible Changes
+
+=head2 C<keys> returned from an lvalue subroutine
+
+C<keys> returned from an lvalue subroutine can no longer be assigned
+to in list context.
+
+    sub foo : lvalue { keys(%INC) }
+    (foo) = 3; # death
+    sub bar : lvalue { keys(@_) }
+    (bar) = 3; # also an error
+
+This makes the lvalue sub case consistent with C<(keys %hash) = ...> and
+C<(keys @_) = ...>, which are also errors.  [perl #128187]
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<CPAN> has been upgraded from version 2.11 to 2.14.
+
+=item *
+
+L<Devel::Peek> has been upgraded from version 1.23 to 1.24.
+
+=item *
+
+L<diagnostics> has been upgraded from version 1.34 to 1.35.
+
+=item *
+
+L<DynaLoader> has been upgraded from version 1.38 to 1.39.
+
+=item *
+
+L<ExtUtils::MakeMaker> has been upgraded from version 7.10_01 to 7.18.
+
+=item *
+
+L<ExtUtils::Miniperl> has been upgraded from version 1.05 to 1.06.
+
+=item *
+
+L<ExtUtils::ParseXS> has been upgraded from version 3.31 to 3.32.
+
+=item *
+
+L<ExtUtils::Typemaps> has been upgraded from version 3.31 to 3.32.
+
+=item *
+
+L<feature> has been upgraded from version 1.43 to 1.44.
+
+=item *
+
+L<File::Copy> has been upgraded from version 2.31 to 2.32.
+
+=item *
+
+L<File::Glob> has been upgraded from version 1.26 to 1.27.
+
+=item *
+
+L<File::Spec> has been upgraded from version 3.63 to 3.64.
+
+=item *
+
+L<FileHandle> has been upgraded from version 2.02 to 2.03.
+
+=item *
+
+L<Getopt::Long> has been upgraded from version 2.48 to 2.49.
+
+=item *
+
+L<HTTP::Tiny> has been upgraded from version 0.056 to 0.058.
+
+=item *
+
+L<JSON::PP> has been upgraded from version 2.27300 to 2.27400.
+
+=item *
+
+L<Locale::Codes> has been upgraded from version 3.38 to 3.39.
+
+=item *
+
+L<Module::CoreList> has been upgraded from 5.20160520 to 5.20160620.
+
+=item *
+
+L<Opcode> has been upgraded from version 1.34 to 1.35.
+
+=item *
+
+L<Pod::Checker> has been upgraded from version 1.60 to 1.73.
+
+=item *
+
+L<Pod::Functions> has been upgraded from version 1.10 to 1.11.
+
+=item *
+
+L<Pod::Usage> has been upgraded from version 1.68 to 1.69.
+
+=item *
+
+L<POSIX> has been upgraded from version 1.69 to 1.70.
+
+=item *
+
+L<Test::Simple> has been upgraded from version 1.302015 to 1.302026.
+
+=item *
+
+L<Thread::Queue> has been upgraded from version 3.09 to 3.11.
+
+=item *
+
+L<threads> has been upgraded from version 2.08 to 2.09.
+
+=item *
+
+L<Time::HiRes> has been upgraded from version 1.9733 to 1.9734.
+
+=item *
+
+L<Unicode::UCD> has been upgraded from version 0.64 to 0.65.
+
+=item *
+
+L<VMS::DCLsym> has been upgraded from version 1.06 to 1.07.
+
+=back
+
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perlcommunity>
+
+=over 4
+
+=item *
+
+All references to Usenet have been removed.
+
+=back
+
+=head3 L<perldelta>
+
+=over 4
+
+=item *
+
+All references to Usenet have been removed.
+
+=back
+
+=head3 L<perllocale>
+
+=over 4
+
+=item *
+
+Document NUL collation handling.
+
+=back
+
+=head3 L<perlmodinstall>
+
+=over 4
+
+=item *
+
+All references to Usenet have been removed.
+
+=back
+
+=head3 L<perlmodlib>
+
+=over 4
+
+=item *
+
+Updated the mirror list.
+
+=item *
+
+All references to Usenet have been removed.
+
+=back
+
+=head3 L<perlnewmod>
+
+=over 4
+
+=item *
+
+All references to Usenet have been removed.
+
+=back
+
+=head1 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<Version control conflict marker|perldiag/"Version control conflict marker">
+
+(F) The parser found a line starting with C<E<lt><<<<<<>,
+C<E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>>, or C<=======>. These may be left by a
+version control system to mark conflicts after a failed merge operation.
+
+=item *
+
+L<%s: command not found|perldiag/"%s: command not found">
+
+(A) You've accidentally run your script through B<bash> or another shell
+instead of Perl.  Check the #! line, or manually feed your script into
+Perl yourself.  The #! line at the top of your file could look like:
+
+  #!/usr/bin/perl
+
+=item *
+
+L<%s: command not found: %s|perldiag/"%s: command not found: %s">
+
+(A) You've accidentally run your script through B<zsh> or another shell
+instead of Perl.  Check the #! line, or manually feed your script into
+Perl yourself.  The #! line at the top of your file could look like:
+
+  #!/usr/bin/perl
+
+=item *
+
+L<Unescaped left brace in regex is deprecated here, passed through in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"Unescaped left brace in regex is deprecated here, passed through in regex; marked by S<<-- HERE> in m/%s/">
+
+Unescaped left braces are already illegal in some contexts in regular
+expression patterns, but, due to an oversight, no deprecation warning
+was raised in other contexts where they are intended to become illegal.
+This warning is now raised in these contexts.
+
+=back
+
+=head2 Changes to Existing Diagnostics
+
+=over 4
+
+=item *
+
+L<Unescaped left brace in regex is illegal here in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"Unescaped left brace in regex is illegal here in regex; marked by S<<-- HERE> in m/%s/">
+
+The word "here" has been added to the message that was raised in
+v5.25.1.  This is to indicate that there are contexts in which unescaped
+left braces are not (yet) illegal.
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+F<make_ext.pl> no longer updates a module's F<pm_to_blib> file when no
+files require updates.  This could cause dependencies, F<perlmain.c>
+in particular, to be rebuilt unnecessarily.  [perl #126710]
+
+=item *
+
+The output of C<perl -V> has been reformatted so that each configuration
+and compile-time option is now listed one per line, to improve
+readability.
+
+=back
+
+=head1 Testing
+
+=over 4
+
+=item *
+
+F<t/harness> now tries really hard not to run tests outside of the Perl
+source tree. [perl #124050]
+
+=back
+
+=head1 Internal Changes
+
+=over 4
+
+=item *
+
+Perl no longer panics when switching into some locales on machines with
+buggy C<strxfrm()> implementations in their libc. [perl #121734]
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+C< until ($x = 1) { ... } > and C< ... until $x = 1 > now properly
+warn when syntax warnings are enabled.  [perl #127333]
+
+=item *
+
+socket() now leaves the error code returned by the system in C<$!> on
+failure.  [perl #128316]
+
+=item *
+
+Assignment variants of any bitwise ops under the C<bitwise> feature would
+crash if the left-hand side was an array or hash.  [perl #128204]
+
+=item *
+
+C<require> followed by a single colon (as in C<foo() ? require : ...> is
+now parsed correctly as C<require> with implicit $_, rather than
+C<require "">.  [perl #128307]
+
+=item *
+
+Scalar C<keys %hash> can now be assigned to consistently in all scalar
+lvalue contexts.  Previously it worked for some contexts but not others.
+
+=item *
+
+List assignment to C<vec> or C<substr> with an array or hash for its first
+argument used to result in crashes or "Can't coerce" error messages at run
+time, unlike scalar assignment, which would give an error at compile time.
+List assignment now gives a compile-time error, too.  [perl #128260]
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.25.2 represents approximately 4 weeks of development since Perl 5.25.1
+and contains approximately 32,000 lines of changes across 430 files from 28
+authors.
+
+Excluding auto-generated files, documentation and release tools, there were
+approximately 27,000 lines of changes to 300 .pm, .t, .c and .h files.
+
+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.25.2:
+
+Aaron Crane, Andreas König, Andy Lester, Chad Granum, Chase Whitener, Chris
+'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Collins,
+David Mitchell, Dominic Hargreaves, Ed Avis, Father Chrysostomos, H.Merijn
+Brand, Ivan Pozdeev, James E Keenan, Jarkko Hietaniemi, Jerry D. Hedden, Jim
+Cromie, Karl Williamson, Lukas Mai, Matthew Horsfall, Misty De Meo, Samuel
+Thibault, Sawyer X, Sullivan Beck, Tony Cook, 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.
+
+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 perl bug database
+at L<https://rt.perl.org/> .  There may also be information at
+L<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 see
+L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
+for details of how to report the issue.
+
+=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
index 66bb206..30d03f7 100644 (file)
@@ -400,17 +400,24 @@ leave nothing to doubt:
     $element_count = scalar(@whatever);
 
 If you evaluate a hash in scalar context, it returns false if the
-hash is empty.  If there are any key/value pairs, it returns true;
-more precisely, the value returned is a string consisting of the
+hash is empty.  If there are any key/value pairs, it returns true.
+A more precise definition is version dependent.
+
+Prior to Perl 5.25 the value returned was a string consisting of the
 number of used buckets and the number of allocated buckets, separated
 by a slash.  This is pretty much useful only to find out whether
 Perl's internal hashing algorithm is performing poorly on your data
 set.  For example, you stick 10,000 things in a hash, but evaluating
 %HASH in scalar context reveals C<"1/16">, which means only one out
 of sixteen buckets has been touched, and presumably contains all
-10,000 of your items.  This isn't supposed to happen.  If a tied hash
-is evaluated in scalar context, the C<SCALAR> method is called (with a
-fallback to C<FIRSTKEY>).
+10,000 of your items.  This isn't supposed to happen.
+
+As of Perl 5.25 the return was changed to be the count of keys in the
+hash. If you need access to the old behavior you can use
+C<Hash::Util::bucket_ratio()> instead.
+
+If a tied hash is evaluated in scalar context, the C<SCALAR> method is
+called (with a fallback to C<FIRSTKEY>).
 X<hash, scalar context> X<hash, bucket> X<bucket>
 
 You can preallocate space for a hash by assigning to the keys() function.
@@ -531,7 +538,7 @@ The infinity and not-a-number have their own special arithmetic rules.
 The general rule is that they are "contagious": C<Inf> plus one is
 C<Inf>, and C<NaN> plus one is C<NaN>.  Where things get interesting
 is when you combine infinities and not-a-numbers: C<Inf> minus C<Inf>
-and C<Inf> divided by C<INf> are C<NaN> (while C<Inf> plus C<Inf> is
+and C<Inf> divided by C<Inf> are C<NaN> (while C<Inf> plus C<Inf> is
 C<Inf> and C<Inf> times C<Inf> is C<Inf>).  C<NaN> is also curious
 in that it does not equal any number, I<including> itself:
 C<NaN> != C<NaN>.
index ceb478d..2607446 100644 (file)
@@ -2,87 +2,66 @@
 
 =head1 NAME
 
-perldelta - what is new for perl v5.25.2
+perldelta - what is new for perl v5.25.3
 
 =head1 DESCRIPTION
 
-This document describes differences between the 5.25.1 release and the 5.25.2
+This document describes differences between the 5.25.2 release and the 5.25.3
 release.
 
-If you are upgrading from an earlier release such as 5.25.0, first read
-L<perl5251delta>, which describes differences between 5.25.0 and 5.25.1.
+If you are upgrading from an earlier release such as 5.25.1, first read
+L<perl5252delta>, which describes differences between 5.25.1 and 5.25.2.
 
 =head1 Core Enhancements
 
-=head2 Perl can now do default collation in UTF-8 locales on platforms
-that support it
+=head2 Unicode 9.0 is now supported
 
-Some platforms natively do a reasonable job of collating and sorting in
-UTF-8 locales.  Perl now works with those.  For portability and full
-control, L<Unicode::Collate> is still recommended, but now you may
-not need to do anything special to get good-enough results, depending on
-your application.  See
-L<perllocale/Category C<LC_COLLATE>: Collation: Text Comparisons and Sorting>.
+A list of changes is at L<http://www.unicode.org/versions/Unicode9.0.0/>.
+Modules that are shipped with core Perl but not maintained by p5p do not
+necessarily support Unicode 9.0.  L<Unicode::Normalize> does work on 9.0.
 
-=head2 Better locale collation of strings containing embedded C<NUL>
-characters
+=head2 Use of C<\p{I<script>}> uses the improved Script_Extensions property
 
-In locales that have multi-level character weights, these are now
-ignored at the higher priority ones.  There are still some gotchas in
-some strings, though.  See
-L<perllocale/Collation of strings containing embedded C<NUL> characters>.
+Unicode 6.0 introduced an improved form of the Script (C<sc>) property, and
+called it Script_Extensions (C<scx>).  As of now, Perl uses this improved
+version when a property is specified as just C<\p{I<script>}>.  The meaning of
+compound forms, like C<\p{sc=I<script>}> are unchanged.  This should make
+programs be more accurate when determining if a character is used in a given
+script, but there is a slight chance of breakage for programs that very
+specifically needed the old behavior.  See L<perlunicode/Scripts>.
 
-=head2 Lexical subroutines are no longer experimental
+=head2 Declaring a reference to a variable
 
-Using the C<lexical_subs> feature no longer emits a warning.  Existing code that disables the C<experimental::lexical_subs> warning category that the
-feature previously used will continue to work.  The C<lexical_subs> feature
-has no effect; all Perl code can use lexical subroutines, regardless of
-what feature declarations are in scope.
+As an experimental feature, Perl now allows the referencing operator to come
+after L<C<my()>|perlfunc/my>, L<C<state()>|perlfunc/state>,
+L<C<our()>|perlfunc/our>, or L<C<local()>|perlfunc/local>.  This syntax must
+be enabled with C<use feature 'declared_refs'>.  It is experimental, and will
+warn by default unless C<no warnings 'experimental::refaliasing'> is in effect.
+It is intended mainly for use in assignments to references.  For example:
 
-=head2 C<CORE> subroutines for hash and array functions callable via
-reference
+    use experimental 'refaliasing', 'declared_refs';
+    my \$a = \$b;
 
-The hash and array functions in the C<CORE> namespace--C<keys>, C<each>,
-C<values>, C<push>, C<pop>, C<shift>, C<unshift> and C<splice>--, can now
-be called with ampersand syntax (C<&CORE::keys(\%hash>) and via reference
-(C<< my $k = \&CORE::keys; $k->(\%hash) >>).  Previously they could only be
-used when inlined.
-
-=head1 Security
-
-=head2 C<-Di> switch is now required for PerlIO debugging output
-
-Previously PerlIO debugging output would be sent to the file specified
-by the C<PERLIO_DEBUG> environment variable if perl wasn't running
-setuid and the C<-T> or C<-t> switches hadn't been parsed yet.
-
-If perl performed output at a point where it hadn't yet parsed its
-switches this could result in perl creating or overwriting the file
-named by C<PERLIO_DEBUG> even when the C<-T> switch had been supplied.
-
-Perl now requires the C<-Di> switch to produce PerlIO debugging
-output.  By default this is written to C<stderr>, but can optionally
-be redirected to a file by setting the C<PERLIO_DEBUG> environment
-variable.
-
-If perl is running setuid or the C<-T> switch has supplied
-C<PERLIO_DEBUG> is ignored and the debugging output is sent to
-C<stderr> as for any other C<-D> switch.
+See L<perlref/Assigning to References> for slightly more detail.
 
 =head1 Incompatible Changes
 
-=head2 C<keys> returned from an lvalue subroutine
+=head2 C<${^ENCODING}> has been removed
+
+Consequently, the L<encoding> pragma's default mode is no longer supported.  If
+you still need to write your source code in encodings other than UTF-8, use a
+source filter such as L<Filter::Encoding> on CPAN or L<encoding>'s C<Filter>
+option.
 
-C<keys> returned from an lvalue subroutine can no longer be assigned
-to in list context.
+=head2 C<scalar(%hash)> return signature changed
 
-    sub foo : lvalue { keys(%INC) }
-    (foo) = 3; # death
-    sub bar : lvalue { keys(@_) }
-    (bar) = 3; # also an error
+The value returned for C<scalar(%hash)> will no longer show information about
+the buckets allocated in the hash.  It will simply return the count of used
+keys.  It is thus equivalent to C<0+keys(%hash)>.
 
-This makes the lvalue sub case consistent with C<(keys %hash) = ...> and
-C<(keys @_) = ...>, which are also errors.  [perl #128187]
+A form of backwards compatibility is provided via C<Hash::Util::bucket_ratio()>
+which provides the same behavior as C<scalar(%hash)> provided prior to Perl
+5.25.
 
 =head1 Modules and Pragmata
 
@@ -92,119 +71,99 @@ C<(keys @_) = ...>, which are also errors.  [perl #128187]
 
 =item *
 
-L<CPAN> has been upgraded from version 2.11 to 2.14.
-
-=item *
-
-L<Devel::Peek> has been upgraded from version 1.23 to 1.24.
-
-=item *
-
-L<diagnostics> has been upgraded from version 1.34 to 1.35.
-
-=item *
-
-L<DynaLoader> has been upgraded from version 1.38 to 1.39.
-
-=item *
-
-L<ExtUtils::MakeMaker> has been upgraded from version 7.10_01 to 7.18.
+L<bignum> has been upgraded from version 0.42 to 0.43.
 
 =item *
 
-L<ExtUtils::Miniperl> has been upgraded from version 1.05 to 1.06.
+L<Data::Dumper> has been upgraded from version 2.160 to 2.161.
 
 =item *
 
-L<ExtUtils::ParseXS> has been upgraded from version 3.31 to 3.32.
+L<Devel::PPPort> has been upgraded from version 3.32 to 3.35.
 
 =item *
 
-L<ExtUtils::Typemaps> has been upgraded from version 3.31 to 3.32.
+L<Encode> has been upgraded from version 2.80 to 2.84.
 
 =item *
 
-L<feature> has been upgraded from version 1.43 to 1.44.
+L<encoding> has been upgraded from version 2.17 to 2.17_01.
 
-=item *
-
-L<File::Copy> has been upgraded from version 2.31 to 2.32.
+This module's default mode is no longer supported as of Perl 5.25.3.  It now
+dies when imported, unless the C<Filter> option is being used.
 
 =item *
 
-L<File::Glob> has been upgraded from version 1.26 to 1.27.
-
-=item *
-
-L<File::Spec> has been upgraded from version 3.63 to 3.64.
-
-=item *
+L<encoding::warnings> has been upgraded from version 0.12 to 0.13.
 
-L<FileHandle> has been upgraded from version 2.02 to 2.03.
+This module is no longer supported as of Perl 5.25.3.  It emits a warning to
+that effect and then does nothing.
 
 =item *
 
-L<Getopt::Long> has been upgraded from version 2.48 to 2.49.
+L<ExtUtils::ParseXS> has been upgraded from version 3.32 to 3.33.
 
 =item *
 
-L<HTTP::Tiny> has been upgraded from version 0.056 to 0.058.
+L<ExtUtils::Typemaps> has been upgraded from version 3.32 to 3.33.
 
 =item *
 
-L<JSON::PP> has been upgraded from version 2.27300 to 2.27400.
+L<feature> has been upgraded from version 1.44 to 1.45.
 
 =item *
 
-L<Locale::Codes> has been upgraded from version 3.38 to 3.39.
+L<Hash::Util> has been upgraded from version 0.19 to 0.20.
 
 =item *
 
-L<Module::CoreList> has been upgraded from 5.20160520 to 5.20160620.
+L<Math::BigInt> has been upgraded from version 1.999715 to 1.999726.
 
 =item *
 
-L<Opcode> has been upgraded from version 1.34 to 1.35.
+L<Math::BigInt::FastCalc> has been upgraded from version 0.40 to 0.42.
 
 =item *
 
-L<Pod::Checker> has been upgraded from version 1.60 to 1.73.
+L<Math::BigRat> has been upgraded from version 0.260802 to 0.260804.
 
 =item *
 
-L<Pod::Functions> has been upgraded from version 1.10 to 1.11.
+L<Module::CoreList> has been upgraded from version 5.20160620 to 5.20160720.
 
 =item *
 
-L<Pod::Usage> has been upgraded from version 1.68 to 1.69.
+L<Parse::CPAN::Meta> has been upgraded from version 1.4417 to 1.4422.
 
 =item *
 
-L<POSIX> has been upgraded from version 1.69 to 1.70.
+L<Perl::OSType> has been upgraded from version 1.009 to 1.010.
 
 =item *
 
-L<Test::Simple> has been upgraded from version 1.302015 to 1.302026.
+L<Test::Simple> has been upgraded from version 1.302026 to 1.302045.
 
 =item *
 
-L<Thread::Queue> has been upgraded from version 3.09 to 3.11.
+L<Time::HiRes> has been upgraded from version 1.9734 to 1.9739.
 
 =item *
 
-L<threads> has been upgraded from version 2.08 to 2.09.
+L<Unicode::UCD> has been upgraded from version 0.65 to 0.66.
 
 =item *
 
-L<Time::HiRes> has been upgraded from version 1.9733 to 1.9734.
+L<version> has been upgraded from version 0.9916 to 0.9917.
 
 =item *
 
-L<Unicode::UCD> has been upgraded from version 0.64 to 0.65.
+L<warnings> has been upgraded from version 1.36 to 1.37.
 
 =item *
 
-L<VMS::DCLsym> has been upgraded from version 1.06 to 1.07.
+L<XSLoader> has been upgraded from version 0.21 to 0.22, fixing a security hole
+in which binary files could be loaded from a path outside of
+L<C<@INC>|perlvar/@INC>.
 
 =back
 
@@ -212,67 +171,68 @@ L<VMS::DCLsym> has been upgraded from version 1.06 to 1.07.
 
 =head2 Changes to Existing Documentation
 
-=head3 L<perlcommunity>
+=head3 L<perldata> and L<perltie>
 
 =over 4
 
 =item *
 
-All references to Usenet have been removed.
+Updated documentation of C<scalar(%hash)>.  See L</scalar(%hash) return
+signature changed> above.
 
 =back
 
-=head3 L<perldelta>
+=head3 L<perlexperiment> and L<perlref>
 
 =over 4
 
 =item *
 
-All references to Usenet have been removed.
+Documented new feature: See L</Declaring a reference to a variable> above.
 
 =back
 
-=head3 L<perllocale>
+=head3 L<perlfunc>
 
 =over 4
 
 =item *
 
-Document NUL collation handling.
-
-=back
-
-=head3 L<perlmodinstall>
-
-=over 4
+Clarified documentation of L<C<seek()>|perlfunc/seek>,
+L<C<tell()>|perlfunc/tell> and L<C<sysseek()>|perlfunc/sysseek>.
+L<[perl #128607]|https://rt.perl.org/Public/Bug/Display.html?id=128607>
 
 =item *
 
-All references to Usenet have been removed.
+Removed obsolete documentation of L<C<study()>|perlfunc/study>.
 
 =back
 
-=head3 L<perlmodlib>
+=head3 L<perlunicode>
 
 =over 4
 
 =item *
 
-Updated the mirror list.
+Documented change to C<\p{I<script>}> to now use the improved Script_Extensions
+property.  See L</Use of \p{script} uses the improved Script_Extensions
+property> above.
 
 =item *
 
-All references to Usenet have been removed.
+Updated the text to correspond with changes in Unicode UTS#18, concerning
+regular expressions, and Perl compatibility with what it says.
 
 =back
 
-=head3 L<perlnewmod>
+=head3 L<perlvar>
 
 =over 4
 
 =item *
 
-All references to Usenet have been removed.
+Removed obsolete documentation of C<${^ENCODING}>.  See L</${^ENCODING} has
+been removed> above.
 
 =back
 
@@ -290,163 +250,213 @@ diagnostic messages, see L<perldiag>.
 
 =item *
 
-L<Version control conflict marker|perldiag/"Version control conflict marker">
+L<The experimental declared_refs feature is not enabled|perldiag/"The experimental declared_refs feature is not enabled">
 
-(F) The parser found a line starting with C<E<lt><<<<<<>,
-C<E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>E<gt>>, or C<=======>. These may be left by a
-version control system to mark conflicts after a failed merge operation.
+(F) To declare references to variables, as in C<my \%x>, you must first enable
+the feature:
 
-=item *
+    no warnings "experimental::declared_refs";
+    use feature "declared_refs";
 
-L<%s: command not found|perldiag/"%s: command not found">
+=back
 
-(A) You've accidentally run your script through B<bash> or another shell
-instead of Perl.  Check the #! line, or manually feed your script into
-Perl yourself.  The #! line at the top of your file could look like:
+=head3 New Warnings
 
-  #!/usr/bin/perl
+=over 4
 
 =item *
 
-L<%s: command not found: %s|perldiag/"%s: command not found: %s">
+L<Declaring references is experimental|perldiag/"Declaring references is experimental">
 
-(A) You've accidentally run your script through B<zsh> or another shell
-instead of Perl.  Check the #! line, or manually feed your script into
-Perl yourself.  The #! line at the top of your file could look like:
+(S experimental::declared_refs) This warning is emitted if you use a reference
+constructor on the right-hand side of C<my()>, C<state()>, C<our()>, or
+C<local()>.  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:
 
-  #!/usr/bin/perl
+    no warnings "experimental::declared_refs";
+    use feature "declared_refs";
+    $fooref = my \$foo;
 
 =item *
 
-L<Unescaped left brace in regex is deprecated here, passed through in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"Unescaped left brace in regex is deprecated here, passed through in regex; marked by S<<-- HERE> in m/%s/">
+L<C<${^ENCODING}> is no longer supported|perldiag/"${^ENCODING} is no longer supported">
 
-Unescaped left braces are already illegal in some contexts in regular
-expression patterns, but, due to an oversight, no deprecation warning
-was raised in other contexts where they are intended to become illegal.
-This warning is now raised in these contexts.
+(D deprecated) The special variable C<${^ENCODING}>, formerly used to implement
+the C<encoding> pragma, is no longer supported as of Perl 5.26.0.
 
 =back
 
-=head2 Changes to Existing Diagnostics
+=head1 Configuration and Compilation
 
 =over 4
 
 =item *
 
-L<Unescaped left brace in regex is illegal here in regex; marked by S<<-- HERE> in mE<sol>%sE<sol>|perldiag/"Unescaped left brace in regex is illegal here in regex; marked by S<<-- HERE> in m/%s/">
+F<Configure> now aborts if both "-Duselongdouble" and "-Dusequadmath" are
+requested.
+L<[perl #126203]|https://rt.perl.org/Public/Bug/Display.html?id=126203>
+
+=item *
 
-The word "here" has been added to the message that was raised in
-v5.25.1.  This is to indicate that there are contexts in which unescaped
-left braces are not (yet) illegal.
+Fixed a bug in which F<Configure> could append "-quadmath" to the archname even
+if it was already present.
+L<[perl #128538]|https://rt.perl.org/Public/Bug/Display.html?id=128538>
+
+=item *
+
+Clang builds with "-DPERL_GLOBAL_STRUCT" or "-DPERL_GLOBAL_STRUCT_PRIVATE" have
+been fixed (by disabling Thread Safety Analysis for these configurations).
 
 =back
 
-=head1 Configuration and Compilation
+=head1 Testing
 
 =over 4
 
 =item *
 
-F<make_ext.pl> no longer updates a module's F<pm_to_blib> file when no
-files require updates.  This could cause dependencies, F<perlmain.c>
-in particular, to be rebuilt unnecessarily.  [perl #126710]
+A new test script, F<t/op/decl-refs.t>, has been added to test the new feature,
+"Declaring a reference to a variable".
 
 =item *
 
-The output of C<perl -V> has been reformatted so that each configuration
-and compile-time option is now listed one per line, to improve
-readability.
+A new test script, F<t/re/anyof.t>, has been added to test that the ANYOF nodes
+generated by bracketed character classes are as expected.
 
 =back
 
-=head1 Testing
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
 
 =over 4
 
-=item *
+=item VAX
 
-F<t/harness> now tries really hard not to run tests outside of the Perl
-source tree. [perl #124050]
+VAX floating point formats are now supported.
 
 =back
 
-=head1 Internal Changes
+=head1 Selected Bug Fixes
 
 =over 4
 
 =item *
 
-Perl no longer panics when switching into some locales on machines with
-buggy C<strxfrm()> implementations in their libc. [perl #121734]
+An assertion failure with C<%: = 0> has been fixed.
+L<[perl #128238]|https://rt.perl.org/Public/Bug/Display.html?id=128238>
 
-=back
+=item *
 
-=head1 Selected Bug Fixes
+In Perl 5.18, the parsing of C<"$foo::$bar"> was accidentally changed, such
+that it would be treated as C<$foo."::".$bar>.  The previous behavior, which
+was to parse it as C<$foo:: . $bar>, has been restored.
+L<[perl #128478]|https://rt.perl.org/Public/Bug/Display.html?id=128478>
 
-=over 4
+=item *
+
+Since Perl 5.20, line numbers have been off by one when perl is invoked with
+the B<-x> switch.  This has been fixed.
+L<[perl #128508]|https://rt.perl.org/Public/Bug/Display.html?id=128508>
 
 =item *
 
-C< until ($x = 1) { ... } > and C< ... until $x = 1 > now properly
-warn when syntax warnings are enabled.  [perl #127333]
+Vivifying a subroutine stub in a deleted stash (e.g., C<delete $My::{"Foo::"};
+\&My::Foo::foo>) no longer crashes.  It had begun crashing in Perl 5.18.
+L<[perl #128532]|https://rt.perl.org/Public/Bug/Display.html?id=128532>
 
 =item *
 
-socket() now leaves the error code returned by the system in C<$!> on
-failure.  [perl #128316]
+Some obscure cases of subroutines and file handles being freed at the same time
+could result in crashes, but have been fixed.  The crash was introduced in Perl
+5.22.
+L<[perl #128597]|https://rt.perl.org/Public/Bug/Display.html?id=128597>
 
 =item *
 
-Assignment variants of any bitwise ops under the C<bitwise> feature would
-crash if the left-hand side was an array or hash.  [perl #128204]
+Code that looks for a variable name associated with an uninitialized value
+could cause an assertion in cases where magic is involved, such as
+C<$ISA[0][0]>.  This has now been fixed.
+L<[perl #128253]|https://rt.perl.org/Public/Bug/Display.html?id=128253>
+
+=item *
+
+A crash caused by code generating the warning "Subroutine STASH::NAME
+redefined" in cases such as C<sub P::f{} undef *P::; *P::f =sub{};> has been
+fixed.  In these cases, where the STASH is missing, the warning will now appear
+as "Subroutine NAME redefined".
+L<[perl #128257]|https://rt.perl.org/Public/Bug/Display.html?id=128257>
+
+=item *
+
+Fixed an assertion triggered by some code that handles deprecated behavior in
+formats, e.g. in cases like this:
+
+    format STDOUT =
+    @
+    0"$x"
+
+L<[perl #128255]|https://rt.perl.org/Public/Bug/Display.html?id=128255>
 
 =item *
 
-C<require> followed by a single colon (as in C<foo() ? require : ...> is
-now parsed correctly as C<require> with implicit $_, rather than
-C<require "">.  [perl #128307]
+A possible divide by zero in string transformation code on Windows has been
+avoided, fixing a crash when collating an empty string.
+L<[perl #128618]|https://rt.perl.org/Public/Bug/Display.html?id=128618>
+
+=item *
+
+Some regular expression parsing glitches could lead to assertion failures with
+regular expressions such as C</(?<=/> and C</(?<!/>.  This has now been fixed.
+L<[perl #128170]|https://rt.perl.org/Public/Bug/Display.html?id=128170>
+
+=back
+
+=head1 Errata From Previous Releases
+
+=over 4
 
 =item *
 
-Scalar C<keys %hash> can now be assigned to consistently in all scalar
-lvalue contexts.  Previously it worked for some contexts but not others.
+Parsing bad POSIX charclasses no longer leaks memory.  This was fixed in Perl
+5.25.2
+L<[perl #128313]|https://rt.perl.org/Public/Bug/Display.html?id=128313>
 
 =item *
 
-List assignment to C<vec> or C<substr> with an array or hash for its first
-argument used to result in crashes or "Can't coerce" error messages at run
-time, unlike scalar assignment, which would give an error at compile time.
-List assignment now gives a compile-time error, too.  [perl #128260]
+Fixed issues with recursive regexes.  The behavior was fixed in Perl 5.24.0.
+L<[perl #126182]|https://rt.perl.org/Public/Bug/Display.html?id=126182>
 
 =back
 
 =head1 Acknowledgements
 
-Perl 5.25.2 represents approximately 4 weeks of development since Perl 5.25.1
-and contains approximately 32,000 lines of changes across 430 files from 28
+Perl 5.25.3 represents approximately 4 weeks of development since Perl 5.25.2
+and contains approximately 67,000 lines of changes across 510 files from 25
 authors.
 
 Excluding auto-generated files, documentation and release tools, there were
-approximately 27,000 lines of changes to 300 .pm, .t, .c and .h files.
+approximately 40,000 lines of changes to 290 .pm, .t, .c and .h files.
 
 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.25.2:
+of users and developers.  The following people are known to have contributed
+the improvements that became Perl 5.25.3:
 
-Aaron Crane, Andreas König, Andy Lester, Chad Granum, Chase Whitener, Chris
-'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsåker, Dan Collins,
-David Mitchell, Dominic Hargreaves, Ed Avis, Father Chrysostomos, H.Merijn
-Brand, Ivan Pozdeev, James E Keenan, Jarkko Hietaniemi, Jerry D. Hedden, Jim
-Cromie, Karl Williamson, Lukas Mai, Matthew Horsfall, Misty De Meo, Samuel
-Thibault, Sawyer X, Sullivan Beck, Tony Cook, Yves Orton.
+Aaron Crane, Ævar Arnfjörð Bjarmason, Alex Vandiver, Aristotle Pagaltzis,
+Chad Granum, Chris 'BinGOs' Williams, Chris Lamb, Craig A. Berry, Dan Collins,
+David Mitchell, Father Chrysostomos, H.Merijn Brand, Jarkko Hietaniemi, Karl
+Williamson, Lukas Mai, Matthew Horsfall, Salvador Fandiño, Sawyer X,
+Sébastien Aperghis-Tramoni, Steffen Müller, Steve Hay, Todd Rinaldo, Tony
+Cook, Unicode Consortium, 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
+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
+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
@@ -454,8 +464,8 @@ 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 perl bug database
-at L<https://rt.perl.org/> .  There may also be information at
+If you find what you think is a bug, you might check the perl bug database at
+L<https://rt.perl.org/> .  There may also be information at
 L<http://www.perl.org/> , the Perl Home Page.
 
 If you believe you have an unreported bug, please run the L<perlbug> program
@@ -465,8 +475,8 @@ 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 see
-L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION>
-for details of how to report the issue.
+L<perlsec/SECURITY VULNERABILITY CONTACT INFORMATION> for details of how to
+report the issue.
 
 =head1 SEE ALSO
 
index 4164baf..146cd52 100644 (file)
@@ -1893,6 +1893,18 @@ valid magic number.
 you have also specified an explicit size for the string.  See
 L<perlfunc/pack>.
 
+=item Declaring references is experimental
+
+(S experimental::declared_refs) This warning is emitted if you use
+a reference constructor on the right-hand side of C<my>, C<state>, C<our>, or
+C<local>.  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::declared_refs";
+    use feature "declared_refs";
+    $fooref = my \$foo;
+
 =for comment
 The following are used in lib/diagnostics.t for testing two =items that
 share the same description.  Changes here need to be propagated to there
@@ -2086,6 +2098,11 @@ unlikely to be what you want.
 described in L<perlunicode> and L<perlre>.  You used C<\p> or C<\P> in
 a regular expression without specifying the property name.
 
+=item ${^ENCODING} is no longer supported
+
+(D deprecated) The special variable C<${^ENCODING}>, formerly used to implement
+the C<encoding> pragma, is no longer supported as of Perl 5.26.0.
+
 =item entering effective %s failed
 
 (F) While under the C<use filetest> pragma, switching the real and
@@ -5876,6 +5893,14 @@ think the U.S. Government thinks it's a secret, or at least that they
 will continue to pretend that it is.  And if you quote me on that, I
 will deny it.
 
+=item The experimental declared_refs feature is not enabled
+
+(F) To declare references to variables, as in C<my \%x>, you must first enable
+the feature:
+
+    no warnings "experimental::declared_refs";
+    use feature "declared_refs";
+
 =item The %s function is unimplemented
 
 (F) The function indicated isn't implemented on this architecture,
index 2e33177..5e734b6 100644 (file)
@@ -120,6 +120,18 @@ L<[perl #119453]|https://rt.perl.org/rt3/Ticket/Display.html?id=119453>.
 
 See also L<perlrun>
 
+=item Declaring a reference to a variable
+
+Introduced in Perl 5.26.0
+
+Using this feature triggers warnings in the category
+C<experimental::declared_refs>.
+
+The ticket for this feature is
+L<[perl #128654]|https://rt.perl.org/rt3/Ticket/Display.html?id=128654>.
+
+See also: L<perlref/Declaring a Reference to a Variable>
+
 =item There is an C<installhtml> target in the Makefile.
 
 The ticket for this feature is
index 5c778f1..2ac48b9 100644 (file)
@@ -6648,12 +6648,13 @@ C<SEEK_CUR>, and C<SEEK_END> (start of the file, current position, end
 of the file) from the L<Fcntl> module.  Returns C<1> on success, false
 otherwise.
 
-Note the I<in bytes>: even if the filehandle has been set to
-operate on characters (for example by using the C<:encoding(utf8)> open
-layer), L<C<tell>|/tell FILEHANDLE> will return byte offsets, not
-character offsets (because implementing that would render
-L<C<seek>|/seek FILEHANDLE,POSITION,WHENCE> and
-L<C<tell>|/tell FILEHANDLE> rather slow).
+Note the emphasis on bytes: even if the filehandle has been set to operate
+on characters (for example using the C<:encoding(utf8)> I/O layer), the
+L<C<seek>|/seek FILEHANDLE,POSITION,WHENCE>,
+L<C<tell>|/tell FILEHANDLE>, and
+L<C<sysseek>|/sysseek FILEHANDLE,POSITION,WHENCE>
+family of functions use byte offsets, not character offsets,
+because seeking to a character offset would be very slow in a UTF-8 file.
 
 If you want to position the file for
 L<C<sysread>|/sysread FILEHANDLE,SCALAR,LENGTH,OFFSET> or
@@ -8171,68 +8172,16 @@ X<study>
 
 =item study
 
-=for Pod::Functions optimize input data for repeated searches
-
-B<Note that since Perl version 5.16 this function has been a no-op, but
-this might change in a future release.>
-
-May take extra time to study SCALAR (L<C<$_>|perlvar/$_> if unspecified)
-in anticipation
-of doing many pattern matches on the string before it is next modified.
-This may or may not save time, depending on the nature and number of
-patterns you are searching and the distribution of character
-frequencies in the string to be searched; you probably want to compare
-run times with and without it to see which is faster.  Those loops
-that scan for many short constant strings (including the constant
-parts of more complex patterns) will benefit most.
+=for Pod::Functions no-op, formerly optimized input data for repeated searches
 
-(The way L<C<study>|/study SCALAR> used to work is this: a linked list
-of every
-character in the string to be searched is made, so we know, for
-example, where all the C<'k'> characters are.  From each search string,
-the rarest character is selected, based on some static frequency tables
-constructed from some C programs and English text.  Only those places
-that contain this "rarest" character are examined.)
+At this time, C<study> does nothing. This may change in the future.
 
-For example, here is a loop that inserts index producing entries
-before any line containing a certain pattern:
-
-    while (<>) {
-        study;
-        print ".IX foo\n"    if /\bfoo\b/;
-        print ".IX bar\n"    if /\bbar\b/;
-        print ".IX blurfl\n" if /\bblurfl\b/;
-        # ...
-        print;
-    }
+Prior to Perl version 5.16, it would create an inverted index of all characters
+that occurred in the given SCALAR (or L<C<$_>|perlvar/$_> if unspecified). When
+matching a pattern, the rarest character from the pattern would be looked up in
+this index. Rarity was based on some static frequency tables constructed from
+some C programs and English text.
 
-In searching for C</\bfoo\b/>, only locations in L<C<$_>|perlvar/$_>
-that contain C<f>
-will be looked at, because C<f> is rarer than C<o>.  In general, this is
-a big win except in pathological cases.  The only question is whether
-it saves you more time than it took to build the linked list in the
-first place.
-
-Note that if you have to look for strings that you don't know till
-runtime, you can build an entire loop as a string and L<C<eval>|/eval
-EXPR> that to avoid recompiling all your patterns all the time.
-Together with undefining L<C<$E<sol>>|perlvar/$E<sol>> to input entire
-files as one record, this can be quite
-fast, often faster than specialized programs like L<fgrep(1)>.  The following
-scans a list of files (C<@files>) for a list of words (C<@words>), and prints
-out the names of those files that contain a match:
-
-    my $search = 'local $/; while (<>) { study;';
-    foreach my $word (@words) {
-        $search .= "++\$seen{\$ARGV} if /\\b$word\\b/;\n";
-    }
-    $search .= "}";
-    @ARGV = @files;
-    my %seen;
-    eval $search;        # this screams
-    foreach my $file (sort keys(%seen)) {
-        print $file, "\n";
-    }
 
 =item sub NAME BLOCK
 X<sub>
@@ -8531,17 +8480,19 @@ X<sysseek> X<lseek>
 
 =for Pod::Functions +5.004 position I/O pointer on handle used with sysread and syswrite
 
-Sets FILEHANDLE's system position in bytes using L<lseek(2)>.  FILEHANDLE may
+Sets FILEHANDLE's system position I<in bytes> using L<lseek(2)>.  FILEHANDLE may
 be an expression whose value gives the name of the filehandle.  The values
 for WHENCE are C<0> to set the new position to POSITION; C<1> to set the it
 to the current position plus POSITION; and C<2> to set it to EOF plus
 POSITION, typically negative.
 
-Note the I<in bytes>: even if the filehandle has been set to operate
-on characters (for example by using the C<:encoding(utf8)> I/O layer),
-L<C<tell>|/tell FILEHANDLE> will return byte offsets, not character
-offsets (because implementing that would render
-L<C<sysseek>|/sysseek FILEHANDLE,POSITION,WHENCE> unacceptably slow).
+Note the emphasis on bytes: even if the filehandle has been set to operate
+on characters (for example using the C<:encoding(utf8)> I/O layer), the
+L<C<seek>|/seek FILEHANDLE,POSITION,WHENCE>,
+L<C<tell>|/tell FILEHANDLE>, and
+L<C<sysseek>|/sysseek FILEHANDLE,POSITION,WHENCE>
+family of functions use byte offsets, not character offsets,
+because seeking to a character offset would be very slow in a UTF-8 file.
 
 L<C<sysseek>|/sysseek FILEHANDLE,POSITION,WHENCE> bypasses normal
 buffered IO, so mixing it with reads other than
@@ -8702,19 +8653,21 @@ error.  FILEHANDLE may be an expression whose value gives the name of
 the actual filehandle.  If FILEHANDLE is omitted, assumes the file
 last read.
 
-Note the I<in bytes>: even if the filehandle has been set to
-operate on characters (for example by using the C<:encoding(utf8)> open
-layer), L<C<tell>|/tell FILEHANDLE> will return byte offsets, not
-character offsets (because that would render
-L<C<seek>|/seek FILEHANDLE,POSITION,WHENCE> and
-L<C<tell>|/tell FILEHANDLE> rather slow).
+Note the emphasis on bytes: even if the filehandle has been set to operate
+on characters (for example using the C<:encoding(utf8)> I/O layer), the
+L<C<seek>|/seek FILEHANDLE,POSITION,WHENCE>,
+L<C<tell>|/tell FILEHANDLE>, and
+L<C<sysseek>|/sysseek FILEHANDLE,POSITION,WHENCE>
+family of functions use byte offsets, not character offsets,
+because seeking to a character offset would be very slow in a UTF-8 file.
 
 The return value of L<C<tell>|/tell FILEHANDLE> for the standard streams
 like the STDIN depends on the operating system: it may return -1 or
 something else.  L<C<tell>|/tell FILEHANDLE> on pipes, fifos, and
 sockets usually returns -1.
 
-There is no C<systell> function.  Use C<sysseek($fh, 0, 1)> for that.
+There is no C<systell> function.  Use
+L<C<sysseek($fh, 0, 1)>|/sysseek FILEHANDLE,POSITION,WHENCE> for that.
 
 Do not use L<C<tell>|/tell FILEHANDLE> (or other buffered I/O
 operations) on a filehandle that has been manipulated by
index af4cc80..e0a5289 100644 (file)
@@ -567,6 +567,7 @@ the strings?).
  Steve     5.22.1       2015-Dec-13
  Steve     5.22.2-RC1   2016-Apr-10
  Steve     5.22.2       2016-Apr-29
+ Steve     5.22.3-RC1   2016-Jul-17
 
  Ricardo   5.23.0       2015-Jun-20     The 5.23 development track
  Matthew   5.23.1       2015-Jul-20
@@ -585,10 +586,12 @@ the strings?).
  Ricardo   5.24.0-RC4   2016-May-02
  Ricardo   5.24.0-RC5   2016-May-04
  Ricardo   5.24.0       2016-May-09
+ Steve     5.24.1-RC1   2016-Jul-17
 
  Ricardo   5.25.0       2016-May-09     The 5.25 development track
  Sawyer X  5.25.1       2016-May-20
  Matthew   5.25.2       2016-Jun-20
+ Steve     5.25.3       2016-Jul-20
 
 =head2 SELECTED RELEASE SIZES
 
index 658fcf6..f3e7c69 100644 (file)
@@ -78,7 +78,7 @@ Dig into a bunch of modules to see how they're written. I'd suggest
 starting with L<Text::Tabs|Text::Tabs>, since it's in the standard
 library and is nice and simple, and then looking at something a little
 more complex like L<File::Copy|File::Copy>.  For object oriented
-code, C<WWW::Mechanize> or the C<Email::*> modules provide some good
+code, L<WWW::Mechanize> or the C<Email::*> modules provide some good
 examples.
 
 These should give you an overall feel for how modules are laid out and
@@ -88,7 +88,7 @@ written.
 
 There are a lot of modules on CPAN, and it's easy to miss one that's
 similar to what you're planning on contributing. Have a good plough
-through the L<http://search.cpan.org> and make sure you're not the one
+through L<http://metacpan.org> and make sure you're not the one
 reinventing the wheel!
 
 =item Discuss the need
@@ -212,13 +212,18 @@ more than just checking your module will compile.
 L<Test::Simple|Test::Simple> and L<Test::More|Test::More> are good
 places to start when writing a test suite.
 
-=item Write the README
+=item Write the F<README>
 
 If you're uploading to CPAN, the automated gremlins will extract the
 README file and place that in your CPAN directory. It'll also appear in
 the main F<by-module> and F<by-category> directories if you make it onto
 the modules list. It's a good idea to put here what the module actually
-does in detail, and the user-visible changes since the last release.
+does in detail.
+
+=item Write F<Changes>
+
+Add any user-visible changes since the last release to your F<Changes>
+file.
 
 =back
 
@@ -232,14 +237,15 @@ Every developer publishing modules on CPAN needs a CPAN ID.  Visit
 C<http://pause.perl.org/>, select "Request PAUSE Account", and wait for
 your request to be approved by the PAUSE administrators.
 
-=item C<perl Makefile.PL; make test; make dist>
+=item C<perl Makefile.PL; make test; make distcheck; make dist>
 
 Once again, C<module-starter> or C<h2xs> has done all the work for you.
 They produce the standard C<Makefile.PL> you see when you download and
 install modules, and this produces a Makefile with a C<dist> target.
 
 Once you've ensured that your module passes its own tests - always a
-good thing to make sure - you can C<make dist>, and the Makefile will
+good thing to make sure - you can C<make distcheck> to make sure
+everything looks OK, followed by C<make dist>, and the Makefile will
 hopefully produce you a nice tarball of your module, ready for upload.
 
 =item Upload the tarball
@@ -248,12 +254,8 @@ The email you got when you received your CPAN ID will tell you how to
 log in to PAUSE, the Perl Authors Upload SErver. From the menus there,
 you can upload your module to CPAN.
 
-=item Announce to the modules list
-
-Once uploaded, it'll sit unnoticed in your author directory. If you want
-it connected to the rest of the CPAN, you'll need to go to "Register
-Namespace" on PAUSE.  Once registered, your module will appear in the
-by-module and by-category listings on CPAN.
+Alternatively you can use the F<cpan-upload> script, part of the
+L<CPAN::Uploader> distribution on CPAN.
 
 =item Fix bugs!
 
@@ -274,5 +276,5 @@ Updated by Kirrily "Skud" Robert, C<skud@cpan.org>
 L<perlmod>, L<perlmodlib>, L<perlmodinstall>, L<h2xs>, L<strict>,
 L<Carp>, L<Exporter>, L<perlpod>, L<Test::Simple>, L<Test::More>
 L<ExtUtils::MakeMaker>, L<Module::Build>, L<Module::Starter>
-http://www.cpan.org/ , Ken Williams's tutorial on building your own
-module at http://mathforum.org/~ken/perl_modules.html
+L<http://www.cpan.org/>, Ken Williams's tutorial on building your own
+module at L<http://mathforum.org/~ken/perl_modules.html>
index 365c962..d9dc6a6 100644 (file)
@@ -71,7 +71,8 @@ values only, not array values.
     left       and
     left       or xor
 
-In the following sections, these operators are covered in precedence order.
+In the following sections, these operators are covered in detail, in the
+same order in which they appear in the table above.
 
 Many operators can be overloaded for objects.  See L<overload>.
 
index 3df9bd2..52d44ae 100644 (file)
@@ -623,7 +623,7 @@ If the final space character in the span is a horizontal white space, it
 is broken out so that it attaches instead to the combining character.
 To be precise, if a span of white space that ends in a horizontal space
 has the character immediately following it have either of the Word
-Boundary property values "Extend" or "Format", the boundary between the
+Boundary property values "Extend", "Format" or "ZWJ", the boundary between the
 final horizontal space character and the rest of the span matches
 C<\b{wb}>.  In all other cases the boundary between two white space
 characters matches C<\B{wb}>.)
index 8959ba5..dfbb52c 100644 (file)
@@ -909,6 +909,29 @@ will only be visible within that inner sub, and will not affect the outer
 subroutine where the variables are declared.  This bizarre behavior is
 subject to change.
 
+=head1 Declaring a Reference to a Variable
+
+Beginning in v5.26.0, the referencing operator can come after C<my>,
+C<state>, C<our>, or C<local>.  This syntax must be enabled with C<use
+feature 'declared_refs'>.  It is experimental, and will warn by default
+unless C<no warnings 'experimental::refaliasing'> is in effect.
+
+This feature makes these:
+
+    my \$x;
+    our \$y;
+
+equivalent to:
+
+    \my $x;
+    \our $x;
+
+It is intended mainly for use in assignments to references (see
+L</Assigning to References>, above).  It also allows the backslash to be
+used on just some items in a list of declared variables:
+
+    my ($foo, \@bar, \%baz); # equivalent to:  my $foo, \my(@bar, %baz);
+
 =head1 SEE ALSO
 
 Besides the obvious documents, source code can be instructive.
index efebb11..734ca5c 100644 (file)
@@ -1986,14 +1986,18 @@ also listed there.  Some synonyms are a single character.  For these,
 you can drop the braces.  For instance, C<\pM> is the same thing as
 C<\p{Mark}>, meaning things like accent marks.
 
-The Unicode C<\p{Script}> property is used to categorize every Unicode
-character into the language script it is written in.  For example,
+The Unicode C<\p{Script}> and C<\p{Script_Extensions}> properties are
+used to categorize every Unicode character into the language script it
+is written in.  (C<Script_Extensions> is an improved version of
+C<Script>, which is retained for backward compatibility, and so you
+should generally use C<Script_Extensions>.)
+For example,
 English, French, and a bunch of other European languages are written in
 the Latin script.  But there is also the Greek script, the Thai script,
 the Katakana script, etc.  You can test whether a character is in a
-particular script with, for example C<\p{Latin}>, C<\p{Greek}>,
-or C<\p{Katakana}>.  To test if it isn't in the Balinese script, you
-would use C<\P{Balinese}>.
+particular script (based on C<Script_Extensions>) with, for example
+C<\p{Latin}>, C<\p{Greek}>, or C<\p{Katakana}>.  To test if it isn't in
+the Balinese script, you would use C<\P{Balinese}>.
 
 What we have described so far is the single form of the C<\p{...}> character
 classes.  There is also a compound form which you may run into.  These
@@ -2001,8 +2005,8 @@ look like C<\p{name=value}> or C<\p{name:value}> (the equals sign and colon
 can be used interchangeably).  These are more general than the single form,
 and in fact most of the single forms are just Perl-defined shortcuts for common
 compound forms.  For example, the script examples in the previous paragraph
-could be written equivalently as C<\p{Script=Latin}>, C<\p{Script:Greek}>,
-C<\p{script=katakana}>, and C<\P{script=balinese}> (case is irrelevant
+could be written equivalently as C<\p{Script_Extensions=Latin}>, C<\p{Script_Extensions:Greek}>,
+C<\p{script_extensions=katakana}>, and C<\P{script_extensions=balinese}> (case is irrelevant
 between the C<{}> braces).  You may
 never have to use the compound forms, but sometimes it is necessary, and their
 use can make your code easier to understand.
index 7b89f57..87a2126 100644 (file)
@@ -828,6 +828,11 @@ referenced by C<$self-E<gt>{LIST}>:
        return scalar %{ $self->{LIST} }
     }
 
+NOTE: In perl 5.25 the behavior of scalar %hash on an untied hash changed
+to return the count of keys. Prior to this it returned a string containing
+information about the bucket setup of the hash. See
+L<Hash::Util/bucket_ratio> for a backwards compatibility path.
+
 =item UNTIE this
 X<UNTIE>
 
@@ -1196,10 +1201,11 @@ modules L<Tie::Scalar>, L<Tie::Array>, L<Tie::Hash>, or L<Tie::Handle>.
 
 =head1 BUGS
 
-The bucket usage information provided by C<scalar(%hash)> is not
+The normal return provided by C<scalar(%hash)> is not
 available.  What this means is that using %tied_hash in boolean
 context doesn't work right (currently this always tests false,
 regardless of whether the hash is empty or hash elements).
+[ This paragraph needs review in light of changes in 5.25 ]
 
 Localizing tied arrays or hashes does not work.  After exiting the
 scope the arrays or the hashes are not restored.
index 775a430..8346b23 100644 (file)
@@ -75,7 +75,7 @@ utf8>> is needed.>  (See L<utf8>).
 
 =item C<BOM>-marked scripts and L<UTF-16|/Unicode Encodings> scripts autodetected
 
-However, if a Perl script begins with the Unicode C<BOM> (UTF-16LE,
+If a Perl script begins with the Unicode C<BOM> (UTF-16LE,
 UTF16-BE, or UTF-8), or if the script looks like non-C<BOM>-marked
 UTF-16 of either endianness, Perl will correctly read in the script as
 the appropriate Unicode encoding.  (C<BOM>-less UTF-8 cannot be
@@ -602,16 +602,19 @@ The world's languages are written in many different scripts.  This sentence
 written in Cyrillic, and Greek is written in, well, Greek; Japanese mainly in
 Hiragana or Katakana.  There are many more.
 
-The Unicode C<Script> and C<Script_Extensions> properties give what script a
-given character is in.  Either property can be specified with the
-compound form like
+The Unicode C<Script> and C<Script_Extensions> properties give what
+script a given character is in.  The C<Script_Extensions> property is an
+improved version of C<Script>, as demonstrated below.  Either property
+can be specified with the compound form like
 C<\p{Script=Hebrew}> (short: C<\p{sc=hebr}>), or
 C<\p{Script_Extensions=Javanese}> (short: C<\p{scx=java}>).
 In addition, Perl furnishes shortcuts for all
-C<Script> property names.  You can omit everything up through the equals
-(or colon), and simply write C<\p{Latin}> or C<\P{Cyrillic}>.
-(This is not true for C<Script_Extensions>, which is required to be
-written in the compound form.)
+C<Script_Extensions> property names.  You can omit everything up through
+the equals (or colon), and simply write C<\p{Latin}> or C<\P{Cyrillic}>.
+(This is not true for C<Script>, which is required to be
+written in the compound form.  Prior to Perl v5.26, the single form
+returned the plain old C<Script> version, but was changed because
+C<Script_Extensions> gives better results.)
 
 The difference between these two properties involves characters that are
 used in multiple scripts.  For example the digits '0' through '9' are
@@ -645,7 +648,11 @@ fewer characters in the C<Common> script, and correspondingly more in
 other scripts.  It is new in Unicode version 6.0, and its data are likely
 to change significantly in later releases, as things get sorted out.
 New code should probably be using C<Script_Extensions> and not plain
-C<Script>.
+C<Script>.  If you compile perl with a Unicode release that doesn't have
+C<Script_Extensions>, the single form Perl extensions will instead refer
+to the plain C<Script> property.  If you compile with a version of
+Unicode that doesn't have the C<Script> property, these extensions will
+not be defined at all.
 
 (Actually, besides C<Common>, the C<Inherited> script, contains
 characters that are used in multiple scripts.  These are modifier
@@ -658,10 +665,13 @@ C<Script>, but not in C<Script_Extensions>.)
 It is worth stressing that there are several different sets of digits in
 Unicode that are equivalent to 0-9 and are matchable by C<\d> in a
 regular expression.  If they are used in a single language only, they
-are in that language's C<Script> and C<Script_Extension>.  If they are
+are in that language's C<Script> and C<Script_Extensions>.  If they are
 used in more than one script, they will be in C<sc=Common>, but only
 if they are used in many scripts should they be in C<scx=Common>.
 
+The explanation above has omitted some detail; refer to UAX#24 "Unicode
+Script Property": L<http://www.unicode.org/reports/tr24>.
+
 A complete list of scripts and their shortcuts is in L<perluniprops>.
 
 =head3 B<Use of the C<"Is"> Prefix>
@@ -690,7 +700,7 @@ C<Common> script.
 For more about scripts versus blocks, see UAX#24 "Unicode Script Property":
 L<http://www.unicode.org/reports/tr24>
 
-The C<Script> or C<Script_Extensions> properties are likely to be the
+The C<Script_Extensions> or C<Script> properties are likely to be the
 ones you want to use when processing
 natural language; the C<Block> property may occasionally be useful in working
 with the nuts and bolts of Unicode.
@@ -711,10 +721,11 @@ longer work.  The extensions are mentioned here for completeness:  Take
 the block name and prefix it with one of: C<In> (for example
 C<\p{Blk=Arrows}> can currently be written as C<\p{In_Arrows}>); or
 sometimes C<Is> (like C<\p{Is_Arrows}>); or sometimes no prefix at all
-(C<\p{Arrows}>).  As of this writing (Unicode 8.0) there are no
+(C<\p{Arrows}>).  As of this writing (Unicode 9.0) there are no
 conflicts with using the C<In_> prefix, but there are plenty with the
 other two forms.  For example, C<\p{Is_Hebrew}> and C<\p{Hebrew}> mean
-C<\p{Script=Hebrew}> which is NOT the same thing as C<\p{Blk=Hebrew}>.  Our
+C<\p{Script_Extensions=Hebrew}> which is NOT the same thing as
+C<\p{Blk=Hebrew}>.  Our
 advice used to be to use the C<In_> prefix as a single form way of
 specifying a block.  But Unicode 8.0 added properties whose names begin
 with C<In>, and it's now clear that it's only luck that's so far
@@ -1069,38 +1080,40 @@ See L<Encode>.
 =head2 Unicode Regular Expression Support Level
 
 The following list of Unicode supported features for regular expressions describes
-all features currently directly supported by core Perl.  The references to "Level N"
-and the section numbers refer to the Unicode Technical Standard #18,
-"Unicode Regular Expressions", version 13, from August 2008.
-
-=over 4
-
-=item *
-
-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     - 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]
+all features currently directly supported by core Perl.  The references
+to "Level I<N>" and the section numbers refer to
+L<UTS#18 "Unicode Regular Expressions"|http://www.unicode.org/reports/tr18>,
+version 13, November 2013.
+
+=head3 Level 1 - Basic Unicode Support
+
+ RL1.1   Hex Notation                     - Done          [1]
+ RL1.2   Properties                       - Done          [2]
+ RL1.2a  Compatibility Properties         - Done          [3]
+ RL1.3   Subtraction and Intersection     - Experimental  [4]
+ RL1.4   Simple Word Boundaries           - Done          [5]
+ RL1.5   Simple Loose Matches             - Done          [6]
+ RL1.6   Line Boundaries                  - Partial       [7]
+ RL1.7   Supplementary Code Points        - Done          [8]
 
 =over 4
 
 =item [1] C<\N{U+...}> and C<\x{...}>
 
-=item [2] C<\p{...}> C<\P{...}>
+=item [2]
+C<\p{...}> C<\P{...}>.  This requirement is for a minimal list of
+properties.  Perl supports these and all other Unicode character
+properties, as R2.7 asks (see L</"Unicode Character Properties"> above).
 
-=item [3] supports not only minimal list, but all Unicode character
-properties (see Unicode Character Properties above)
+=item [3]
+Perl has C<\d> C<\D> C<\s> C<\S> C<\w> C<\W> C<\X> C<[:I<prop>:]>
+C<[:^I<prop>:]>, plus all the properties specified by
+L<http://www.unicode.org/reports/tr18/#Compatibility_Properties>.  These
+are described above in L</Other Properties>
 
-=item [4] C<\d> C<\D> C<\s> C<\S> C<\w> C<\W> C<\X> C<[:I<prop>:]>
-C<[:^I<prop>:]>
+=item [4]
 
-=item [5] The experimental feature starting in v5.18 C<"(?[...])"> accomplishes
+The experimental feature C<"(?[...])"> starting in v5.18 accomplishes
 this.
 
 See L<perlre/(?[ ])>.  If you don't want to use an experimental
@@ -1109,7 +1122,6 @@ feature, you can use one of the following:
 =over 4
 
 =item *
-
 Regular expression lookahead
 
 You can mimic class subtraction using lookahead.
@@ -1143,9 +1155,12 @@ C<"+"> for union, C<"-"> for removal (set-difference), C<"&"> for intersection
 
 =back
 
-=item [6] C<\b> C<\B>
+=item [5]
+C<\b> C<\B> meet most, but not all, the details of this requirement, but
+C<\b{wb}> and C<\B{wb}> do, as well as the stricter R2.3.
+
+=item [6]
 
-=item [7]
 Note that Perl does Full case-folding in matching, not Simple:
 
 For example C<U+1F88> is equivalent to C<U+1F00 U+03B9>, instead of just
@@ -1154,9 +1169,18 @@ 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]
-Perl treats C<\n> as the start- and end-line delimiter.  Unicode
-specifies more characters that should be so-interpreted.
+=item [7]
+
+The reason this is considered to be only partially implemented is that
+Perl has L<C<qrE<sol>\b{lb}E<sol>>|perlrebackslash/\b{lb}> and
+C<L<Unicode::LineBreak>> that are conformant with
+L<UAX#14 "Unicode Line Breaking Algorithm"|http://www.unicode.org/reports/tr14>.
+The regular expression construct provides default behavior, while the
+heavier-weight module provides customizable line breaking.
+
+But Perl treats C<\n> as the start- and end-line
+delimiter, whereas Unicode specifies more characters that should be
+so-interpreted.
 
 These are:
 
@@ -1176,63 +1200,66 @@ Also, lines should not be split within C<CRLF> (i.e. there is no
 empty line between C<\r> and C<\n>).  For C<CRLF>, try the C<:crlf>
 layer (see L<PerlIO>).
 
-=item [9] But C<qr/\b{lb}/> and C<L<Unicode::LineBreak>> are available.
-
-L<C<qrE<sol>\b{lb}E<sol>>|perlrebackslash/\b{lb}> supplies default line
-breaking conformant with
-L<UAX#14 "Unicode Line Breaking Algorithm"|http://www.unicode.org/reports/tr14>.
-
-And, the module C<L<Unicode::LineBreak>> also conformant with UAX#14,
-provides customizable line breaking.
-
-=item [10]
+=item [8]
 UTF-8/UTF-EBDDIC used in Perl allows not only C<U+10000> to
 C<U+10FFFF> but also beyond C<U+10FFFF>
 
 =back
 
-=item *
+=head3 Level 2 - Extended Unicode Support
 
-Level 2 - Extended Unicode Support
+ RL2.1   Canonical Equivalents           - Retracted     [9]
+                                           by Unicode
+ RL2.2   Extended Grapheme Clusters      - Partial       [10]
+ RL2.3   Default Word Boundaries         - Done          [11]
+ RL2.4   Default Case Conversion         - Done
+ RL2.5   Name Properties                 - Done
+ RL2.6   Wildcard Properties             - Missing
+ RL2.7   Full Properties                 - Done
 
- RL2.1   Canonical Equivalents           - MISSING       [10][11]
- RL2.2   Default Grapheme Clusters       - MISSING       [12]
- RL2.3   Default Word Boundaries         - DONE          [14]
- RL2.4   Default Loose Matches           - MISSING       [15]
- RL2.5   Name Properties                 - DONE
- RL2.6   Wildcard Properties             - MISSING
+=over 4
 
- [10] see UAX#15 "Unicode Normalization Forms"
- [11] have Unicode::Normalize but not integrated to regexes
- [12] have \X and \b{gcb} but we don't have a "Grapheme Cluster
-      Mode"
- [14] see UAX#29, Word Boundaries
- [15] This is covered in Chapter 3.13 (in Unicode 6.0)
+=item [9]
+Unicode has rewritten this portion of UTS#18 to say that getting
+canonical equivalence (see UAX#15
+L<"Unicode Normalization Forms"|http://www.unicode.org/reports/tr15>)
+is basically to be done at the programmer level.  Use NFD to write
+both your regular expressions and text to match them against (you
+can use L<Unicode::Normalize>).
 
-=item *
+=item [10]
+Perl has C<\X> and C<\b{gcb}> but we don't have a "Grapheme Cluster Mode".
+
+=item [11] see
+L<UAX#29 "Unicode Text Segmentation"|http://www.unicode.org/reports/tr29>,
+
+=back
+
+=head3 Level 3 - Tailored Support
+
+ RL3.1   Tailored Punctuation            - Missing
+ RL3.2   Tailored Grapheme Clusters      - Missing       [12]
+ RL3.3   Tailored Word Boundaries        - Missing
+ RL3.4   Tailored Loose Matches          - Retracted by Unicode
+ RL3.5   Tailored Ranges                 - Retracted by Unicode
+ RL3.6   Context Matching                - Missing       [13]
+ RL3.7   Incremental Matches             - Missing
+ RL3.8   Unicode Set Sharing             - Unicode is proposing
+                                           to retract this
+ RL3.9   Possible Match Sets             - Missing
+ RL3.10  Folded Matching                 - Retracted by Unicode
+ RL3.11  Submatchers                     - Missing
+
+=over 4
+
+=item [12]
+Perl has L<Unicode::Collate>, but it isn't integrated with regular
+expressions.  See
+L<UTS#10 "Unicode Collation Algorithms"|http://www.unicode.org/reports/tr10>.
 
-Level 3 - Tailored Support
-
- RL3.1   Tailored Punctuation            - MISSING
- RL3.2   Tailored Grapheme Clusters      - MISSING       [17][18]
- RL3.3   Tailored Word Boundaries        - MISSING
- RL3.4   Tailored Loose Matches          - MISSING
- RL3.5   Tailored Ranges                 - MISSING
- RL3.6   Context Matching                - MISSING       [19]
- RL3.7   Incremental Matches             - MISSING
-      ( RL3.8   Unicode Set Sharing )
- RL3.9   Possible Match Sets             - MISSING
- RL3.10  Folded Matching                 - MISSING       [20]
- RL3.11  Submatchers                     - MISSING
-
- [17] see UAX#10 "Unicode Collation Algorithms"
- [18] have Unicode::Collate but not integrated to regexes
- [19] have (?<=x) and (?=x), but lookaheads or lookbehinds
-      should see outside of the target substring
- [20] need insensitive matching for linguistic features other
-      than case; for example, hiragana to katakana, wide and
-      narrow, simplified Han to traditional Han (see UTR#30
-      "Character Foldings")
+=item [13]
+Perl has C<(?<=x)> and C<(?=x)>, but lookaheads or lookbehinds should
+see outside of the target substring
 
 =back
 
@@ -1827,7 +1854,7 @@ the XS level, and L<perlapi/Unicode Support> for the API details.
 Perl by default comes with the latest supported Unicode version built-in, but
 the goal is to allow you to change to use any earlier one.  In Perls
 v5.20 and v5.22, however, the earliest usable version is Unicode 5.1.
-Perl v5.18 is able to handle all earlier versions.
+Perl v5.18 and v5.24 are able to handle all earlier versions.
 
 Download the files in the desired version of Unicode from the Unicode web
 site L<http://www.unicode.org>).  These should replace the existing files in
index e1693cd..ac30509 100644 (file)
@@ -391,7 +391,7 @@ one codepoint lacking that property.
  \p{Sk}, \p{Ps}, \p{Lt}
  \p{alpha}, \p{upper}, \p{lower}
  \p{Latin}, \p{Greek}
- \p{script=Latin}, \p{script=Greek}
+ \p{script_extensions=Latin}, \p{scx=Greek}
  \p{East_Asian_Width=Wide}, \p{EA=W}
  \p{Line_Break=Hyphen}, \p{LB=HY}
  \p{Numeric_Value=4}, \p{NV=4}
index 1821b95..684cd53 100644 (file)
@@ -1917,24 +1917,19 @@ Mnemonic: value of B<-D> switch.
 =item ${^ENCODING}
 X<${^ENCODING}>
 
-DEPRECATED!!!
+This variable is no longer supported.
 
-The I<object reference> to the C<Encode> object that is used to convert
-the source code to Unicode.  Thanks to this variable your Perl script
-does not have to be written in UTF-8.  Default is C<undef>.
+It used to hold the I<object reference> to the C<Encode> object that was
+used to convert the source code to Unicode.
 
-Setting this variable to any other value than C<undef> is deprecated due
-to fundamental defects in its design and implementation.  It is planned
-to remove it from a future Perl version.  Its purpose was to allow your
-non-ASCII Perl scripts to not have to be written in UTF-8; this was
+Its purpose was to allow your non-ASCII Perl
+scripts not to have to be written in UTF-8; this was
 useful before editors that worked on UTF-8 encoded text were common, but
-that was long ago.  It causes problems, such as affecting the operation
-of other modules that aren't expecting it, causing general mayhem.  Its
-use can lead to segfaults.
+that was long ago.  It caused problems, such as affecting the operation
+of other modules that weren't expecting it, causing general mayhem.
 
-If you need something like this functionality, you should use the
-L<encoding> pragma, which is also deprecated, but has fewer nasty side
-effects.
+If you need something like this functionality, it is recommended that use
+you a simple source filter, such as L<Filter::Encoding>.
 
 If you are coming here because code of yours is being adversely affected
 by someone's use of this variable, you can usually work around it by
@@ -1946,7 +1941,7 @@ near the beginning of the functions that are getting broken.  This
 undefines the variable during the scope of execution of the including
 function.
 
-This variable was added in Perl 5.8.2.
+This variable was added in Perl 5.8.2 and removed in 5.26.0.
 
 =item ${^GLOBAL_PHASE}
 X<${^GLOBAL_PHASE}>
diff --git a/pp.c b/pp.c
index 3df0bea..4771134 100644 (file)
--- a/pp.c
+++ b/pp.c
@@ -809,17 +809,6 @@ S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping)
             Perl_croak_no_modify();
     }
 
-    if (IN_ENCODING) {
-       if (!SvUTF8(sv)) {
-           /* XXX, here sv is utf8-ized as a side-effect!
-              If encoding.pm is used properly, almost string-generating
-              operations, including literal strings, chr(), input data, etc.
-              should have been utf8-ized already, right?
-           */
-           sv_recode_to_utf8(sv, _get_encoding());
-       }
-    }
-
     s = SvPV(sv, len);
     if (chomping) {
        if (s && len) {
@@ -861,14 +850,6 @@ S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping)
                        }
                        rsptr = temp_buffer;
                    }
-                   else if (IN_ENCODING) {
-                       /* RS is 8 bit, encoding.pm is used.
-                        * Do not recode PL_rs as a side-effect. */
-                       svrecode = newSVpvn(rsptr, rslen);
-                       sv_recode_to_utf8(svrecode, _get_encoding());
-                       rsptr = SvPV_const(svrecode, rslen);
-                       rs_charlen = sv_len_utf8(svrecode);
-                   }
                    else {
                        /* RS is 8 bit, scalar is utf8.  */
                        temp_buffer = (char*)bytes_to_utf8((U8*)rsptr, &rslen);
@@ -3544,7 +3525,7 @@ PP(pp_index)
     little_utf8 = DO_UTF8(little);
     if (big_utf8 ^ little_utf8) {
        /* One needs to be upgraded.  */
-       if (little_utf8 && !IN_ENCODING) {
+       if (little_utf8) {
            /* Well, maybe instead we might be able to downgrade the small
               string?  */
            char * const pv = (char*)bytes_from_utf8((U8 *)little_p, &llen,
@@ -3566,11 +3547,7 @@ PP(pp_index)
            temp = little_utf8
                ? newSVpvn(big_p, biglen) : newSVpvn(little_p, llen);
 
-           if (IN_ENCODING) {
-               sv_recode_to_utf8(temp, _get_encoding());
-           } else {
-               sv_utf8_upgrade(temp);
-           }
+           sv_utf8_upgrade(temp);
            if (little_utf8) {
                big = temp;
                big_utf8 = TRUE;
@@ -3652,13 +3629,6 @@ PP(pp_ord)
     STRLEN len;
     const U8 *s = (U8*)SvPV_const(argsv, len);
 
-    if (IN_ENCODING && SvPOK(argsv) && !DO_UTF8(argsv)) {
-        SV * const tmpsv = sv_2mortal(newSVsv(argsv));
-        s = (U8*)sv_recode_to_utf8(tmpsv, _get_encoding());
-        len = UTF8SKIP(s);  /* Should be well-formed; so this is its length */
-        argsv = tmpsv;
-    }
-
     SETu(DO_UTF8(argsv)
            ? utf8n_to_uvchr(s, len, 0, UTF8_ALLOW_ANYUV)
            : (UV)(*s));
@@ -3720,22 +3690,6 @@ PP(pp_chr)
     *tmps = '\0';
     (void)SvPOK_only(TARG);
 
-    if (IN_ENCODING && !IN_BYTES) {
-        sv_recode_to_utf8(TARG, _get_encoding());
-       tmps = SvPVX(TARG);
-       if (SvCUR(TARG) == 0
-           || ! is_utf8_string((U8*)tmps, SvCUR(TARG))
-           || UTF8_IS_REPLACEMENT((U8*) tmps, (U8*) tmps + SvCUR(TARG)))
-       {
-           SvGROW(TARG, 2);
-           tmps = SvPVX(TARG);
-           SvCUR_set(TARG, 1);
-           *tmps++ = (char)value;
-           *tmps = '\0';
-           SvUTF8_off(TARG);
-       }
-    }
-
     SETTARG;
     return NORMAL;
 }
index 1e5b684..5a66e26 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1588,42 +1588,74 @@ Perl_qerror(pTHX_ SV *err)
 
 
 
-/* undef or delete the $INC{namesv} entry, then croak.
- * require0 indicates that the require didn't return a true value */
+/* pop a CXt_EVAL context and in addition, if it was a require then
+ * based on action:
+ *     0: do nothing extra;
+ *     1: undef  $INC{$name}; croak "$name did not return a true value";
+ *     2: delete $INC{$name}; croak "$errsv: Compilation failed in require"
+ */
 
 static void
-S_undo_inc_then_croak(pTHX_ SV *namesv, SV *err, bool require0)
+S_pop_eval_context_maybe_croak(pTHX_ PERL_CONTEXT *cx, SV *errsv, int action)
 {
-    const char *fmt;
-    HV *inc_hv = GvHVn(PL_incgv);
-    I32  klen  = SvUTF8(namesv) ? -(I32)SvCUR(namesv) : (I32)SvCUR(namesv);
-    const char *key = SvPVX_const(namesv);
+    SV  *namesv;
+    bool do_croak;
 
-    if (require0) {
-       (void)hv_delete(inc_hv, key, klen, G_DISCARD);
-       fmt = "%"SVf" did not return a true value";
-        err = namesv;
-    }
-    else {
-        (void)hv_store(inc_hv, key, klen, &PL_sv_undef, 0);
-        fmt = "%"SVf"Compilation failed in require";
-        err = err ? err : newSVpvs_flags("Unknown error\n", SVs_TEMP);
+    CX_LEAVE_SCOPE(cx);
+    do_croak = action && (CxOLD_OP_TYPE(cx) == OP_REQUIRE);
+    if (do_croak) {
+        /* keep namesv alive after cx_popeval() */
+        namesv = cx->blk_eval.old_namesv;
+        cx->blk_eval.old_namesv = NULL;
+        sv_2mortal(namesv);
     }
+    cx_popeval(cx);
+    cx_popblock(cx);
+    CX_POP(cx);
+
+    if (do_croak) {
+        const char *fmt;
+        HV *inc_hv = GvHVn(PL_incgv);
+        I32  klen  = SvUTF8(namesv) ? -(I32)SvCUR(namesv) : (I32)SvCUR(namesv);
+        const char *key = SvPVX_const(namesv);
 
-    Perl_croak(aTHX_ fmt, SVfARG(err));
+        if (action == 1) {
+            (void)hv_delete(inc_hv, key, klen, G_DISCARD);
+            fmt = "%"SVf" did not return a true value";
+            errsv = namesv;
+        }
+        else {
+            (void)hv_store(inc_hv, key, klen, &PL_sv_undef, 0);
+            fmt = "%"SVf"Compilation failed in require";
+            if (!errsv)
+                errsv = newSVpvs_flags("Unknown error\n", SVs_TEMP);
+        }
+
+        Perl_croak(aTHX_ fmt, SVfARG(errsv));
+    }
 }
 
 
+/* die_unwind(): this is the final destination for the various croak()
+ * functions. If we're in an eval, unwind the context and other stacks
+ * back to the top-most CXt_EVAL and set $@ to msv; otherwise print msv
+ * to STDERR and initiate an exit. Note that if the CXt_EVAL popped back
+ * to is a require the exception will be rethrown, as requires don't
+ * actually trap exceptions.
+ */
+
 void
 Perl_die_unwind(pTHX_ SV *msv)
 {
-    SV *exceptsv = sv_mortalcopy(msv);
+    SV *exceptsv = msv;
     U8 in_eval = PL_in_eval;
     PERL_ARGS_ASSERT_DIE_UNWIND;
 
     if (in_eval) {
        I32 cxix;
 
+        exceptsv = sv_2mortal(SvREFCNT_inc_simple_NN(exceptsv));
+
        /*
         * Historically, perl used to set ERRSV ($@) early in the die
         * process and rely on it not getting clobbered during unwinding.
@@ -1653,10 +1685,9 @@ Perl_die_unwind(pTHX_ SV *msv)
         * perls 5.13.{1..7} which had late setting of $@ without this
         * early-setting hack.
         */
-       if (!(in_eval & EVAL_KEEPERR)) {
-           SvTEMP_off(exceptsv);
-           sv_setsv(ERRSV, exceptsv);
-       }
+       if (!(in_eval & EVAL_KEEPERR))
+           sv_setsv_flags(ERRSV, exceptsv,
+                        (SV_GMAGIC|SV_DO_COW_SVSETSV|SV_NOSTEAL));
 
        if (in_eval & EVAL_KEEPERR) {
            Perl_ck_warner(aTHX_ packWARN(WARN_MISC), "\t(in cleanup) %"SVf,
@@ -1671,7 +1702,6 @@ Perl_die_unwind(pTHX_ SV *msv)
        }
 
        if (cxix >= 0) {
-            SV *namesv = NULL;
            PERL_CONTEXT *cx;
            SV **oldsp;
             U8 gimme;
@@ -1691,23 +1721,15 @@ Perl_die_unwind(pTHX_ SV *msv)
                *++oldsp = &PL_sv_undef;
            PL_stack_sp = oldsp;
 
-            CX_LEAVE_SCOPE(cx);
-           cx_popeval(cx);
-           cx_popblock(cx);
            restartjmpenv = cx->blk_eval.cur_top_env;
-           restartop = cx->blk_eval.retop;
-            if (CxOLD_OP_TYPE(cx) == OP_REQUIRE)
-                namesv = cx->blk_eval.old_namesv;
-            CX_POP(cx);
-
-            if (namesv) {
-                /* note that unlike pp_entereval, pp_require isn't
-                 * supposed to trap errors. So now that we've popped the
-                 * EVAL that pp_require pushed, process the error message
-                 * and rethrow the error */
-                S_undo_inc_then_croak(aTHX_ namesv, exceptsv, FALSE);
-                NOT_REACHED; /* NOTREACHED */
-            }
+           restartop     = cx->blk_eval.retop;
+            /* Note that unlike pp_entereval, pp_require isn't supposed to
+             * trap errors. So if we're a require, after we pop the
+             * CXt_EVAL that pp_require pushed, rethrow the error with
+             * croak(exceptsv). This is all handled by the call below when
+             * action == 2.
+             */
+            S_pop_eval_context_maybe_croak(aTHX_ cx, exceptsv, 2);
 
            if (!(in_eval & EVAL_KEEPERR))
                sv_setsv(ERRSV, exceptsv);
@@ -3383,7 +3405,6 @@ S_doeval_compile(pTHX_ U8 gimme, CV* outside, U32 seq, HV *hh)
     yystatus = (!in_require && CATCH_GET) ? S_try_yyparse(aTHX_ GRAMPROG) : yyparse(GRAMPROG);
 
     if (yystatus || PL_parser->error_count || !PL_eval_root) {
-        SV *namesv = NULL; /* initialise  to avoid compiler warning */
        PERL_CONTEXT *cx;
         SV *errsv;
 
@@ -3398,25 +3419,17 @@ S_doeval_compile(pTHX_ U8 gimme, CV* outside, U32 seq, HV *hh)
            }
            SP = PL_stack_base + POPMARK;       /* pop original mark */
             cx = CX_CUR();
-            CX_LEAVE_SCOPE(cx);
-           cx_popeval(cx);
-           cx_popblock(cx);
-            if (in_require)
-                namesv = cx->blk_eval.old_namesv;
-            CX_POP(cx);
+            assert(CxTYPE(cx) == CXt_EVAL);
+            /* pop the CXt_EVAL, and if was a require, croak */
+            S_pop_eval_context_maybe_croak(aTHX_ cx, ERRSV, 2);
        }
 
-       errsv = ERRSV;
-       if (in_require) {
-            if (yystatus == 3) {
-                cx = CX_CUR();
-                assert(CxTYPE(cx) == CXt_EVAL);
-                namesv = cx->blk_eval.old_namesv;
-            }
-            S_undo_inc_then_croak(aTHX_ namesv, errsv, FALSE);
-            NOT_REACHED; /* NOTREACHED */
-       }
+        /* die_unwind() re-croaks when in require, having popped the
+         * require EVAL context. So we should never catch a require
+         * exception here */
+       assert(!in_require);
 
+       errsv = ERRSV;
         if (!*(SvPV_nolen_const(errsv)))
             sv_setpvs(errsv, "Compilation error");
 
@@ -4274,10 +4287,9 @@ PP(pp_leaveeval)
     U8 gimme;
     PERL_CONTEXT *cx;
     OP *retop;
-    SV *namesv = NULL;
+    int failed;
     CV *evalcv;
-    /* grab this value before cx_popeval restores old PL_in_eval */
-    bool keep = cBOOL(PL_in_eval & EVAL_KEEPERR);
+    bool keep;
 
     PERL_ASYNC_CHECK();
 
@@ -4288,12 +4300,10 @@ PP(pp_leaveeval)
     gimme = cx->blk_gimme;
 
     /* did require return a false value? */
-    if (       CxOLD_OP_TYPE(cx) == OP_REQUIRE
-            && !(gimme == G_SCALAR
+    failed =    CxOLD_OP_TYPE(cx) == OP_REQUIRE
+             && !(gimme == G_SCALAR
                     ? SvTRUE(*PL_stack_sp)
-                : PL_stack_sp > oldsp)
-    )
-        namesv = cx->blk_eval.old_namesv;
+                    : PL_stack_sp > oldsp);
 
     if (gimme == G_VOID)
         PL_stack_sp = oldsp;
@@ -4308,23 +4318,17 @@ PP(pp_leaveeval)
      */
     PL_curcop = cx->blk_oldcop;
 
-    CX_LEAVE_SCOPE(cx);
-    cx_popeval(cx);
-    cx_popblock(cx);
+    /* grab this value before cx_popeval restores the old PL_in_eval */
+    keep = cBOOL(PL_in_eval & EVAL_KEEPERR);
     retop = cx->blk_eval.retop;
     evalcv = cx->blk_eval.cv;
-    CX_POP(cx);
-
 #ifdef DEBUGGING
     assert(CvDEPTH(evalcv) == 1);
 #endif
     CvDEPTH(evalcv) = 0;
 
-    if (namesv) { /* require returned false */
-       /* Unassume the success we assumed earlier. */
-        S_undo_inc_then_croak(aTHX_ namesv, NULL, TRUE);
-        NOT_REACHED; /* NOTREACHED */
-    }
+    /* pop the CXt_EVAL, and if a require failed, croak */
+    S_pop_eval_context_maybe_croak(aTHX_ cx, NULL, failed);
 
     if (!keep)
         CLEAR_ERRSV();
index 223169b..8734687 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -819,13 +819,30 @@ PP(pp_aelemfast)
     AV * const av = PL_op->op_type == OP_AELEMFAST_LEX
        ? MUTABLE_AV(PAD_SV(PL_op->op_targ)) : GvAVn(cGVOP_gv);
     const U32 lval = PL_op->op_flags & OPf_MOD;
-    SV** const svp = av_fetch(av, (I8)PL_op->op_private, lval);
-    SV *sv = (svp ? *svp : &PL_sv_undef);
+    const I8 key   = (I8)PL_op->op_private;
+    SV** svp;
+    SV *sv;
 
-    if (UNLIKELY(!svp && lval))
-        DIE(aTHX_ PL_no_aelem, (int)(I8)PL_op->op_private);
+    assert(SvTYPE(av) == SVt_PVAV);
 
     EXTEND(SP, 1);
+
+    /* inlined av_fetch() for simple cases ... */
+    if (!SvRMAGICAL(av) && key >= 0 && key <= AvFILLp(av)) {
+        sv = AvARRAY(av)[key];
+        if (sv && !SvIS_FREED(sv)) {
+            PUSHs(sv);
+            RETURN;
+        }
+    }
+
+    /* ... else do it the hard way */
+    svp = av_fetch(av, key, lval);
+    sv = (svp ? *svp : &PL_sv_undef);
+
+    if (UNLIKELY(!svp && lval))
+        DIE(aTHX_ PL_no_aelem, (int)key);
+
     if (!lval && SvRMAGICAL(av) && SvGMAGICAL(sv)) /* see note in pp_helem() */
        mg_get(sv);
     PUSHs(sv);
@@ -2994,10 +3011,7 @@ PP(pp_subst)
        if (DO_UTF8(TARG) && !doutf8) {
             nsv = sv_newmortal();
             SvSetSV(nsv, dstr);
-            if (IN_ENCODING)
-                 sv_recode_to_utf8(nsv, _get_encoding());
-            else
-                 sv_utf8_upgrade(nsv);
+            sv_utf8_upgrade(nsv);
             c = SvPV_const(nsv, clen);
             doutf8 = TRUE;
        }
@@ -3176,13 +3190,7 @@ PP(pp_subst)
              first = FALSE;
            }
            else {
-               if (IN_ENCODING) {
-                   if (!nsv) nsv = sv_newmortal();
-                   sv_copypv(nsv, repl);
-                   if (!DO_UTF8(nsv)) sv_recode_to_utf8(nsv, _get_encoding());
-                   sv_catsv(dstr, nsv);
-               }
-               else sv_catsv(dstr, repl);
+               sv_catsv(dstr, repl);
                if (UNLIKELY(SvTAINTED(repl)))
                    rxtainted |= SUBST_TAINT_REPL;
            }
index f6964c3..891d2e2 100644 (file)
--- a/pp_pack.c
+++ b/pp_pack.c
@@ -2674,7 +2674,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )
                NV anv;
                fromstr = NEXTFROM;
                anv = SvNV(fromstr);
-# if defined(VMS) && !defined(_IEEE_FP)
+# if (defined(VMS) && !defined(_IEEE_FP)) || defined(DOUBLE_IS_VAX_FLOAT)
                /* IEEE fp overflow shenanigans are unavailable on VAX and optional
                 * on Alpha; fake it if we don't have them.
                 */
@@ -2684,15 +2684,17 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )
                    afloat = -FLT_MAX;
                else afloat = (float)anv;
 # else
-#if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
+#  if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
                if(Perl_isnan(anv))
                    afloat = (float)NV_NAN;
                else
-#endif
+#  endif
+#  ifdef NV_INF
                 /* a simple cast to float is undefined if outside
                  * the range of values that can be represented */
                afloat = (float)(anv >  FLT_MAX ?  NV_INF :
                                  anv < -FLT_MAX ? -NV_INF : anv);
+#  endif
 # endif
                 PUSH_VAR(utf8, cur, afloat, needs_swap);
            }
@@ -2703,7 +2705,7 @@ S_pack_rec(pTHX_ SV *cat, tempsym_t* symptr, SV **beglist, SV **endlist )
                NV anv;
                fromstr = NEXTFROM;
                anv = SvNV(fromstr);
-# if defined(VMS) && !defined(_IEEE_FP)
+# if (defined(VMS) && !defined(_IEEE_FP)) || defined(DOUBLE_IS_VAX_FLOAT)
                /* IEEE fp overflow shenanigans are unavailable on VAX and optional
                 * on Alpha; fake it if we don't have them.
                 */
diff --git a/proto.h b/proto.h
index 4ad4b93..ec2ae33 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -42,9 +42,6 @@ PERL_CALLCONV void*   Perl_Slab_Alloc(pTHX_ size_t sz)
 PERL_CALLCONV void     Perl_Slab_Free(pTHX_ void *op);
 #define PERL_ARGS_ASSERT_SLAB_FREE     \
        assert(op)
-PERL_CALLCONV SV*      Perl__get_encoding(pTHX)
-                       __attribute__pure__;
-
 PERL_CALLCONV bool     Perl__is_in_locale_category(pTHX_ const bool compiling, const int category);
 PERL_CALLCONV bool     Perl__is_uni_FOO(pTHX_ const U8 classnum, const UV c)
                        __attribute__warn_unused_result__;
@@ -1117,6 +1114,11 @@ PERL_CALLCONV void       Perl_gv_try_downgrade(pTHX_ GV* gv);
 PERL_CALLCONV AV**     Perl_hv_backreferences_p(pTHX_ HV *hv);
 #define PERL_ARGS_ASSERT_HV_BACKREFERENCES_P   \
        assert(hv)
+PERL_CALLCONV SV*      Perl_hv_bucket_ratio(pTHX_ HV *hv)
+                       __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_BUCKET_RATIO       \
+       assert(hv)
+
 PERL_CALLCONV void     Perl_hv_clear(pTHX_ HV *hv);
 PERL_CALLCONV void     Perl_hv_clear_placeholders(pTHX_ HV *hv);
 #define PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS \
@@ -3797,6 +3799,9 @@ STATIC PerlIO *   S_doopen_pm(pTHX_ SV *name)
 #endif
 #if !defined(PERL_EXT_RE_BUILD)
 #  if defined(PERL_IN_REGCOMP_C)
+STATIC void    S__append_range_to_invlist(pTHX_ SV* const invlist, const UV start, const UV end);
+#define PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST      \
+       assert(invlist)
 PERL_STATIC_INLINE IV* S_get_invlist_previous_index_addr(SV* invlist)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_GET_INVLIST_PREVIOUS_INDEX_ADDR       \
@@ -3805,6 +3810,9 @@ PERL_STATIC_INLINE IV*    S_get_invlist_previous_index_addr(SV* invlist)
 PERL_STATIC_INLINE void        S_invlist_clear(pTHX_ SV* invlist);
 #define PERL_ARGS_ASSERT_INVLIST_CLEAR \
        assert(invlist)
+STATIC void    S_invlist_extend(pTHX_ SV* const invlist, const UV len);
+#define PERL_ARGS_ASSERT_INVLIST_EXTEND        \
+       assert(invlist)
 PERL_STATIC_INLINE IV  S_invlist_previous_index(SV* const invlist)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_INVLIST_PREVIOUS_INDEX        \
@@ -3977,7 +3985,7 @@ STATIC void       S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, H
 STATIC const regnode*  S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV* sv, I32 indent, U32 depth);
 #define PERL_ARGS_ASSERT_DUMPUNTIL     \
        assert(r); assert(start); assert(node); assert(sv)
-STATIC bool    S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node);
+STATIC bool    S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node, const bool force_as_is_display);
 #define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS  \
        assert(sv); assert(bitmap)
 STATIC SV*     S_put_charclass_bitmap_innards_common(pTHX_ SV* invlist, SV* posixes, SV* only_utf8, SV* not_utf8, SV* only_utf8_locale, const bool invert);
@@ -4845,9 +4853,6 @@ STATIC SV *       S_space_join_names_mortal(pTHX_ char *const *array);
        assert(array)
 #endif
 #if defined(PERL_IN_REGCOMP_C)
-STATIC void    S__append_range_to_invlist(pTHX_ SV* const invlist, const UV start, const UV end);
-#define PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST      \
-       assert(invlist)
 PERL_STATIC_INLINE UV* S__invlist_array_init(SV* const invlist, const bool will_have_0)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT   \
@@ -4919,9 +4924,6 @@ STATIC SV*        S_invlist_contents(pTHX_ SV* const invlist, const bool traditional_st
 #define PERL_ARGS_ASSERT_INVLIST_CONTENTS      \
        assert(invlist)
 
-STATIC void    S_invlist_extend(pTHX_ SV* const invlist, const UV len);
-#define PERL_ARGS_ASSERT_INVLIST_EXTEND        \
-       assert(invlist)
 PERL_STATIC_INLINE UV  S_invlist_highest(SV* const invlist)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_INVLIST_HIGHEST       \
@@ -4986,9 +4988,6 @@ STATIC regnode*   S_reg2Lanode(pTHX_ RExC_state_t *pRExC_state, const U8 op, const
 STATIC regnode*        S_reg_node(pTHX_ RExC_state_t *pRExC_state, U8 op);
 #define PERL_ARGS_ASSERT_REG_NODE      \
        assert(pRExC_state)
-STATIC UV      S_reg_recode(pTHX_ const U8 value, SV **encp);
-#define PERL_ARGS_ASSERT_REG_RECODE    \
-       assert(encp)
 STATIC SV *    S_reg_scan_name(pTHX_ RExC_state_t *pRExC_state, U32 flags);
 #define PERL_ARGS_ASSERT_REG_SCAN_NAME \
        assert(pRExC_state)
@@ -5118,7 +5117,7 @@ PERL_STATIC_INLINE UV     S__invlist_len(SV* const invlist)
 #define PERL_ARGS_ASSERT__INVLIST_LEN  \
        assert(invlist)
 
-PERL_CALLCONV IV       Perl__invlist_search(SV* const invlist, const UV cp)
+PERL_CALLCONV SSize_t  Perl__invlist_search(SV* const invlist, const UV cp)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT__INVLIST_SEARCH       \
        assert(invlist)
@@ -5171,7 +5170,7 @@ PERL_STATIC_INLINE I32    S_regcurly(const char *s)
 
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C)
-PERL_CALLCONV SV*      Perl__add_range_to_invlist(pTHX_ SV* invlist, const UV start, const UV end)
+PERL_CALLCONV SV*      Perl__add_range_to_invlist(pTHX_ SV* invlist, UV start, UV end)
                        __attribute__warn_unused_result__;
 
 /* PERL_CALLCONV void  _invlist_intersection(pTHX_ SV* const a, SV* const b, SV** i); */
@@ -5219,6 +5218,11 @@ STATIC WB_enum   S_advance_one_WB(pTHX_ U8 ** curpos, const U8 * const strend, con
 #define PERL_ARGS_ASSERT_ADVANCE_ONE_WB        \
        assert(curpos); assert(strend)
 
+STATIC GCB_enum        S_backup_one_GCB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target)
+                       __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_BACKUP_ONE_GCB        \
+       assert(strbeg); assert(curpos)
+
 STATIC LB_enum S_backup_one_LB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_BACKUP_ONE_LB \
@@ -5247,8 +5251,10 @@ STATIC bool      S_isFOO_utf8_lc(pTHX_ const U8 classnum, const U8* character)
 #define PERL_ARGS_ASSERT_ISFOO_UTF8_LC \
        assert(character)
 
-PERL_STATIC_INLINE bool        S_isGCB(const GCB_enum before, const GCB_enum after)
+STATIC bool    S_isGCB(pTHX_ const GCB_enum before, const GCB_enum after, const U8 * const strbeg, const U8 * const curpos, const bool utf8_target)
                        __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_ISGCB \
+       assert(strbeg); assert(curpos)
 
 STATIC bool    S_isLB(pTHX_ LB_enum before, LB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
                        __attribute__warn_unused_result__;
@@ -5286,7 +5292,7 @@ STATIC U8*        S_reghop4(U8 *s, SSize_t off, const U8 *llim, const U8 *rlim)
 #define PERL_ARGS_ASSERT_REGHOP4       \
        assert(s); assert(llim); assert(rlim)
 
-STATIC U8*     S_reghopmaybe3(U8 *s, SSize_t off, const U8 *lim)
+STATIC U8*     S_reghopmaybe3(U8 *s, SSize_t off, const U8 * const lim)
                        __attribute__warn_unused_result__;
 #define PERL_ARGS_ASSERT_REGHOPMAYBE3  \
        assert(s); assert(lim)
@@ -5342,7 +5348,7 @@ STATIC I32        S_expect_number(pTHX_ char **const pattern)
 #define PERL_ARGS_ASSERT_EXPECT_NUMBER \
        assert(pattern)
 
-STATIC I32     S_find_array_subscript(pTHX_ const AV *const av, const SV *const val);
+STATIC SSize_t S_find_array_subscript(pTHX_ const AV *const av, const SV *const val);
 #define PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT  \
        assert(val)
 STATIC SV *    S_find_hash_subscript(pTHX_ const HV *const hv, const SV *const val);
@@ -5422,7 +5428,7 @@ STATIC void       S_unreferenced_to_tmp_stack(pTHX_ AV *const unreferenced);
 #  endif
 #endif
 #if defined(PERL_IN_SV_C) || defined (PERL_IN_OP_C)
-PERL_CALLCONV SV *     Perl_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ, const SV *const keyname, I32 aindex, int subscript_type)
+PERL_CALLCONV SV *     Perl_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ, const SV *const keyname, SSize_t aindex, int subscript_type)
                        __attribute__warn_unused_result__;
 
 #endif
@@ -5483,7 +5489,7 @@ STATIC SV*        S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, STRL
 STATIC void    S_no_op(pTHX_ const char *const what, char *s);
 #define PERL_ARGS_ASSERT_NO_OP \
        assert(what)
-STATIC void    S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package, bool is_utf8);
+STATIC void    S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package, bool is_utf8, bool check_dollar);
 #define PERL_ARGS_ASSERT_PARSE_IDENT   \
        assert(s); assert(d); assert(e)
 STATIC int     S_pending_ident(pTHX);
index 0a5230d..d4b483c 100644 (file)
 #endif /* H_REGCHARCLASS */
 
 /* Generated from:
- * 66726fe32be96a422e8c9b45bc9daf61e068d988c99ff41112972ef721365521 lib/Unicode/UCD.pm
- * ae98bec7e4f0564758eed81eca5015481ba32581f8a735a825b71b3bba714450 lib/unicore/ArabicShaping.txt
- * 1687fe5994eb7e5c0dab8503fc2a1b3b479d91af9d3b8055941c9bd791f7d0b5 lib/unicore/BidiBrackets.txt
- * 350d1302116194b0b21def287434b55c5088098fbc726e879f7420a391965643 lib/unicore/BidiMirroring.txt
- * 288fc7b85c76bda296e296c8465f1f4baeb456cb814430dfaa0f546bfbe86b4a lib/unicore/Blocks.txt
- * 86e075f2ede997b3fa5965516c75190b5a88bb82d302272d9c3179b7a57af03f lib/unicore/CaseFolding.txt
- * 2fafee5be73bf2817ee669c53c504a6c4aa02ac7344194af18511aea2e05d750 lib/unicore/CompositionExclusions.txt
- * 302f6d6171dc9c6165db86d0226b7923a64cea06c493d339d35436bf137606a3 lib/unicore/DAge.txt
- * ff666dece87dfdbdbf04a2e26a0bfb52c4ba98db1f8965b0b01ddb9e15f97476 lib/unicore/DCoreProperties.txt
- * 6cc76100d402d7dd12bd769ac61158b91e71aad58c8333abb848f1b9c9fdde2d lib/unicore/DNormalizationProps.txt
- * ccc571829b384b8a2c24b7a62f8aa6a891a6e8c48f08513ef84fd6da26dba4bb lib/unicore/EastAsianWidth.txt
- * 2320db06cf88c755ec7b9cfec96dd9e1d774173521dbc3ee7985377c2ab90d32 lib/unicore/HangulSyllableType.txt
- * e52216b5fdb04910e06e94f01cabdf70656b0077c92b756c7b38822626d572f2 lib/unicore/IndicPositionalCategory.txt
- * 4db71a39102e173095cb8bda8b4c35e78fe6b365e443c584b19f081d8c4894fc lib/unicore/IndicSyllabicCategory.txt
- * eeb30346bb545bb45ff16486d9234397bfe1a195bb12b54fc1d9f48f87e8aa5e lib/unicore/Jamo.txt
- * 13e2b7087bcca3163272e64e34e480534bd2f8353a0245c26e6642566f59a60d lib/unicore/LineBreak.txt
- * 9bb54cd7b5509779f269fa60341bcbfca8da8f17d3c4999e44a5a51671d3c402 lib/unicore/NameAliases.txt
- * e4c29d9ceefbe2382af819ac7646265a9e4ea599ce04a90d31bec97cfaa2848f lib/unicore/NamedSequences.txt
- * 70d40297f1bf91397fbdab5a770c12100733e67c5c3398446c5e950715d5e535 lib/unicore/PropList.txt
- * 03a440f2a4b9151043a6bb53d4a4e528b73238079f9d686dc2a5846e6895588a lib/unicore/PropValueAliases.txt
- * 8e8b48c2080d31aa6713f5535aad94a1f7bc9a65cc52563724e5e69b0a3b4196 lib/unicore/PropertyAliases.txt
- * 45d42b1ecbac2263c1c63c95104e63ea64313eb99be94542e040aea11c449f6c lib/unicore/ScriptExtensions.txt
- * 79fbd73ad82c30fdb67d36a349d12667bd58d3e9da6a8ce7dd26383b637ba85f lib/unicore/Scripts.txt
- * fb2025dae3b9b17649b6e379c1cdbddf50641267ca6d2446caeccf4a141fe167 lib/unicore/SpecialCasing.txt
- * 38b17e1118206489a7e0ab5d29d7932212d38838df7d3ec025ecb58e8798ec20 lib/unicore/UnicodeData.txt
- * 0cedd6e0f5cadf57ce9cfc96beccfd083b0faa0809a631a777cd25f0316bfabb lib/unicore/auxiliary/GCBTest.txt
- * 230005412f9a47128e37bc52330766aaa0b5522a53737a89cff66e891e14527a lib/unicore/auxiliary/GraphemeBreakProperty.txt
- * 149b14ab93b06c887a958fb16d0ad01193063ef69cc14f10338ae4d0accd6c28 lib/unicore/auxiliary/LBTest.txt
- * 41bf82452d71ce15eda8c9bb1bb0c20b72205acaaf503e3cb84734ed8e85d33a lib/unicore/auxiliary/SBTest.txt
- * d3b45cdb0a73eeb9d25158336583dfc1e6f64da59537acb0008988b40e6b3b63 lib/unicore/auxiliary/SentenceBreakProperty.txt
- * a661f42a54f7cc4dded72a61c508be2b482f912d4b6cf140335010f0c684dbb9 lib/unicore/auxiliary/WBTest.txt
- * c255bd2e1f163373510679bf4b272eee97b635bfce2a6550d6c10fe5c917f01a lib/unicore/auxiliary/WordBreakProperty.txt
- * 16dac6f1c164a4f52741b71221a8aafb6acb52cd8a436af139da6e93d86efdfb lib/unicore/extracted/DBidiClass.txt
- * c4e78efc041668548117f7462af03b28dfbb2caca5d46a1ae78ae0ce0bb26c4a lib/unicore/extracted/DBinaryProperties.txt
- * 5886bb44aae8f2821663f742793cb91d4ed0923c6840f3bfb73530e37030abf8 lib/unicore/extracted/DCombiningClass.txt
- * 9edba3785ed0e6e46e10f67e2dd0ec3cb0799b7f75f526fe918429576060352e lib/unicore/extracted/DDecompositionType.txt
- * b774387f79b27ae4268ae89450f971408dc9bbbb523426482ab4375c962bd922 lib/unicore/extracted/DEastAsianWidth.txt
- * ba4207d2464077e807b20caf063041142afc0a8a38c328c5c23b3417c9f2da33 lib/unicore/extracted/DGeneralCategory.txt
- * 29fdd151266595eb1b37715937afe0727bb632a2bc1130f0d2314040175df82e lib/unicore/extracted/DJoinGroup.txt
- * 7725fe247da06986e43e89fd316b8b22a0619546d0c1ed499a94b25e9164c150 lib/unicore/extracted/DJoinType.txt
- * 1a0687fb9c6c4567e853913549df0944fe40821279a3e9cdaa6ab8679bc286fd lib/unicore/extracted/DLineBreak.txt
- * 40bcfed3ca727c19e1331f6c33806231d5f7eeeabd2e6a9e06a3740c85d0c250 lib/unicore/extracted/DNumType.txt
- * a18d502bad39d527ac5586d7bc93e29f565859e3bcc24ada627eff606d6f5fed lib/unicore/extracted/DNumValues.txt
- * 718d6ea8b96ee3d12c9c3a48ceb0f5cebe023634002ac8b2ede12b306273aa52 lib/unicore/mktables
- * 462c9aaa608fb2014cd9649af1c5c009485c60b9c8b15b89401fdc10cf6161c6 lib/unicore/version
+ * d4d1ae3d05b9b07d066661a93af8896abe10fbf0f5cbe89575fbbc06a2928d60 lib/Unicode/UCD.pm
+ * 47cb62a53beea6d0263e2147331c7e751853c9327225d95bbe2d9e1dc3e1aa44 lib/unicore/ArabicShaping.txt
+ * 153f0a100c315f9f3945e78f57137611d36c44b3a975919c499fd403413fede8 lib/unicore/BidiBrackets.txt
+ * fbe806975c1bf9fc9960bbaa39ff6290c42c7da8315f9cd459109b024cc1c485 lib/unicore/BidiMirroring.txt
+ * 612127d4889032e55d82522e4a0c19793bda8aa8da14ecb3c696d17c83e6be13 lib/unicore/Blocks.txt
+ * 37d40cf8c2c35637f4a04e746814e1fc4eb764c272bed9238a87ee96a4866857 lib/unicore/CaseFolding.txt
+ * 5623df16856ad4007c60bdfff6f054e087521becd24cb4006be69c3a1d851aee lib/unicore/CompositionExclusions.txt
+ * 5cb15b04693c43df16e0d304deca049e93b001445d163184e0ff1b7c8c852146 lib/unicore/DAge.txt
+ * 6662c7e30b572df5d948c092692f52bcc79ab36d49a063a73d6435042db6fb3b lib/unicore/DCoreProperties.txt
+ * 02d8e12cea7c61a9f3cc5fbf8eaceadf8da23fe83d60c64cf647088830b810cc lib/unicore/DNormalizationProps.txt
+ * 3382cb4980e0021e9d4312f2d099315cfab6100ce0ff63a22d6937bfa720bcb7 lib/unicore/EastAsianWidth.txt
+ * cb02ff25c375e78c82afffc852180eae7fc17c2f4434e697107720d05c52b26e lib/unicore/HangulSyllableType.txt
+ * 850043bc9db08eddb271e43ed9176b865df76745a5fb6e9a4a1d9e54e5036471 lib/unicore/IndicPositionalCategory.txt
+ * 90a3a00a5f5810850986c9279849b03c2f3133cfeeefb0554e851dd5ad7324dc lib/unicore/IndicSyllabicCategory.txt
+ * bbd36a8d27f76e0fe0f2b0ca2827ac80da4b4a8d5247f0b0670fcaaac68ae6e1 lib/unicore/Jamo.txt
+ * e2698584982ccd96e0c688bbcd4d2c48a23805baa0a0084388ef2e50ebd30aad lib/unicore/LineBreak.txt
+ * 9d5353b1d318e72a63a49aa6a6a051d350382ea44b2cf31fe925bb94ce7e129b lib/unicore/NameAliases.txt
+ * 009477f536f63016d901aeb1a4c820ad291e30e72ee9eb9ac1dfb6294a8a9bcc lib/unicore/NamedSequences.txt
+ * f413ea8dbd3858de72f3148b47dd0586019761357d1481e3b65f3a025bc27f82 lib/unicore/PropList.txt
+ * 56582d9875c1997876cf09305ccfc83448195de5d84d6374c78efaffeca4dfd7 lib/unicore/PropValueAliases.txt
+ * 047ab0f815b6d1b30a863d6fcbd49e6358e168a3bd6c7189e80ab9863957d222 lib/unicore/PropertyAliases.txt
+ * cde011921972dffe3e30dcbc7afbf069bf2eb01269097111dd7533b4c524caac lib/unicore/ScriptExtensions.txt
+ * fba415952f5654145acad220dc2b878f815c673474d2bb4928934e3ba6ccca1d lib/unicore/Scripts.txt
+ * dfc4f159c5c68328114ff17cd520451714a72ff48657287e5fe2f64344980695 lib/unicore/SpecialCasing.txt
+ * 68dfc414d28257b9b5d6ddbb8b466c768c00ebdf6cbf7784364a9b6cad55ee8f lib/unicore/UnicodeData.txt
+ * c76e7ed44a602f85161758ec54d2bcbcb7baf38f97720605a3e81ce02af47061 lib/unicore/auxiliary/GCBTest.txt
+ * 4bb8931857e0a698fd2ec4a51a84c6de33e48a50d8b4bf0b57d960c41d77a191 lib/unicore/auxiliary/GraphemeBreakProperty.txt
+ * 0c609ae4a32a89905c004010ef29885df3c60a941311a1a6e16003333d7fcdc8 lib/unicore/auxiliary/LBTest.txt
+ * 26afdd5f38561167807b0f191af55b05761029ae6be2b7fe85b88f28effc66b5 lib/unicore/auxiliary/SBTest.txt
+ * 53982766eeaf26674e7e2ec956c52846d52992ea9f4f1a202d488fb5cd76dd10 lib/unicore/auxiliary/SentenceBreakProperty.txt
+ * 7f60beacc5ec5671edb56db36defc90cfc0016de4fd2bdfde7a3e4ec209840ce lib/unicore/auxiliary/WBTest.txt
+ * cb2db065c77287e0f1d35b8c9b473d848b7566a1670439f67c357ca393084043 lib/unicore/auxiliary/WordBreakProperty.txt
+ * 73573a4bee7f7377d936bc1710cd578001d00ba516e72ee54e906ae51a8c1fcb lib/unicore/extracted/DBidiClass.txt
+ * ae8f55d8bb2bb69a63f70eef38cf5921fc3ba8e06d4d88f37950d32313a14754 lib/unicore/extracted/DBinaryProperties.txt
+ * cf263ac4848d47264300139f97ed15c2c22896d2cef411483cbe292098c08bea lib/unicore/extracted/DCombiningClass.txt
+ * 5bac89caf8d1fa23fcbbbf4d49ea0699b680ef1a73cbfa0daaac38c993906a74 lib/unicore/extracted/DDecompositionType.txt
+ * e17138d36cd91f0e0d16437780a887c5ac637bde0de370b96f08a3424fcc322f lib/unicore/extracted/DEastAsianWidth.txt
+ * fad25c183f4d439622c6be33c22ed709cdc4ac19feef0250527cf319a06952fe lib/unicore/extracted/DGeneralCategory.txt
+ * c0d080b188fbe67dead10a3897dd2ca23da862c7f0b03508a92dcf27cd7e1f41 lib/unicore/extracted/DJoinGroup.txt
+ * 3a8f8642084ed23b0de52af72dea0ff3d0b6928e6c7442832c663899e2b85e9d lib/unicore/extracted/DJoinType.txt
+ * 37f6186253da9824bdb27f4ad867bfe8c25d4dc6bdb2f05585e40a034675a348 lib/unicore/extracted/DLineBreak.txt
+ * ef24061b5a5dc93d7e90c2e34530ec757180ee75d872cba65ffc946e52624ae8 lib/unicore/extracted/DNumType.txt
+ * a197371fec9a1b517058b440841f60f9378d81682084eef8db22a88cb2f96e90 lib/unicore/extracted/DNumValues.txt
+ * 0cc006e22469cee3db1a55a4df1ac656c9d26a70ba920985883eb77198931c1a lib/unicore/mktables
+ * cdecb300baad839a6f62791229f551a4fa33f3cbdca08e378dc976466354e778 lib/unicore/version
  * 913d2f93f3cb6cdf1664db888bf840bc4eb074eef824e082fceda24a9445e60c regen/charset_translations.pl
  * d9c04ac46bdd81bb3e26519f2b8eb6242cb12337205add3f7cf092b0c58dccc4 regen/regcharclass.pl
  * 393f8d882713a3ba227351ad0f00ea4839fda74fcf77dcd1cdf31519925adba5 regen/regcharclass_multi_char_folds.pl
index 378ebc9..e57f233 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -1283,8 +1283,8 @@ S_ssc_anything(pTHX_ regnode_ssc *ssc)
 
     assert(is_ANYOF_SYNTHETIC(ssc));
 
-    ssc->invlist = sv_2mortal(_new_invlist(2)); /* mortalize so won't leak */
-    _append_range_to_invlist(ssc->invlist, 0, UV_MAX);
+    /* mortalize so won't leak */
+    ssc->invlist = sv_2mortal(_add_range_to_invlist(NULL, 0, UV_MAX));
     ANYOF_FLAGS(ssc) |= SSC_MATCHES_EMPTY_STRING;  /* Plus matches empty */
 }
 
@@ -8324,33 +8324,47 @@ S_reg_scan_name(pTHX_ RExC_state_t *pRExC_state, U32 flags)
  * as an SVt_INVLIST scalar.
  *
  * An inversion list for Unicode is an array of code points, sorted by ordinal
- * number.  The zeroth element is the first code point in the list.  The 1th
- * element is the first element beyond that not in the list.  In other words,
- * the first range is
- *  invlist[0]..(invlist[1]-1)
- * The other ranges follow.  Thus every element whose index is divisible by two
- * marks the beginning of a range that is in the list, and every element not
- * divisible by two marks the beginning of a range not in the list.  A single
- * element inversion list that contains the single code point N generally
- * consists of two elements
- *  invlist[0] == N
- *  invlist[1] == N+1
- * (The exception is when N is the highest representable value on the
- * machine, in which case the list containing just it would be a single
- * element, itself.  By extension, if the last range in the list extends to
- * infinity, then the first element of that range will be in the inversion list
- * at a position that is divisible by two, and is the final element in the
- * list.)
+ * number.  Each element gives the code point that begins a range that extends
+ * up-to but not including the code point given by the next element.  The final
+ * element gives the first code point of a range that extends to the platform's
+ * infinity.  The even-numbered elements (invlist[0], invlist[2], invlist[4],
+ * ...) give ranges whose code points are all in the inversion list.  We say
+ * that those ranges are in the set.  The odd-numbered elements give ranges
+ * whose code points are not in the inversion list, and hence not in the set.
+ * Thus, element [0] is the first code point in the list.  Element [1]
+ * is the first code point beyond that not in the list; and element [2] is the
+ * first code point beyond that that is in the list.  In other words, the first
+ * range is invlist[0]..(invlist[1]-1), and all code points in that range are
+ * in the inversion list.  The second range is invlist[1]..(invlist[2]-1), and
+ * all code points in that range are not in the inversion list.  The third
+ * range invlist[2]..(invlist[3]-1) gives code points that are in the inversion
+ * list, and so forth.  Thus every element whose index is divisible by two
+ * gives the beginning of a range that is in the list, and every element whose
+ * index is not divisible by two gives the beginning of a range not in the
+ * list.  If the final element's index is divisible by two, the inversion list
+ * extends to the platform's infinity; otherwise the highest code point in the
+ * inversion list is the contents of that element minus 1.
+ *
+ * A range that contains just a single code point N will look like
+ *  invlist[i]   == N
+ *  invlist[i+1] == N+1
+ *
+ * If N is UV_MAX (the highest representable code point on the machine), N+1 is
+ * impossible to represent, so element [i+1] is omitted.  The single element
+ * inversion list
+ *  invlist[0] == UV_MAX
+ * contains just UV_MAX, but is interpreted as matching to infinity.
+ *
  * Taking the complement (inverting) an inversion list is quite simple, if the
  * first element is 0, remove it; otherwise add a 0 element at the beginning.
  * This implementation reserves an element at the beginning of each inversion
  * list to always contain 0; there is an additional flag in the header which
  * indicates if the list begins at the 0, or is offset to begin at the next
- * element.
+ * element.  This means that the inversion list can be inverted without any
+ * copying; just flip the flag.
  *
  * More about inversion lists can be found in "Unicode Demystified"
  * Chapter 13 by Richard Gillam, published by Addison-Wesley.
- * More will be coming when functionality is added later.
  *
  * The inversion list data structure is currently implemented as an SV pointing
  * to an array of UVs that the SV thinks are bytes.  This allows us to have an
@@ -8627,7 +8641,6 @@ Perl__new_invlist_C_array(pTHX_ const UV* const list)
 
     return invlist;
 }
-#endif /* ifndef PERL_IN_XSUB_RE */
 
 STATIC void
 S_invlist_extend(pTHX_ SV* const invlist, const UV new_max)
@@ -8671,7 +8684,7 @@ S__append_range_to_invlist(pTHX_ SV* const invlist,
 
        UV final_element = len - 1;
        array = invlist_array(invlist);
-       if (array[final_element] > start
+       if (   array[final_element] > start
            || ELEMENT_RANGE_MATCHES_INVLIST(final_element))
        {
            Perl_croak(aTHX_ "panic: attempting to append to an inversion list, but wasn't at the end of the list, final=%"UVuf", start=%"UVuf", match=%c",
@@ -8679,10 +8692,10 @@ S__append_range_to_invlist(pTHX_ SV* const invlist,
                     ELEMENT_RANGE_MATCHES_INVLIST(final_element) ? 't' : 'f');
        }
 
-       /* Here, it is a legal append.  If the new range begins with the first
-        * value not in the set, it is extending the set, so the new first
-        * value not in the set is one greater than the newly extended range.
-        * */
+        /* Here, it is a legal append.  If the new range begins 1 above the end
+         * of the range below it, it is extending the range below it, so the
+         * new first value not in the set is one greater than the newly
+         * extended range.  */
         offset = *get_invlist_offset_addr(invlist);
        if (array[final_element] == start) {
            if (end != UV_MAX) {
@@ -8690,7 +8703,8 @@ S__append_range_to_invlist(pTHX_ SV* const invlist,
            }
            else {
                /* But if the end is the maximum representable on the machine,
-                * just let the range that this would extend to have no end */
+                 * assume that infinity was actually what was meant.  Just let
+                 * the range that this would extend to have no end */
                invlist_set_len(invlist, len - 1, offset);
            }
            return;
@@ -8728,9 +8742,7 @@ S__append_range_to_invlist(pTHX_ SV* const invlist,
     }
 }
 
-#ifndef PERL_IN_XSUB_RE
-
-IV
+SSize_t
 Perl__invlist_search(SV* const invlist, const UV cp)
 {
     /* Searches the inversion list for the entry that contains the input code
@@ -8970,8 +8982,7 @@ Perl__invlist_union_maybe_complement_2nd(pTHX_ SV* const a, SV* const b,
          * It's easiest to create a new inversion list that matches everything.
          * */
         if (complement_b) {
-            SV* everything = _new_invlist(1);
-            _append_range_to_invlist(everything, 0, UV_MAX);
+            SV* everything = _add_range_to_invlist(NULL, 0, UV_MAX);
 
             /* If the output didn't exist, just point it at the new list */
             if (*output == NULL) {
@@ -9388,12 +9399,13 @@ Perl__invlist_intersection_maybe_complement_2nd(pTHX_ SV* const a, SV* const b,
        }
 
     }
+
     /* The loop above increments the index into exactly one of the input lists
      * each iteration, and ends when either index gets to its list end.  That
      * means the other index is lower than its end, and so something is
      * remaining in that one.  We increment 'count', as explained below, if the
-     * exhausted list was in its set.  (i_a and i_b each currently index the element
-     * beyond the one we care about.) */
+     * exhausted list was in its set.  (i_a and i_b each currently index the
+     * element beyond the one we care about.) */
     if (   (i_a == len_a && PREV_RANGE_MATCHES_INVLIST(i_a))
         || (i_b == len_b && PREV_RANGE_MATCHES_INVLIST(i_b)))
     {
@@ -9492,50 +9504,261 @@ Perl__invlist_intersection_maybe_complement_2nd(pTHX_ SV* const a, SV* const b,
 }
 
 SV*
-Perl__add_range_to_invlist(pTHX_ SV* invlist, const UV start, const UV end)
+Perl__add_range_to_invlist(pTHX_ SV* invlist, UV start, UV end)
 {
     /* Add the range from 'start' to 'end' inclusive to the inversion list's
      * set.  A pointer to the inversion list is returned.  This may actually be
      * a new list, in which case the passed in one has been destroyed.  The
      * passed-in inversion list can be NULL, in which case a new one is created
-     * with just the one range in it */
-
-    SV* range_invlist;
-    UV len;
-
+     * with just the one range in it.  The new list is not necessarily
+     * NUL-terminated.  Space is not freed if the inversion list shrinks as a
+     * result of this function.  The gain would not be large, and in many
+     * cases, this is called multiple times on a single inversion list, so
+     * anything freed may almost immediately be needed again.
+     *
+     * This used to mostly call the 'union' routine, but that is much more
+     * heavyweight than really needed for a single range addition */
+
+    UV* array;              /* The array implementing the inversion list */
+    UV len;                 /* How many elements in 'array' */
+    SSize_t i_s;            /* index into the invlist array where 'start'
+                               should go */
+    SSize_t i_e = 0;        /* And the index where 'end' should go */
+    UV cur_highest;         /* The highest code point in the inversion list
+                               upon entry to this function */
+
+    /* This range becomes the whole inversion list if none already existed */
     if (invlist == NULL) {
        invlist = _new_invlist(2);
-       len = 0;
+        _append_range_to_invlist(invlist, start, end);
+        return invlist;
     }
-    else {
-       len = _invlist_len(invlist);
+
+    /* Likewise, if the inversion list is currently empty */
+    len = _invlist_len(invlist);
+    if (len == 0) {
+        _append_range_to_invlist(invlist, start, end);
+        return invlist;
     }
 
-    /* If comes after the final entry actually in the list, can just append it
-     * to the end, */
-    if (len == 0
-       || (! ELEMENT_RANGE_MATCHES_INVLIST(len - 1)
-            && start >= invlist_array(invlist)[len - 1]))
-    {
-       _append_range_to_invlist(invlist, start, end);
-       return invlist;
+    /* Starting here, we have to know the internals of the list */
+    array = invlist_array(invlist);
+
+    /* If the new range ends higher than the current highest ... */
+    cur_highest = invlist_highest(invlist);
+    if (end > cur_highest) {
+
+        /* If the whole range is higher, we can just append it */
+        if (start > cur_highest) {
+            _append_range_to_invlist(invlist, start, end);
+            return invlist;
+        }
+
+        /* Otherwise, add the portion that is higher ... */
+        _append_range_to_invlist(invlist, cur_highest + 1, end);
+
+        /* ... and continue on below to handle the rest.  As a result of the
+         * above append, we know that the index of the end of the range is the
+         * final even numbered one of the array.  Recall that the final element
+         * always starts a range that extends to infinity.  If that range is in
+         * the set (meaning the set goes from here to infinity), it will be an
+         * even index, but if it isn't in the set, it's odd, and the final
+         * range in the set is one less, which is even. */
+        if (end == UV_MAX) {
+            i_e = len;
+        }
+        else {
+            i_e = len - 2;
+        }
     }
 
-    /* Here, can't just append things, create and return a new inversion list
-     * which is the union of this range and the existing inversion list.  (If
-     * the new range is well-behaved wrt to the old one, we could just insert
-     * it, doing a Move() down on the tail of the old one (potentially growing
-     * it first).  But to determine that means we would have the extra
-     * (possibly throw-away) work of first finding where the new one goes and
-     * whether it disrupts (splits) an existing range, so it doesn't appear to
-     * me (khw) that it's worth it) */
-    range_invlist = _new_invlist(2);
-    _append_range_to_invlist(range_invlist, start, end);
+    /* We have dealt with appending, now see about prepending.  If the new
+     * range starts lower than the current lowest ... */
+    if (start < array[0]) {
 
-    _invlist_union(invlist, range_invlist, &invlist);
+        /* Adding something which has 0 in it is somewhat tricky, and uncommon.
+         * Let the union code handle it, rather than having to know the
+         * trickiness in two code places.  */
+        if (UNLIKELY(start == 0)) {
+            SV* range_invlist;
 
-    /* The temporary can be freed */
-    SvREFCNT_dec_NN(range_invlist);
+            range_invlist = _new_invlist(2);
+            _append_range_to_invlist(range_invlist, start, end);
+
+            _invlist_union(invlist, range_invlist, &invlist);
+
+            SvREFCNT_dec_NN(range_invlist);
+
+            return invlist;
+        }
+
+        /* If the whole new range comes before the first entry, and doesn't
+         * extend it, we have to insert it as an additional range */
+        if (end < array[0] - 1) {
+            i_s = i_e = -1;
+            goto splice_in_new_range;
+        }
+
+        /* Here the new range adjoins the existing first range, extending it
+         * downwards. */
+        array[0] = start;
+
+        /* And continue on below to handle the rest.  We know that the index of
+         * the beginning of the range is the first one of the array */
+        i_s = 0;
+    }
+    else { /* Not prepending any part of the new range to the existing list.
+            * Find where in the list it should go.  This finds i_s, such that:
+            *     invlist[i_s] <= start < array[i_s+1]
+            */
+        i_s = _invlist_search(invlist, start);
+    }
+
+    /* At this point, any extending before the beginning of the inversion list
+     * and/or after the end has been done.  This has made it so that, in the
+     * code below, each endpoint of the new range is either in a range that is
+     * in the set, or is in a gap between two ranges that are.  This means we
+     * don't have to worry about exceeding the array bounds.
+     *
+     * Find where in the list the new range ends (but we can skip this if we
+     * have already determined what it is, or if it will be the same as i_s,
+     * which we already have computed) */
+    if (i_e == 0) {
+        i_e = (start == end)
+              ? i_s
+              : _invlist_search(invlist, end);
+    }
+
+    /* Here generally invlist[i_e] <= end < array[i_e+1].  But if invlist[i_e]
+     * is a range that goes to infinity there is no element at invlist[i_e+1],
+     * so only the first relation holds. */
+
+    if ( ! ELEMENT_RANGE_MATCHES_INVLIST(i_s)) {
+
+        /* Here, the ranges on either side of the beginning of the new range
+         * are in the set, and this range starts in the gap between them.
+         *
+         * The new range extends the range above it downwards if the new range
+         * ends at or above that range's start */
+        const bool extends_the_range_above = (   end == UV_MAX
+                                              || end + 1 >= array[i_s+1]);
+
+        /* The new range extends the range below it upwards if it begins just
+         * after where that range ends */
+        if (start == array[i_s]) {
+
+            /* If the new range fills the entire gap between the other ranges,
+             * they will get merged together.  Other ranges may also get
+             * merged, depending on how many of them the new range spans.  In
+             * the general case, we do the merge later, just once, after we
+             * figure out how many to merge.  But in the case where the new
+             * range exactly spans just this one gap (possibly extending into
+             * the one above), we do the merge here, and an early exit.  This
+             * is done here to avoid having to special case later. */
+            if (i_e - i_s <= 1) {
+
+                /* If i_e - i_s == 1, it means that the new range terminates
+                 * within the range above, and hence 'extends_the_range_above'
+                 * must be true.  (If the range above it extends to infinity,
+                 * 'i_s+2' will be above the array's limit, but 'len-i_s-2'
+                 * will be 0, so no harm done.) */
+                if (extends_the_range_above) {
+                    Move(array + i_s + 2, array + i_s, len - i_s - 2, UV);
+                    invlist_set_len(invlist,
+                                    len - 2,
+                                    *(get_invlist_offset_addr(invlist)));
+                    return invlist;
+                }
+
+                /* Here, i_e must == i_s.  We keep them in sync, as they apply
+                 * to the same range, and below we are about to decrement i_s
+                 * */
+                i_e--;
+            }
+
+            /* Here, the new range is adjacent to the one below.  (It may also
+             * span beyond the range above, but that will get resolved later.)
+             * Extend the range below to include this one. */
+            array[i_s] = (end == UV_MAX) ? UV_MAX : end + 1;
+            i_s--;
+            start = array[i_s];
+        }
+        else if (extends_the_range_above) {
+
+            /* Here the new range only extends the range above it, but not the
+             * one below.  It merges with the one above.  Again, we keep i_e
+             * and i_s in sync if they point to the same range */
+            if (i_e == i_s) {
+                i_e++;
+            }
+            i_s++;
+            array[i_s] = start;
+        }
+    }
+
+    /* Here, we've dealt with the new range start extending any adjoining
+     * existing ranges.
+     *
+     * If the new range extends to infinity, it is now the final one,
+     * regardless of what was there before */
+    if (UNLIKELY(end == UV_MAX)) {
+        invlist_set_len(invlist, i_s + 1, *(get_invlist_offset_addr(invlist)));
+        return invlist;
+    }
+
+    /* If i_e started as == i_s, it has also been dealt with,
+     * and been updated to the new i_s, which will fail the following if */
+    if (! ELEMENT_RANGE_MATCHES_INVLIST(i_e)) {
+
+        /* Here, the ranges on either side of the end of the new range are in
+         * the set, and this range ends in the gap between them.
+         *
+         * If this range is adjacent to (hence extends) the range above it, it
+         * becomes part of that range; likewise if it extends the range below,
+         * it becomes part of that range */
+        if (end + 1 == array[i_e+1]) {
+            i_e++;
+            array[i_e] = start;
+        }
+        else if (start <= array[i_e]) {
+            array[i_e] = end + 1;
+            i_e--;
+        }
+    }
+
+    if (i_s == i_e) {
+
+        /* If the range fits entirely in an existing range (as possibly already
+         * extended above), it doesn't add anything new */
+        if (ELEMENT_RANGE_MATCHES_INVLIST(i_s)) {
+            return invlist;
+        }
+
+        /* Here, no part of the range is in the list.  Must add it.  It will
+         * occupy 2 more slots */
+      splice_in_new_range:
+
+        invlist_extend(invlist, len + 2);
+        array = invlist_array(invlist);
+        /* Move the rest of the array down two slots. Don't include any
+         * trailing NUL */
+        Move(array + i_e + 1, array + i_e + 3, len - i_e - 1, UV);
+
+        /* Do the actual splice */
+        array[i_e+1] = start;
+        array[i_e+2] = end + 1;
+        invlist_set_len(invlist, len + 2, *(get_invlist_offset_addr(invlist)));
+        return invlist;
+    }
+
+    /* Here the new range crossed the boundaries of a pre-existing range.  The
+     * code above has adjusted things so that both ends are in ranges that are
+     * in the set.  This means everything in between must also be in the set.
+     * Just squash things together */
+    Move(array + i_e + 1, array + i_s + 1, len - i_e - 1, UV);
+    invlist_set_len(invlist,
+                    len - i_e + i_s,
+                    *(get_invlist_offset_addr(invlist)));
 
     return invlist;
 }
@@ -9561,7 +9784,7 @@ Perl__setup_canned_invlist(pTHX_ const STRLEN size, const UV element0,
 
     PERL_ARGS_ASSERT__SETUP_CANNED_INVLIST;
 
-    _append_range_to_invlist(invlist, element0, element0);
+    invlist = add_cp_to_invlist(invlist, element0);
     offset = *get_invlist_offset_addr(invlist);
 
     invlist_set_len(invlist, size, offset);
@@ -10633,7 +10856,10 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp,U32 depth)
                 RExC_seen |= REG_LOOKBEHIND_SEEN;
                RExC_in_lookbehind++;
                RExC_parse++;
-                assert(RExC_parse < RExC_end);
+                if (RExC_parse >= RExC_end) {
+                    vFAIL("Sequence (?... not terminated");
+                }
+
                 /* FALLTHROUGH */
            case '=':           /* (?=...) */
                RExC_seen_zerolen++;
@@ -11979,39 +12205,6 @@ S_grok_bslash_N(pTHX_ RExC_state_t *pRExC_state,
 }
 
 
-/*
- * reg_recode
- *
- * It returns the code point in utf8 for the value in *encp.
- *    value: a code value in the source encoding
- *    encp:  a pointer to an Encode object
- *
- * If the result from Encode is not a single character,
- * it returns U+FFFD (Replacement character) and sets *encp to NULL.
- */
-STATIC UV
-S_reg_recode(pTHX_ const U8 value, SV **encp)
-{
-    STRLEN numlen = 1;
-    SV * const sv = newSVpvn_flags((const char *) &value, numlen, SVs_TEMP);
-    const char * const s = *encp ? sv_recode_to_utf8(sv, *encp) : SvPVX(sv);
-    const STRLEN newlen = SvCUR(sv);
-    UV uv = UNICODE_REPLACEMENT;
-
-    PERL_ARGS_ASSERT_REG_RECODE;
-
-    if (newlen)
-       uv = SvUTF8(sv)
-            ? utf8n_to_uvchr((U8*)s, newlen, &numlen, UTF8_ALLOW_DEFAULT)
-            : *(U8*)s;
-
-    if (!newlen || numlen != newlen) {
-       uv = UNICODE_REPLACEMENT;
-       *encp = NULL;
-    }
-    return uv;
-}
-
 PERL_STATIC_INLINE U8
 S_compute_EXACTish(RExC_state_t *pRExC_state)
 {
@@ -13081,9 +13274,6 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
                                vFAIL(error_msg);
                            }
                             ender = result;
-                           if (IN_ENCODING && ender < 0x100) {
-                               goto recode_encoding;
-                           }
                            if (ender > 0xff) {
                                REQUIRE_UTF8(flagp);
                            }
@@ -13116,11 +13306,7 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
                                 if (RExC_recode_x_to_native) {
                                     ender = LATIN1_TO_NATIVE(ender);
                                 }
-                                else
 #endif
-                                if (IN_ENCODING) {
-                                    goto recode_encoding;
-                                }
                            }
                             else {
                                REQUIRE_UTF8(flagp);
@@ -13180,17 +13366,6 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth)
                                          form_short_octal_warning(p, numlen));
                             }
                        }
-                       if (IN_ENCODING && ender < 0x100)
-                           goto recode_encoding;
-                       break;
-                     recode_encoding:
-                       if (! RExC_override_recoding) {
-                           SV* enc = _get_encoding();
-                           ender = reg_recode((U8)ender, &enc);
-                           if (!enc && PASS2)
-                               ckWARNreg(p, "Invalid escape in the specified encoding");
-                           REQUIRE_UTF8(flagp);
-                       }
                        break;
                    case '\0':
                        if (p >= RExC_end)
@@ -16165,9 +16340,6 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
                    }
                }
                 non_portable_endpoint++;
-               if (IN_ENCODING && value < 0x100) {
-                   goto recode_encoding;
-               }
                break;
            case 'x':
                RExC_parse--;   /* function expects to be pointed at the 'x' */
@@ -16185,8 +16357,6 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
                    }
                }
                 non_portable_endpoint++;
-               if (IN_ENCODING && value < 0x100)
-                   goto recode_encoding;
                break;
            case 'c':
                value = grok_bslash_c(*RExC_parse++, PASS2);
@@ -16219,23 +16389,6 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
                         }
                     }
                     non_portable_endpoint++;
-                   if (IN_ENCODING && value < 0x100)
-                       goto recode_encoding;
-                   break;
-               }
-             recode_encoding:
-               if (! RExC_override_recoding) {
-                   SV* enc = _get_encoding();
-                   value = reg_recode((U8)value, &enc);
-                   if (!enc) {
-                        if (strict) {
-                            vFAIL("Invalid escape in the specified encoding");
-                        }
-                        else if (PASS2) {
-                            ckWARNreg(RExC_parse,
-                                 "Invalid escape in the specified encoding");
-                        }
-                    }
                    break;
                }
            default:
@@ -16376,9 +16529,9 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
             else if (! SIZE_ONLY) {
 
                 /* Here, not in pass1 (in that pass we skip calculating the
-                 * contents of this class), and is /l, or is a POSIX class for
-                 * which /l doesn't matter (or is a Unicode property, which is
-                 * skipped here). */
+                 * contents of this class), and is not /l, or is a POSIX class
+                 * for which /l doesn't matter (or is a Unicode property, which
+                 * is skipped here). */
                 if (namedclass >= ANYOF_POSIXL_MAX) {  /* If a special class */
                     if (namedclass != ANYOF_UNIPROP) { /* UNIPROP = \p and \P */
 
@@ -16403,9 +16556,9 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
                                 &cp_list);
                     }
                 }
-                else if (UNI_SEMANTICS
+                else if (  UNI_SEMANTICS
                         || classnum == _CC_ASCII
-                        || (DEPENDS_SEMANTICS && (classnum == _CC_DIGIT
+                        || (DEPENDS_SEMANTICS && (   classnum == _CC_DIGIT
                                                   || classnum == _CC_XDIGIT)))
                 {
                     /* We usually have to worry about /d and /a affecting what
@@ -17202,76 +17355,156 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
        SvREFCNT_dec_NN(cp_foldable_list);
     }
 
-    /* And combine the result (if any) with any inversion list from posix
+    /* And combine the result (if any) with any inversion lists from posix
      * classes.  The lists are kept separate up to now because we don't want to
      * fold the classes (folding of those is automatically handled by the swash
      * fetching code) */
-    if (simple_posixes) {
-        _invlist_union(cp_list, simple_posixes, &cp_list);
-        SvREFCNT_dec_NN(simple_posixes);
+    if (simple_posixes) {   /* These are the classes known to be unaffected by
+                               /a, /aa, and /d */
+        if (cp_list) {
+            _invlist_union(cp_list, simple_posixes, &cp_list);
+            SvREFCNT_dec_NN(simple_posixes);
+        }
+        else {
+            cp_list = simple_posixes;
+        }
     }
     if (posixes || nposixes) {
-        if (posixes && AT_LEAST_ASCII_RESTRICTED) {
+
+        /* We have to adjust /a and /aa */
+        if (AT_LEAST_ASCII_RESTRICTED) {
+
             /* Under /a and /aa, nothing above ASCII matches these */
-            _invlist_intersection(posixes,
-                                  PL_XPosix_ptrs[_CC_ASCII],
-                                  &posixes);
-        }
-        if (nposixes) {
-            if (DEPENDS_SEMANTICS) {
-                /* Under /d, everything in the upper half of the Latin1 range
-                 * matches these complements */
-                ANYOF_FLAGS(ret) |= ANYOF_SHARED_d_MATCHES_ALL_NON_UTF8_NON_ASCII_non_d_WARN_SUPER;
+            if (posixes) {
+                _invlist_intersection(posixes,
+                                    PL_XPosix_ptrs[_CC_ASCII],
+                                    &posixes);
             }
-            else if (AT_LEAST_ASCII_RESTRICTED) {
-                /* Under /a and /aa, everything above ASCII matches these
-                 * complements */
+
+            /* Under /a and /aa, everything above ASCII matches these
+             * complements */
+            if (nposixes) {
                 _invlist_union_complement_2nd(nposixes,
                                               PL_XPosix_ptrs[_CC_ASCII],
                                               &nposixes);
             }
-            if (posixes) {
-                _invlist_union(posixes, nposixes, &posixes);
-                SvREFCNT_dec_NN(nposixes);
-            }
-            else {
-                posixes = nposixes;
-            }
         }
+
         if (! DEPENDS_SEMANTICS) {
-            if (cp_list) {
-                _invlist_union(cp_list, posixes, &cp_list);
-                SvREFCNT_dec_NN(posixes);
+
+            /* For everything but /d, we can just add the current 'posixes' and
+             * 'nposixes' to the main list */
+            if (posixes) {
+                if (cp_list) {
+                    _invlist_union(cp_list, posixes, &cp_list);
+                    SvREFCNT_dec_NN(posixes);
+                }
+                else {
+                    cp_list = posixes;
+                }
             }
-            else {
-                cp_list = posixes;
+            if (nposixes) {
+                if (cp_list) {
+                    _invlist_union(cp_list, nposixes, &cp_list);
+                    SvREFCNT_dec_NN(nposixes);
+                }
+                else {
+                    cp_list = nposixes;
+                }
             }
         }
         else {
-            /* Under /d, we put into a separate list the Latin1 things that
-             * match only when the target string is utf8 */
-            SV* nonascii_but_latin1_properties = NULL;
-            _invlist_intersection(posixes, PL_UpperLatin1,
-                                  &nonascii_but_latin1_properties);
-            _invlist_subtract(posixes, nonascii_but_latin1_properties,
-                              &posixes);
-            if (cp_list) {
-                _invlist_union(cp_list, posixes, &cp_list);
-                SvREFCNT_dec_NN(posixes);
-            }
-            else {
-                cp_list = posixes;
-            }
+            /* Under /d, things like \w match upper Latin1 characters only if
+             * the target string is in UTF-8.  But things like \W match all the
+             * upper Latin1 characters if the target string is not in UTF-8.
+             *
+             * Handle the case where there something like \W separately */
+            if (nposixes) {
+                SV* only_non_utf8_list = invlist_clone(PL_UpperLatin1);
+
+                /* A complemented posix class matches all upper Latin1
+                 * characters if not in UTF-8.  And it matches just certain
+                 * ones when in UTF-8.  That means those certain ones are
+                 * matched regardless, so can just be added to the
+                 * unconditional list */
+                if (cp_list) {
+                    _invlist_union(cp_list, nposixes, &cp_list);
+                    SvREFCNT_dec_NN(nposixes);
+                    nposixes = NULL;
+                }
+                else {
+                    cp_list = nposixes;
+                }
+
+                /* Likewise for 'posixes' */
+                _invlist_union(posixes, cp_list, &cp_list);
+
+                /* Likewise for anything else in the range that matched only
+                 * under UTF-8 */
+                if (has_upper_latin1_only_utf8_matches) {
+                    _invlist_union(cp_list,
+                                   has_upper_latin1_only_utf8_matches,
+                                   &cp_list);
+                    SvREFCNT_dec_NN(has_upper_latin1_only_utf8_matches);
+                    has_upper_latin1_only_utf8_matches = NULL;
+                }
 
-            if (has_upper_latin1_only_utf8_matches) {
-                _invlist_union(has_upper_latin1_only_utf8_matches,
-                               nonascii_but_latin1_properties,
-                               &has_upper_latin1_only_utf8_matches);
-                SvREFCNT_dec_NN(nonascii_but_latin1_properties);
+                /* If we don't match all the upper Latin1 characters regardless
+                 * of UTF-8ness, we have to set a flag to match the rest when
+                 * not in UTF-8 */
+                _invlist_subtract(only_non_utf8_list, cp_list,
+                                  &only_non_utf8_list);
+                if (_invlist_len(only_non_utf8_list) != 0) {
+                    ANYOF_FLAGS(ret) |= ANYOF_SHARED_d_MATCHES_ALL_NON_UTF8_NON_ASCII_non_d_WARN_SUPER;
+                }
             }
             else {
-                has_upper_latin1_only_utf8_matches
-                                            = nonascii_but_latin1_properties;
+                /* Here there were no complemented posix classes.  That means
+                 * the upper Latin1 characters in 'posixes' match only when the
+                 * target string is in UTF-8.  So we have to add them to the
+                 * list of those types of code points, while adding the
+                 * remainder to the unconditional list.
+                 *
+                 * First calculate what they are */
+                SV* nonascii_but_latin1_properties = NULL;
+                _invlist_intersection(posixes, PL_UpperLatin1,
+                                      &nonascii_but_latin1_properties);
+
+                /* And add them to the final list of such characters. */
+                if (has_upper_latin1_only_utf8_matches) {
+                    _invlist_union(has_upper_latin1_only_utf8_matches,
+                                   nonascii_but_latin1_properties,
+                                   &has_upper_latin1_only_utf8_matches);
+                    SvREFCNT_dec_NN(nonascii_but_latin1_properties);
+                }
+                else {
+                    has_upper_latin1_only_utf8_matches
+                                                = nonascii_but_latin1_properties;
+                }
+
+                /* Remove them from what now becomes the unconditional list */
+                _invlist_subtract(posixes, nonascii_but_latin1_properties,
+                                  &posixes);
+
+                /* And the remainder are the unconditional ones */
+                if (cp_list) {
+                    _invlist_union(cp_list, posixes, &cp_list);
+                    SvREFCNT_dec_NN(posixes);
+                    posixes = NULL;
+                }
+                else {
+                    cp_list = posixes;
+                }
+
+                /* Get rid of any characters that we now know are matched
+                 * unconditionally from the conditional list */
+                _invlist_subtract(has_upper_latin1_only_utf8_matches,
+                                  cp_list,
+                                  &has_upper_latin1_only_utf8_matches);
+                if (_invlist_len(has_upper_latin1_only_utf8_matches) == 0) {
+                    SvREFCNT_dec_NN(has_upper_latin1_only_utf8_matches);
+                    has_upper_latin1_only_utf8_matches = NULL;
+                }
             }
         }
     }
@@ -17361,79 +17594,14 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
             invlist_iterfinish(cp_list);
         }
     }
-
-#define MATCHES_ALL_NON_UTF8_NON_ASCII(ret)                                 \
-    (   DEPENDS_SEMANTICS                                                   \
-     && (ANYOF_FLAGS(ret)                                                   \
-        & ANYOF_SHARED_d_MATCHES_ALL_NON_UTF8_NON_ASCII_non_d_WARN_SUPER))
-
-    /* See if we can simplify things under /d */
-    if (   has_upper_latin1_only_utf8_matches
-        || MATCHES_ALL_NON_UTF8_NON_ASCII(ret))
+    else if (   DEPENDS_SEMANTICS
+             && (    has_upper_latin1_only_utf8_matches
+                 || (ANYOF_FLAGS(ret) & ANYOF_SHARED_d_MATCHES_ALL_NON_UTF8_NON_ASCII_non_d_WARN_SUPER)))
     {
-        /* But not if we are inverting, as that screws it up */
-        if (! invert) {
-            if (has_upper_latin1_only_utf8_matches) {
-                if (MATCHES_ALL_NON_UTF8_NON_ASCII(ret)) {
-
-                    /* Here, we have both the flag and inversion list.  Any
-                     * character in 'has_upper_latin1_only_utf8_matches'
-                     * matches when UTF-8 is in effect, but it also matches
-                     * when UTF-8 is not in effect because of
-                     * MATCHES_ALL_NON_UTF8_NON_ASCII.  Therefore it matches
-                     * unconditionally, so can be added to the regular list,
-                     * and 'has_upper_latin1_only_utf8_matches' cleared */
-                    _invlist_union(cp_list,
-                                   has_upper_latin1_only_utf8_matches,
-                                   &cp_list);
-                    SvREFCNT_dec_NN(has_upper_latin1_only_utf8_matches);
-                    has_upper_latin1_only_utf8_matches = NULL;
-                }
-                else if (cp_list) {
-
-                    /* Here, 'cp_list' gives chars that always match, and
-                     * 'has_upper_latin1_only_utf8_matches' gives chars that
-                     * were specified to match only if the target string is in
-                     * UTF-8.  It may be that these overlap, so we can subtract
-                     * the unconditionally matching from the conditional ones,
-                     * to make the conditional list as small as possible,
-                     * perhaps even clearing it, in which case more
-                     * optimizations are possible later */
-                    _invlist_subtract(has_upper_latin1_only_utf8_matches,
-                                      cp_list,
-                                      &has_upper_latin1_only_utf8_matches);
-                    if (_invlist_len(has_upper_latin1_only_utf8_matches) == 0) {
-                        SvREFCNT_dec_NN(has_upper_latin1_only_utf8_matches);
-                        has_upper_latin1_only_utf8_matches = NULL;
-                    }
-                }
-            }
-
-            /* Similarly, if the unconditional matches include every upper
-             * latin1 character, we can clear that flag to permit later
-             * optimizations */
-            if (cp_list && MATCHES_ALL_NON_UTF8_NON_ASCII(ret)) {
-                SV* only_non_utf8_list = invlist_clone(PL_UpperLatin1);
-                _invlist_subtract(only_non_utf8_list, cp_list,
-                                  &only_non_utf8_list);
-                if (_invlist_len(only_non_utf8_list) == 0) {
-                    ANYOF_FLAGS(ret) &= ~ANYOF_SHARED_d_MATCHES_ALL_NON_UTF8_NON_ASCII_non_d_WARN_SUPER;
-                }
-                SvREFCNT_dec_NN(only_non_utf8_list);
-                only_non_utf8_list = NULL;;
-            }
-        }
-
-        /* If we haven't gotten rid of all conditional matching, we change the
-         * regnode type to indicate that */
-        if (   has_upper_latin1_only_utf8_matches
-            || MATCHES_ALL_NON_UTF8_NON_ASCII(ret))
-        {
-            OP(ret) = ANYOFD;
-            optimizable = FALSE;
-        }
+        OP(ret) = ANYOFD;
+        optimizable = FALSE;
     }
-#undef MATCHES_ALL_NON_UTF8_NON_ASCII
+
 
     /* Optimize inverted simple patterns (e.g. [^a-z]) when everything is known
      * at compile time.  Besides not inverting folded locale now, we can't
@@ -18772,7 +18940,8 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_
                                                  : TRIE_BITMAP(trie)),
                                                 NULL,
                                                 NULL,
-                                                NULL
+                                                NULL,
+                                                FALSE
                                                );
             sv_catpvs(sv, "]");
         }
@@ -18871,6 +19040,8 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_
         /* And things that aren't in the bitmap, but are small enough to be */
         SV* bitmap_range_not_in_bitmap = NULL;
 
+        const bool inverted = flags & ANYOF_INVERT;
+
        if (OP(o) == ANYOFL) {
             if (ANYOFL_UTF8_LOCALE_REQD(flags)) {
                 sv_catpvs(sv, "{utf8-locale-reqd}");
@@ -18915,21 +19086,37 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_
                                               ANYOF_BITMAP(o),
                                               bitmap_range_not_in_bitmap,
                                               only_utf8_locale_invlist,
-                                              o);
+                                              o,
+
+                                              /* Can't try inverting for a
+                                               * better display if there are
+                                               * things that haven't been
+                                               * resolved */
+                                              unresolved != NULL);
         SvREFCNT_dec(bitmap_range_not_in_bitmap);
 
         /* If there are user-defined properties which haven't been defined yet,
-         * output them, in a separate [] from the bitmap range stuff */
+         * output them.  If the result is not to be inverted, it is clearest to
+         * output them in a separate [] from the bitmap range stuff.  If the
+         * result is to be complemented, we have to show everything in one [],
+         * as the inversion applies to the whole thing.  Use {braces} to
+         * separate them from anything in the bitmap and anything above the
+         * bitmap. */
         if (unresolved) {
-            if (do_sep) {
-                Perl_sv_catpvf(aTHX_ sv,"%s][%s",PL_colors[1],PL_colors[0]);
+            if (inverted) {
+                if (! do_sep) { /* If didn't output anything in the bitmap */
+                    sv_catpvs(sv, "^");
+                }
+                sv_catpvs(sv, "{");
             }
-            if (flags & ANYOF_INVERT) {
-                sv_catpvs(sv, "^");
+            else if (do_sep) {
+                Perl_sv_catpvf(aTHX_ sv,"%s][%s",PL_colors[1],PL_colors[0]);
             }
             sv_catsv(sv, unresolved);
-            do_sep = TRUE;
-            SvREFCNT_dec_NN(unresolved);
+            if (inverted) {
+                sv_catpvs(sv, "}");
+            }
+            do_sep = ! inverted;
         }
 
         /* And, finally, add the above-the-bitmap stuff */
@@ -18946,9 +19133,11 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_
                 Perl_sv_catpvf(aTHX_ sv,"%s][%s",PL_colors[1],PL_colors[0]);
             }
 
-            /* And, for easy of understanding, it is always output not-shown as
-             * complemented */
-            if (flags & ANYOF_INVERT) {
+            /* And, for easy of understanding, it is shown in the
+             * uncomplemented form if possible.  The one exception being if
+             * there are unresolved items, where the inversion has to be
+             * delayed until runtime */
+            if (inverted && ! unresolved) {
                 _invlist_invert(nonbitmap_invlist);
                 _invlist_subtract(nonbitmap_invlist, PL_InBitmap, &nonbitmap_invlist);
             }
@@ -18985,6 +19174,8 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_
 
         /* And finally the matching, closing ']' */
        Perl_sv_catpvf(aTHX_ sv, "%s]", PL_colors[1]);
+
+        SvREFCNT_dec(unresolved);
     }
     else if (k == POSIXD || k == NPOSIXD) {
         U8 index = FLAGS(o) * 2;
@@ -19798,30 +19989,36 @@ S_put_range(pTHX_ SV *sv, UV start, const UV end, const bool allow_literals)
          * mnemonic names.  Split off any of those at the beginning and end of
          * the range to print mnemonically.  It isn't possible for many of
          * these to be in a row, so this won't overwhelm with output */
-        while (isMNEMONIC_CNTRL(start) && start <= end) {
-            put_code_point(sv, start);
-            start++;
-        }
-        if (start < end && isMNEMONIC_CNTRL(end)) {
-
-            /* Here, the final character in the range has a mnemonic name.
-             * Work backwards from the end to find the final non-mnemonic */
-            UV temp_end = end - 1;
-            while (isMNEMONIC_CNTRL(temp_end)) {
-                temp_end--;
+        if (   start <= end
+            && (isMNEMONIC_CNTRL(start) || isMNEMONIC_CNTRL(end)))
+        {
+            while (isMNEMONIC_CNTRL(start) && start <= end) {
+                put_code_point(sv, start);
+                start++;
             }
 
-            /* And separately output the interior range that doesn't start or
-             * end with mnemonics */
-            put_range(sv, start, temp_end, FALSE);
+            /* If this didn't take care of the whole range ... */
+            if (start <= end) {
 
-            /* Then output the mnemonic trailing controls */
-            start = temp_end + 1;
-            while (start <= end) {
-                put_code_point(sv, start);
-                start++;
+                /* Look backwards from the end to find the final non-mnemonic
+                 * */
+                UV temp_end = end;
+                while (isMNEMONIC_CNTRL(temp_end)) {
+                    temp_end--;
+                }
+
+                /* And separately output the interior range that doesn't start
+                 * or end with mnemonics */
+                put_range(sv, start, temp_end, FALSE);
+
+                /* Then output the mnemonic trailing controls */
+                start = temp_end + 1;
+                while (start <= end) {
+                    put_code_point(sv, start);
+                    start++;
+                }
+                break;
             }
-            break;
         }
 
         /* As a final resort, output the range or subrange as hex. */
@@ -19909,7 +20106,9 @@ S_put_charclass_bitmap_innards_common(pTHX_
 )
 {
     /* Create and return an SV containing a displayable version of the bitmap
-     * and associated information determined by the input parameters. */
+     * and associated information determined by the input parameters.  If the
+     * output would have been only the inversion indicator '^', NULL is instead
+     * returned. */
 
     SV * output;
 
@@ -19968,9 +20167,8 @@ S_put_charclass_bitmap_innards_common(pTHX_
         }
     }
 
-    /* If the only thing we output is the '^', clear it */
     if (invert && SvCUR(output) == 1) {
-        SvCUR_set(output, 0);
+        return NULL;
     }
 
     return output;
@@ -19981,7 +20179,8 @@ S_put_charclass_bitmap_innards(pTHX_ SV *sv,
                                      char *bitmap,
                                      SV *nonbitmap_invlist,
                                      SV *only_utf8_locale_invlist,
-                                     const regnode * const node)
+                                     const regnode * const node,
+                                     const bool force_as_is_display)
 {
     /* Appends to 'sv' a displayable version of the innards of the bracketed
      * character class defined by the other arguments:
@@ -19997,13 +20196,16 @@ S_put_charclass_bitmap_innards(pTHX_ SV *sv,
      *  'node' is the regex pattern node.  It is needed only when the above two
      *      parameters are not null, and is passed so that this routine can
      *      tease apart the various reasons for them.
+     *  'force_as_is_display' is TRUE if this routine should definitely NOT try
+     *      to invert things to see if that leads to a cleaner display.  If
+     *      FALSE, this routine is free to use its judgment about doing this.
      *
      * It returns TRUE if there was actually something output.  (It may be that
      * the bitmap, etc is empty.)
      *
      * When called for outputting the bitmap of a non-ANYOF node, just pass the
-     * bitmap, with the succeeding parameters set to NULL.
-     *
+     * bitmap, with the succeeding parameters set to NULL, and the final one to
+     * FALSE.
      */
 
     /* In general, it tries to display the 'cleanest' representation of the
@@ -20011,7 +20213,7 @@ S_put_charclass_bitmap_innards(pTHX_ SV *sv,
      * whether the class itself is to be inverted.  However,  there are some
      * cases where it can't try inverting, as what actually matches isn't known
      * until runtime, and hence the inversion isn't either. */
-    bool inverting_allowed = TRUE;
+    bool inverting_allowed = ! force_as_is_display;
 
     int i;
     STRLEN orig_sv_cur = SvCUR(sv);
@@ -20027,7 +20229,7 @@ S_put_charclass_bitmap_innards(pTHX_ SV *sv,
                                        is UTF-8 */
 
     SV* as_is_display;      /* The output string when we take the inputs
-                              literally */
+                               literally */
     SV* inverted_display;   /* The output string when we invert the inputs */
 
     U8 flags = (node) ? ANYOF_FLAGS(node) : 0;
@@ -20140,7 +20342,10 @@ S_put_charclass_bitmap_innards(pTHX_ SV *sv,
 
     /* If have to take the output as-is, just do that */
     if (! inverting_allowed) {
-        sv_catsv(sv, as_is_display);
+        if (as_is_display) {
+            sv_catsv(sv, as_is_display);
+            SvREFCNT_dec_NN(as_is_display);
+        }
     }
     else { /* But otherwise, create the output again on the inverted input, and
               use whichever version is shorter */
@@ -20176,10 +20381,13 @@ S_put_charclass_bitmap_innards(pTHX_ SV *sv,
             _invlist_invert(only_utf8);
             _invlist_intersection(only_utf8, PL_UpperLatin1, &only_utf8);
         }
+        else if (not_utf8) {
 
-        if (not_utf8) {
-            _invlist_invert(not_utf8);
-            _invlist_intersection(not_utf8, PL_UpperLatin1, &not_utf8);
+            /* If a code point matches iff the target string is not in UTF-8,
+             * then complementing the result has it not match iff not in UTF-8,
+             * which is the same thing as matching iff it is UTF-8. */
+            only_utf8 = not_utf8;
+            not_utf8 = NULL;
         }
 
         if (only_utf8_locale) {
@@ -20198,17 +20406,19 @@ S_put_charclass_bitmap_innards(pTHX_ SV *sv,
 
         /* Use the shortest representation, taking into account our bias
          * against showing it inverted */
-        if (SvCUR(inverted_display) + inverted_bias
-            < SvCUR(as_is_display) + as_is_bias)
+        if (   inverted_display
+            && (   ! as_is_display
+                || (  SvCUR(inverted_display) + inverted_bias
+                    < SvCUR(as_is_display)    + as_is_bias)))
         {
            sv_catsv(sv, inverted_display);
         }
-        else {
+        else if (as_is_display) {
            sv_catsv(sv, as_is_display);
         }
 
-        SvREFCNT_dec_NN(as_is_display);
-        SvREFCNT_dec_NN(inverted_display);
+        SvREFCNT_dec(as_is_display);
+        SvREFCNT_dec(inverted_display);
     }
 
     SvREFCNT_dec_NN(invlist);
index a8842a1..ec0c9f8 100644 (file)
--- a/regcomp.h
+++ b/regcomp.h
@@ -522,7 +522,7 @@ struct regnode_ssc {
                |ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD))   \
              == ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD)
 
-/* Spare:                                       0x10 */
+/* Spare: Be sure to change ANYOF_FLAGS_ALL if this gets used  0x10 */
 
 /* If set, the node matches every code point NUM_ANYOF_CODE_POINTS and above.
  * Can be in an SSC */
@@ -1054,7 +1054,7 @@ re.pm, especially to the documentation.
 /* get_sv() can return NULL during global destruction. */
 #define GET_RE_DEBUG_FLAGS DEBUG_r({ \
         SV * re_debug_flags_sv = NULL; \
-        re_debug_flags_sv = PL_curcop ? get_sv(RE_DEBUG_FLAGS, 1) : NULL; \
+        re_debug_flags_sv = PL_curcop ? get_sv(RE_DEBUG_FLAGS, GV_ADD) : NULL; \
         if (re_debug_flags_sv) { \
             if (!SvIOK(re_debug_flags_sv)) \
                 sv_setuv(re_debug_flags_sv, RE_DEBUG_COMPILE_DUMP | RE_DEBUG_EXECUTE_MASK ); \
index e8ecece..97d0359 100755 (executable)
@@ -32,6 +32,7 @@ my %feature = (
     refaliasing     => 'refaliasing',
     postderef_qq    => 'postderef_qq',
     unicode_eval    => 'unieval',
+    declared_refs   => 'myref',
     unicode_strings => 'unicode',
     fc              => 'fc',
     signatures      => 'signatures',
@@ -366,7 +367,7 @@ read_only_bottom_close_and_rename($h);
 __END__
 package feature;
 
-our $VERSION = '1.44';
+our $VERSION = '1.45';
 
 FEATURES
 
@@ -664,6 +665,22 @@ See L<perlop/Bitwise String Operators> for details.
 
 This feature is available from Perl 5.22 onwards.
 
+=head2 The 'declared_refs' 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::declared_refs";
+
+This allows a reference to a variable to be declared with C<my>, C<state>,
+our C<our>, or localized with C<local>.  It is intended mainly for use in
+conjunction with the "refaliasing" feature.  See L<perlref/Declaring a
+Reference to a Variable> for examples.
+
+This feature is available from Perl 5.26 onwards.
+
 =head1 FEATURE BUNDLES
 
 It's possible to load multiple features together, using
index 09d2961..460a72c 100644 (file)
@@ -72,7 +72,11 @@ my %hard_coded_enums =
  ( gcb => [
             'Control',
             'CR',
+            'E_Base',
+            'E_Base_GAZ',
+            'E_Modifier',
             'Extend',
+            'Glue_After_Zwj',
             'L',
             'LF',
             'LV',
@@ -83,6 +87,7 @@ my %hard_coded_enums =
             'SpacingMark',
             'T',
             'V',
+            'ZWJ',
         ],
     lb => [
             'Alphabetic',
@@ -95,6 +100,8 @@ my %hard_coded_enums =
             'Close_Punctuation',
             'Combining_Mark',
             'Contingent_Break',
+            'E_Base',
+            'E_Modifier',
             'Exclamation',
             'Glue',
             'H2',
@@ -119,6 +126,7 @@ my %hard_coded_enums =
             'Regional_Indicator',
             'Space',
             'Word_Joiner',
+            'ZWJ',
             'ZWSpace',
         ],
    sb  => [
@@ -142,9 +150,13 @@ my %hard_coded_enums =
             'ALetter',
             'CR',
             'Double_Quote',
+            'E_Base',
+            'E_Base_GAZ',
+            'E_Modifier',
             'Extend',
             'ExtendNumLet',
             'Format',
+            'Glue_After_Zwj',
             'Hebrew_Letter',
             'Katakana',
             'LF',
@@ -157,6 +169,7 @@ my %hard_coded_enums =
             'Perl_Tailored_HSpace',
             'Regional_Indicator',
             'Single_Quote',
+            'ZWJ',
         ],
 );
 
@@ -720,6 +733,12 @@ sub output_GCB_table() {
 
     # Create and output the pair table for use in determining Grapheme Cluster
     # Breaks, given in http://www.unicode.org/reports/tr29/.
+    my %gcb_actions = (
+        GCB_NOBREAK                      => 0,
+        GCB_BREAKABLE                    => 1,
+        GCB_RI_then_RI                   => 2,   # Rules 12 and 13
+        GCB_EX_then_EM                   => 3,   # Rule 10
+    );
 
     # The table is constructed in reverse order of the rules, to make the
     # lower-numbered, higher priority ones override the later ones, as the
@@ -729,29 +748,45 @@ sub output_GCB_table() {
     my $table_size = @gcb_short_enums;
 
     # Otherwise, break everywhere.
-    # GB10     Any ÷  Any
+    # GB99   Any ÷  Any
     for my $i (0 .. $table_size - 1) {
         for my $j (0 .. $table_size - 1) {
             $gcb_table[$i][$j] = 1;
         }
     }
 
-    # Do not break before extending characters.
+    # Do not break within emoji flag sequences. That is, do not break between
+    # regional indicator (RI) symbols if there is an odd number of RI
+    # characters before the break point.  Must be resolved in runtime code.
+    #
+    # GB12 ^ (RI RI)* RI × RI
+    # GB13 [^RI] (RI RI)* RI × RI
+    $gcb_table[$gcb_enums{'Regional_Indicator'}]
+              [$gcb_enums{'Regional_Indicator'}] = $gcb_actions{GCB_RI_then_RI};
+
+    # Do not break within emoji modifier sequences or emoji zwj sequences.
+    # GB11  ZWJ  × ( Glue_After_Zwj | E_Base_GAZ )
+    $gcb_table[$gcb_enums{'ZWJ'}][$gcb_enums{'Glue_After_Zwj'}] = 0;
+    $gcb_table[$gcb_enums{'ZWJ'}][$gcb_enums{'E_Base_GAZ'}] = 0;
+
+    # GB10  ( E_Base | E_Base_GAZ ) Extend* ×  E_Modifier
+    $gcb_table[$gcb_enums{'Extend'}][$gcb_enums{'E_Modifier'}]
+                                                = $gcb_actions{GCB_EX_then_EM};
+    $gcb_table[$gcb_enums{'E_Base'}][$gcb_enums{'E_Modifier'}] = 0;
+    $gcb_table[$gcb_enums{'E_Base_GAZ'}][$gcb_enums{'E_Modifier'}] = 0;
+
+    # Do not break before extending characters or ZWJ.
     # Do not break before SpacingMarks, or after Prepend characters.
-    # GB9   ×  Extend
-    # GB9a  × SpacingMark
     # GB9b  Prepend  ×
+    # GB9a  × SpacingMark
+    # GB9   ×  ( Extend | ZWJ )
     for my $i (0 .. @gcb_table - 1) {
-        $gcb_table[$i][$gcb_enums{'Extend'}] = 0;
-        $gcb_table[$i][$gcb_enums{'SpacingMark'}] = 0;
         $gcb_table[$gcb_enums{'Prepend'}][$i] = 0;
+        $gcb_table[$i][$gcb_enums{'SpacingMark'}] = 0;
+        $gcb_table[$i][$gcb_enums{'Extend'}] = 0;
+        $gcb_table[$i][$gcb_enums{'ZWJ'}] = 0;
     }
 
-    # Do not break between regional indicator symbols.
-    # GB8a  Regional_Indicator  ×  Regional_Indicator
-    $gcb_table[$gcb_enums{'Regional_Indicator'}]
-              [$gcb_enums{'Regional_Indicator'}] = 0;
-
     # Do not break Hangul syllable sequences.
     # GB8  ( LVT | T)  ×  T
     $gcb_table[$gcb_enums{'LVT'}][$gcb_enums{'T'}] = 0;
@@ -785,18 +820,16 @@ sub output_GCB_table() {
     # GB3  CR  ×  LF
     $gcb_table[$gcb_enums{'CR'}][$gcb_enums{'LF'}] = 0;
 
-    # Break at the start and end of text.
+    # Break at the start and end of text, unless the text is empty
     # GB1  sot  ÷
     # GB2   ÷  eot
     for my $i (0 .. @gcb_table - 1) {
         $gcb_table[$i][$gcb_enums{'EDGE'}] = 1;
         $gcb_table[$gcb_enums{'EDGE'}][$i] = 1;
     }
-
-    # But, unspecified by Unicode, we shouldn't break on an empty string.
     $gcb_table[$gcb_enums{'EDGE'}][$gcb_enums{'EDGE'}] = 0;
 
-    output_table_common('GCB', undef,
+    output_table_common('GCB', \%gcb_actions,
                         \@gcb_table, \@gcb_short_enums, \%gcb_abbreviations);
 }
 
@@ -828,13 +861,14 @@ sub output_LB_table() {
         LB_BREAKABLE                    => 1,
         LB_NOBREAK_EVEN_WITH_SP_BETWEEN => 2,
 
-        LB_CM_foo                       => 3,   # Rule 9
+        LB_CM_ZWJ_foo                   => 3,   # Rule 9
         LB_SP_foo                       => 6,   # Rule 18
         LB_PR_or_PO_then_OP_or_HY       => 9,   # Rule 25
         LB_SY_or_IS_then_various        => 11,  # Rule 25
         LB_HY_or_BA_then_foo            => 13,  # Rule 21
+        LB_RI_then_RI                  => 15,  # Rule 30a
 
-        LB_various_then_PO_or_PR        => (1<<4),  # Rule 25
+        LB_various_then_PO_or_PR        => (1<<5),  # Rule 25
     );
 
     # Construct the LB pair table.  This is based on the rules in
@@ -858,9 +892,18 @@ sub output_LB_table() {
         }
     }
 
-    # LB30a. Don't break between Regional Indicators
+    # LB30b Do not break between an emoji base and an emoji modifier.
+    # EB × EM
+    $lb_table[$lb_enums{'E_Base'}][$lb_enums{'E_Modifier'}]
+                                                = $lb_actions{'LB_NOBREAK'};
+
+    # LB30a Break between two regional indicator symbols if and only if there
+    # are an even number of regional indicators preceding the position of the
+    # break.
+    # sot (RI RI)* RI × RI
+    # [^RI] (RI RI)* RI × RI
     $lb_table[$lb_enums{'Regional_Indicator'}]
-             [$lb_enums{'Regional_Indicator'}] = $lb_actions{'LB_NOBREAK'};
+             [$lb_enums{'Regional_Indicator'}] = $lb_actions{'LB_RI_then_RI'};
 
     # LB30 Do not break between letters, numbers, or ordinary symbols and
     # opening or closing parentheses.
@@ -1046,28 +1089,47 @@ sub output_LB_table() {
     $lb_table[$lb_enums{'Break_Symbols'}][$lb_enums{'Prefix_Numeric'}]
                                     += $lb_actions{'LB_various_then_PO_or_PR'};
 
-    # LB24 Do not break between prefix and letters or ideographs.
-    # PR × ID
-    $lb_table[$lb_enums{'Prefix_Numeric'}][$lb_enums{'Ideographic'}]
-                                                = $lb_actions{'LB_NOBREAK'};
-
-    # PR × (AL | HL)
+    # LB24 Do not break between numeric prefix/postfix and letters, or between
+    # letters and prefix/postfix.
+    # (PR | PO) × (AL | HL)
     $lb_table[$lb_enums{'Prefix_Numeric'}][$lb_enums{'Alphabetic'}]
                                                 = $lb_actions{'LB_NOBREAK'};
     $lb_table[$lb_enums{'Prefix_Numeric'}][$lb_enums{'Hebrew_Letter'}]
                                                 = $lb_actions{'LB_NOBREAK'};
-
-    # PO × (AL | HL)
     $lb_table[$lb_enums{'Postfix_Numeric'}][$lb_enums{'Alphabetic'}]
                                                 = $lb_actions{'LB_NOBREAK'};
     $lb_table[$lb_enums{'Postfix_Numeric'}][$lb_enums{'Hebrew_Letter'}]
                                                 = $lb_actions{'LB_NOBREAK'};
 
-    # LB23 Do not break within ‘a9’, ‘3a’, or ‘H%’.
-    # ID × PO
+    # (AL | HL) × (PR | PO)
+    $lb_table[$lb_enums{'Alphabetic'}][$lb_enums{'Prefix_Numeric'}]
+                                                = $lb_actions{'LB_NOBREAK'};
+    $lb_table[$lb_enums{'Hebrew_Letter'}][$lb_enums{'Prefix_Numeric'}]
+                                                = $lb_actions{'LB_NOBREAK'};
+    $lb_table[$lb_enums{'Alphabetic'}][$lb_enums{'Postfix_Numeric'}]
+                                                = $lb_actions{'LB_NOBREAK'};
+    $lb_table[$lb_enums{'Hebrew_Letter'}][$lb_enums{'Postfix_Numeric'}]
+                                                = $lb_actions{'LB_NOBREAK'};
+
+    # LB23a Do not break between numeric prefixes and ideographs, or between
+    # ideographs and numeric postfixes.
+    # PR × (ID | EB | EM)
+    $lb_table[$lb_enums{'Prefix_Numeric'}][$lb_enums{'Ideographic'}]
+                                                = $lb_actions{'LB_NOBREAK'};
+    $lb_table[$lb_enums{'Prefix_Numeric'}][$lb_enums{'E_Base'}]
+                                                = $lb_actions{'LB_NOBREAK'};
+    $lb_table[$lb_enums{'Prefix_Numeric'}][$lb_enums{'E_Modifier'}]
+                                                = $lb_actions{'LB_NOBREAK'};
+
+    # (ID | EB | EM) × PO
     $lb_table[$lb_enums{'Ideographic'}][$lb_enums{'Postfix_Numeric'}]
                                                 = $lb_actions{'LB_NOBREAK'};
+    $lb_table[$lb_enums{'E_Base'}][$lb_enums{'Postfix_Numeric'}]
+                                                = $lb_actions{'LB_NOBREAK'};
+    $lb_table[$lb_enums{'E_Modifier'}][$lb_enums{'Postfix_Numeric'}]
+                                                = $lb_actions{'LB_NOBREAK'};
 
+    # LB23 Do not break between digits and letters
     # (AL | HL) × NU
     $lb_table[$lb_enums{'Alphabetic'}][$lb_enums{'Numeric'}]
                                                 = $lb_actions{'LB_NOBREAK'};
@@ -1092,9 +1154,13 @@ sub output_LB_table() {
     $lb_table[$lb_enums{'Exclamation'}][$lb_enums{'Inseparable'}]
                                                 = $lb_actions{'LB_NOBREAK'};
 
-    # ID × IN
+    # (ID | EB | EM) × IN
     $lb_table[$lb_enums{'Ideographic'}][$lb_enums{'Inseparable'}]
                                                 = $lb_actions{'LB_NOBREAK'};
+    $lb_table[$lb_enums{'E_Base'}][$lb_enums{'Inseparable'}]
+                                                = $lb_actions{'LB_NOBREAK'};
+    $lb_table[$lb_enums{'E_Modifier'}][$lb_enums{'Inseparable'}]
+                                                = $lb_actions{'LB_NOBREAK'};
 
     # IN × IN
     $lb_table[$lb_enums{'Inseparable'}][$lb_enums{'Inseparable'}]
@@ -1256,19 +1322,22 @@ sub output_LB_table() {
     #
     # LB9 Do not break a combining character sequence; treat it as if it has
     # the line breaking class of the base character in all of the
-    # higher-numbered rules.
-    # Treat X CM* as if it were X.
+    # higher-numbered rules.  Treat ZWJ as if it were CM
+    # Treat X (CM|ZWJ)* as if it were X.
     # where X is any line break class except BK, CR, LF, NL, SP, or ZW.
 
-    # LB10 Treat any remaining combining mark as AL.  This catches the case
-    # where a CM is the first character on the line or follows SP, BK, CR, LF,
-    # NL, or ZW.
+    # LB10 Treat any remaining combining mark or ZWJ as AL.  This catches the
+    # case where a CM or ZWJ is the first character on the line or follows SP,
+    # BK, CR, LF, NL, or ZW.
     for my $i (0 .. @lb_table - 1) {
 
-        # When the CM is the first in the pair, we don't know without looking
-        # behind whether the CM is going to inherit from an earlier character,
-        # or not.  So have to figure this out in the code
-        $lb_table[$lb_enums{'Combining_Mark'}][$i] = $lb_actions{'LB_CM_foo'};
+        # When the CM or ZWJ is the first in the pair, we don't know without
+        # looking behind whether the CM or ZWJ is going to attach to an
+        # earlier character, or not.  So have to figure this out at runtime in
+        # the code
+        $lb_table[$lb_enums{'Combining_Mark'}][$i]
+                                        = $lb_actions{'LB_CM_ZWJ_foo'};
+        $lb_table[$lb_enums{'ZWJ'}][$i] = $lb_actions{'LB_CM_ZWJ_foo'};
 
         if (   $i == $lb_enums{'Mandatory_Break'}
             || $i == $lb_enums{'EDGE'}
@@ -1282,19 +1351,38 @@ sub output_LB_table() {
             # whatever 'Alphabetic' would do.
             $lb_table[$i][$lb_enums{'Combining_Mark'}]
                                     = $lb_table[$i][$lb_enums{'Alphabetic'}];
+            $lb_table[$i][$lb_enums{'ZWJ'}]
+                                    = $lb_table[$i][$lb_enums{'Alphabetic'}];
         }
         else {
-            # For these classes, the CM combines, so doesn't break, inheriting
-            # the type of nobreak from the master character.
+            # For these classes, the CM or ZWJ combines, so doesn't break,
+            # inheriting the type of nobreak from the master character.
             if ($lb_table[$i][$lb_enums{'Combining_Mark'}]
                             != $lb_actions{'LB_NOBREAK_EVEN_WITH_SP_BETWEEN'})
             {
                 $lb_table[$i][$lb_enums{'Combining_Mark'}]
                                         = $lb_actions{'LB_NOBREAK'};
             }
+            if ($lb_table[$i][$lb_enums{'ZWJ'}]
+                            != $lb_actions{'LB_NOBREAK_EVEN_WITH_SP_BETWEEN'})
+            {
+                $lb_table[$i][$lb_enums{'ZWJ'}]
+                                        = $lb_actions{'LB_NOBREAK'};
+            }
         }
     }
 
+    # LB8a Do not break between a zero width joiner and an ideograph, emoji
+    # base or emoji modifier. This rule prevents breaks within emoji joiner
+    # sequences.
+    # ZWJ × (ID | EB | EM)
+    $lb_table[$lb_enums{'ZWJ'}][$lb_enums{'Ideographic'}]
+                                                    = $lb_actions{'LB_NOBREAK'};
+    $lb_table[$lb_enums{'ZWJ'}][$lb_enums{'E_Base'}]
+                                                    = $lb_actions{'LB_NOBREAK'};
+    $lb_table[$lb_enums{'ZWJ'}][$lb_enums{'E_Modifier'}]
+                                                    = $lb_actions{'LB_NOBREAK'};
+
     # LB8 Break before any character following a zero-width space, even if one
     # or more spaces intervene.
     # ZW SP* ÷
@@ -1349,12 +1437,10 @@ sub output_LB_table() {
                                 = $lb_actions{'LB_BREAKABLE'};
     }
 
-    # LB2 Never break at the start of text.
-    # sot ×
     # LB3 Always break at the end of text.
     # ! eot
-    # but these are reversed in the loop below, so that won't break if there
-    # is no text
+    # LB2 Never break at the start of text.
+    # sot ×
     for my $i (0 .. @lb_table - 1) {
         $lb_table[$i][$lb_enums{'EDGE'}] = $lb_actions{'LB_BREAKABLE'};
         $lb_table[$lb_enums{'EDGE'}][$i] = $lb_actions{'LB_NOBREAK'};
@@ -1393,13 +1479,14 @@ sub output_WB_table() {
         WB_NOBREAK                      => 0,
         WB_BREAKABLE                    => 1,
         WB_hs_then_hs                   => 2,
-        WB_Ex_or_FO_then_foo           => 3,
+        WB_Ex_or_FO_or_ZWJ_then_foo    => 3,
         WB_DQ_then_HL                  => 4,
         WB_HL_then_DQ                  => 6,
         WB_LE_or_HL_then_MB_or_ML_or_SQ        => 8,
         WB_MB_or_ML_or_SQ_then_LE_or_HL        => 10,
         WB_MB_or_MN_or_SQ_then_NU      => 12,
         WB_NU_then_MB_or_MN_or_SQ      => 14,
+        WB_RI_then_RI                  => 16,
     );
 
     # Construct the WB pair table.
@@ -1411,17 +1498,27 @@ sub output_WB_table() {
     my $table_size = @wb_short_enums - 1;   # -1 because we don't use UNKNOWN
 
     # Otherwise, break everywhere (including around ideographs).
-    # WB14  Any  ÷  Any
+    # WB99  Any  ÷  Any
     for my $i (0 .. $table_size - 1) {
         for my $j (0 .. $table_size - 1) {
             $wb_table[$i][$j] = $wb_actions{'WB_BREAKABLE'};
         }
     }
 
-    # Do not break between regional indicator symbols.
-    # WB13c  Regional_Indicator  ×  Regional_Indicator
+    # Do not break within emoji flag sequences. That is, do not break between
+    # regional indicator (RI) symbols if there is an odd number of RI
+    # characters before the break point.
+    # WB16  [^RI] (RI RI)* RI × RI
+    # WB15   ^    (RI RI)* RI × RI
     $wb_table[$wb_enums{'Regional_Indicator'}]
-             [$wb_enums{'Regional_Indicator'}] = $wb_actions{'WB_NOBREAK'};
+             [$wb_enums{'Regional_Indicator'}] = $wb_actions{'WB_RI_then_RI'};
+
+    # Do not break within emoji modifier sequences.
+    # WB14  ( E_Base | EBG )  ×  E_Modifier
+    $wb_table[$wb_enums{'E_Base'}][$wb_enums{'E_Modifier'}]
+                                                    = $wb_actions{'WB_NOBREAK'};
+    $wb_table[$wb_enums{'E_Base_GAZ'}][$wb_enums{'E_Modifier'}]
+                                                    = $wb_actions{'WB_NOBREAK'};
 
     # Do not break from extenders.
     # WB13b  ExtendNumLet  ×  (ALetter | Hebrew_Letter | Numeric | Katakana)
@@ -1541,14 +1638,21 @@ sub output_WB_table() {
     $wb_table[$wb_enums{'Hebrew_Letter'}][$wb_enums{'Hebrew_Letter'}]
                                                     = $wb_actions{'WB_NOBREAK'};
 
-    # Ignore Format and Extend characters, except when they appear at the
-    # beginning of a region of text.
-    # WB4  X (Extend | Format)*  →  X
+    # Ignore Format and Extend characters, except after sot, CR, LF, and
+    # Newline.  This also has the effect of: Any × (Format | Extend | ZWJ)
+    # WB4  X (Extend | Format | ZWJ)* → X
     for my $i (0 .. @wb_table - 1) {
         $wb_table[$wb_enums{'Extend'}][$i]
-                                        = $wb_actions{'WB_Ex_or_FO_then_foo'};
+                                = $wb_actions{'WB_Ex_or_FO_or_ZWJ_then_foo'};
         $wb_table[$wb_enums{'Format'}][$i]
-                                        = $wb_actions{'WB_Ex_or_FO_then_foo'};
+                                = $wb_actions{'WB_Ex_or_FO_or_ZWJ_then_foo'};
+        $wb_table[$wb_enums{'ZWJ'}][$i]
+                                = $wb_actions{'WB_Ex_or_FO_or_ZWJ_then_foo'};
+    }
+    for my $i (0 .. @wb_table - 1) {
+        $wb_table[$i][$wb_enums{'Extend'}] = $wb_actions{'WB_NOBREAK'};
+        $wb_table[$i][$wb_enums{'Format'}] = $wb_actions{'WB_NOBREAK'};
+        $wb_table[$i][$wb_enums{'ZWJ'}]    = $wb_actions{'WB_NOBREAK'};
     }
 
     # Implied is that these attach to the character before them, except for
@@ -1560,6 +1664,13 @@ sub output_WB_table() {
         $wb_table[$i][$wb_enums{'Format'}] = $wb_actions{'WB_NOBREAK'};
     }
 
+    # Do not break within emoji zwj sequences.
+    # WB3c ZWJ × ( Glue_After_Zwj | EBG )
+    $wb_table[$wb_enums{'ZWJ'}][$wb_enums{'Glue_After_Zwj'}]
+                                                = $wb_actions{'WB_NOBREAK'};
+    $wb_table[$wb_enums{'ZWJ'}][$wb_enums{'E_Base_GAZ'}]
+                                                = $wb_actions{'WB_NOBREAK'};
+
     # Break before and after white space
     # WB3b     ÷  (Newline | CR | LF)
     # WB3a  (Newline | CR | LF)  ÷
@@ -1580,24 +1691,24 @@ sub output_WB_table() {
         }
     }
 
-    # And do not break horizontal space followed by Extend or Format
+    # And do not break horizontal space followed by Extend or Format or ZWJ
     $wb_table[$wb_enums{'Perl_Tailored_HSpace'}][$wb_enums{'Extend'}]
                                                     = $wb_actions{'WB_NOBREAK'};
     $wb_table[$wb_enums{'Perl_Tailored_HSpace'}][$wb_enums{'Format'}]
                                                     = $wb_actions{'WB_NOBREAK'};
+    $wb_table[$wb_enums{'Perl_Tailored_HSpace'}][$wb_enums{'ZWJ'}]
+                                                    = $wb_actions{'WB_NOBREAK'};
     $wb_table[$wb_enums{'Perl_Tailored_HSpace'}]
               [$wb_enums{'Perl_Tailored_HSpace'}]
                                                 = $wb_actions{'WB_hs_then_hs'};
 
-    # Break at the start and end of text.
-    # WB2     ÷  eot
-    # WB1  sot  ÷
+    # Break at the start and end of text, unless the text is empty
+    # WB2  Any  ÷  eot
+    # WB1  sot  ÷  Any
     for my $i (0 .. @wb_table - 1) {
         $wb_table[$i][$wb_enums{'EDGE'}] = $wb_actions{'WB_BREAKABLE'};
         $wb_table[$wb_enums{'EDGE'}][$i] = $wb_actions{'WB_BREAKABLE'};
     }
-
-    # But, unspecified by Unicode, we shouldn't break on an empty string.
     $wb_table[$wb_enums{'EDGE'}][$wb_enums{'EDGE'}] = 0;
 
     output_table_common('WB', \%wb_actions,
index 9890a1a..850eeb9 100644 (file)
@@ -126,7 +126,8 @@ sub parse_opcode_def {
     # the content of the "desc" field from the first step is extracted here:
     @{$node}{qw(type code args flags longj)}= split /[,\s]\s*/, $node->{desc};
 
-    $node->{$_} //= "" for qw(type code args flags longj);
+    defined $node->{$_} or $node->{$_} = ""
+        for qw(type code args flags longj);
 
     register_node($node); # has to be before the type_alias code below
 
@@ -612,7 +613,7 @@ format GuTS =
  ^*~~
  \$node->{pod_comment}
  ^$name_fmt ^<<<<<<<<< ^$descr_fmt~~
- \$node->{name}, \$code, \$node->{comment}//''
+ \$node->{name}, \$code, defined \$node->{comment} ? \$node->{comment} : ''
 .
 1;
 EOD
index 22c9c15..40e7265 100644 (file)
@@ -16,7 +16,7 @@
 #
 # This script is normally invoked from regen.pl.
 
-$VERSION = '1.36';
+$VERSION = '1.37';
 
 BEGIN {
     require 'regen/regen_lib.pl';
@@ -105,6 +105,8 @@ my $tree = {
                                     [ 5.021, DEFAULT_ON ],
                                 'experimental::bitwise' =>
                                     [ 5.021, DEFAULT_ON ],
+                                'experimental::declared_refs' =>
+                                    [ 5.025, DEFAULT_ON ],
                         }],
 
         'missing'       => [ 5.021, DEFAULT_OFF],
@@ -358,8 +360,10 @@ EOM
 
   print $warn <<'EOM';
 
-#define isLEXWARN_on   cBOOL(PL_curcop->cop_warnings != pWARN_STD)
-#define isLEXWARN_off  cBOOL(PL_curcop->cop_warnings == pWARN_STD)
+#define isLEXWARN_on \
+       cBOOL(PL_curcop && PL_curcop->cop_warnings != pWARN_STD)
+#define isLEXWARN_off \
+       cBOOL(!PL_curcop || PL_curcop->cop_warnings == pWARN_STD)
 #define isWARN_ONCE    (PL_dowarn & (G_WARN_ON|G_WARN_ONCE))
 #define isWARN_on(c,x) (IsSet((U8 *)(c + 1), 2*(x)))
 #define isWARNf_on(c,x)        (IsSet((U8 *)(c + 1), 2*(x)+1))
@@ -470,7 +474,7 @@ print $pm ");\n\n" ;
 print $pm "# These are used by various things, including our own tests\n";
 print $pm tab(6, 'our $NONE'), '=  "', ('\0' x $warn_size) , "\";\n" ;
 print $pm tab(6, 'our $DEFAULT'), '=  "', mkHex($warn_size, map $_ * 2, @def),
-                          '", # [', mkRange(@def), "]\n" ;
+                          '", # [', mkRange(sort { $a <=> $b } @def), "]\n" ;
 print $pm tab(6, 'our $LAST_BIT'), '=  ' . "$index ;\n" ;
 print $pm tab(6, 'our $BYTES'),    '=  ' . "$warn_size ;\n" ;
 while (<DATA>) {
index 2822dff..60ff2a0 100644 (file)
--- a/regexec.c
+++ b/regexec.c
@@ -2118,7 +2118,11 @@ S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s,
                     while (s < strend) {
                         GCB_enum after = getGCB_VAL_UTF8((U8*) s,
                                                         (U8*) reginfo->strend);
-                        if (   (to_complement ^ isGCB(before, after))
+                        if (   (to_complement ^ isGCB(before,
+                                                      after,
+                                                      (U8*) reginfo->strbeg,
+                                                      (U8*) s,
+                                                      utf8_target))
                             && (reginfo->intuit || regtry(reginfo, &s)))
                         {
                             goto got_it;
@@ -4289,13 +4293,108 @@ S_setup_EXACTISH_ST_c1_c2(pTHX_ const regnode * const text_node, int *c1p,
     return TRUE;
 }
 
-PERL_STATIC_INLINE bool
-S_isGCB(const GCB_enum before, const GCB_enum after)
+STATIC bool
+S_isGCB(pTHX_ const GCB_enum before, const GCB_enum after, const U8 * const strbeg, const U8 * const curpos, const bool utf8_target)
 {
     /* returns a boolean indicating if there is a Grapheme Cluster Boundary
-     * between the inputs.  See http://www.unicode.org/reports/tr29/ */
+     * between the inputs.  See http://www.unicode.org/reports/tr29/. */
+
+    PERL_ARGS_ASSERT_ISGCB;
+
+    switch (GCB_table[before][after]) {
+        case GCB_BREAKABLE:
+            return TRUE;
+
+        case GCB_NOBREAK:
+            return FALSE;
+
+        case GCB_RI_then_RI:
+            {
+                int RI_count = 1;
+                U8 * temp_pos = (U8 *) curpos;
+
+                /* Do not break within emoji flag sequences. That is, do not
+                 * break between regional indicator (RI) symbols if there is an
+                 * odd number of RI characters before the break point.
+                 *  GB12     ^ (RI RI)* RI × RI
+                 *  GB13 [^RI] (RI RI)* RI × RI */
+
+                while (backup_one_GCB(strbeg,
+                                    &temp_pos,
+                                    utf8_target) == GCB_Regional_Indicator)
+                {
+                    RI_count++;
+                }
+
+                return RI_count % 2 != 1;
+            }
+
+        case GCB_EX_then_EM:
+
+            /* GB10  ( E_Base | E_Base_GAZ ) Extend* ×  E_Modifier */
+            {
+                U8 * temp_pos = (U8 *) curpos;
+                GCB_enum prev;
+
+                do {
+                    prev = backup_one_GCB(strbeg, &temp_pos, utf8_target);
+                }
+                while (prev == GCB_Extend);
+
+                return prev != GCB_E_Base && prev != GCB_E_Base_GAZ;
+            }
 
-    return GCB_table[before][after];
+        default:
+            break;
+    }
+
+#ifdef DEBUGGING
+    Perl_re_printf( aTHX_  "Unhandled GCB pair: GCB_table[%d, %d] = %d\n",
+                                  before, after, GCB_table[before][after]);
+    assert(0);
+#endif
+    return TRUE;
+}
+
+STATIC GCB_enum
+S_backup_one_GCB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target)
+{
+    GCB_enum gcb;
+
+    PERL_ARGS_ASSERT_BACKUP_ONE_GCB;
+
+    if (*curpos < strbeg) {
+        return GCB_EDGE;
+    }
+
+    if (utf8_target) {
+        U8 * prev_char_pos = reghopmaybe3(*curpos, -1, strbeg);
+        U8 * prev_prev_char_pos;
+
+        if (! prev_char_pos) {
+            return GCB_EDGE;
+        }
+
+        if ((prev_prev_char_pos = reghopmaybe3((U8 *) prev_char_pos, -1, strbeg))) {
+            gcb = getGCB_VAL_UTF8(prev_prev_char_pos, prev_char_pos);
+            *curpos = prev_char_pos;
+            prev_char_pos = prev_prev_char_pos;
+        }
+        else {
+            *curpos = (U8 *) strbeg;
+            return GCB_EDGE;
+        }
+    }
+    else {
+        if (*curpos - 2 < strbeg) {
+            *curpos = (U8 *) strbeg;
+            return GCB_EDGE;
+        }
+        (*curpos)--;
+        gcb = getGCB_VAL_CP(*(*curpos - 1));
+    }
+
+    return gcb;
 }
 
 /* Combining marks attach to most classes that precede them, but this defines
@@ -4326,7 +4425,7 @@ S_isLB(pTHX_ LB_enum before,
 
     PERL_ARGS_ASSERT_ISLB;
 
-    /* Rule numbers in the comments below are as of Unicode 8.0 */
+    /* Rule numbers in the comments below are as of Unicode 9.0 */
 
   redo:
     before = prev;
@@ -4420,14 +4519,14 @@ S_isLB(pTHX_ LB_enum before,
              * that is overriden */
             return LB_table[prev][after] != LB_NOBREAK_EVEN_WITH_SP_BETWEEN;
 
-        case LB_CM_foo:
+        case LB_CM_ZWJ_foo:
 
             /* We don't know how to treat the CM except by looking at the first
-             * non-CM character preceding it */
+             * non-CM character preceding it.  ZWJ is treated as CM */
             do {
                 prev = backup_one_LB(strbeg, &temp_pos, utf8_target);
             }
-            while (prev == LB_Combining_Mark);
+            while (prev == LB_Combining_Mark || prev == LB_ZWJ);
 
             /* Here, 'prev' is that first earlier non-CM character.  If the CM
              * attatches to it, then it inherits the behavior of 'prev'.  If it
@@ -4500,6 +4599,28 @@ S_isLB(pTHX_ LB_enum before,
             return LB_various_then_PO_or_PR;
         }
 
+        case LB_RI_then_RI + LB_NOBREAK:
+        case LB_RI_then_RI + LB_BREAKABLE:
+            {
+                int RI_count = 1;
+
+                /* LB30a Break between two regional indicator symbols if and
+                 * only if there are an even number of regional indicators
+                 * preceding the position of the break.
+                 *
+                 *  sot (RI RI)* RI × RI
+                 *  [^RI] (RI RI)* RI × RI */
+
+                while (backup_one_LB(strbeg,
+                                     &temp_pos,
+                                     utf8_target) == LB_Regional_Indicator)
+                {
+                    RI_count++;
+                }
+
+                return RI_count % 2 == 0;
+            }
+
         default:
             break;
     }
@@ -4884,7 +5005,7 @@ S_isWB(pTHX_ WB_enum previous,
 
     PERL_ARGS_ASSERT_ISWB;
 
-    /* Rule numbers in the comments below are as of Unicode 8.0 */
+    /* Rule numbers in the comments below are as of Unicode 9.0 */
 
   redo:
     before = prev;
@@ -4910,11 +5031,11 @@ S_isWB(pTHX_ WB_enum previous,
          * the beginning of a region of text', the rule is to break before
          * them, just like any other character.  Therefore, the default rule
          * applies and we don't have to look in more depth.  Should this ever
-         * change, we would have to have 2 'case' statements, like in the
-         * rules below, and backup a single character (not spacing over the
-         * extend ones) and then see if that is one of the region-end
-         * characters and go from there */
-        case WB_Ex_or_FO_then_foo:
+         * change, we would have to have 2 'case' statements, like in the rules
+         * below, and backup a single character (not spacing over the extend
+         * ones) and then see if that is one of the region-end characters and
+         * go from there */
+        case WB_Ex_or_FO_or_ZWJ_then_foo:
             prev = backup_one_WB(&previous, strbeg, &before_pos, utf8_target);
             goto redo;
 
@@ -5007,6 +5128,30 @@ S_isWB(pTHX_ WB_enum previous,
             return WB_table[before][after]
                                 - WB_NU_then_MB_or_MN_or_SQ == WB_BREAKABLE;
 
+        case WB_RI_then_RI + WB_NOBREAK:
+        case WB_RI_then_RI + WB_BREAKABLE:
+            {
+                int RI_count = 1;
+
+                /* Do not break within emoji flag sequences. That is, do not
+                 * break between regional indicator (RI) symbols if there is an
+                 * odd number of RI characters before the potential break
+                 * point.
+                 *
+                 * WB15     ^ (RI RI)* RI × RI
+                 * WB16 [^RI] (RI RI)* RI × RI */
+
+                while (backup_one_WB(&previous,
+                                     strbeg,
+                                     &before_pos,
+                                     utf8_target) == WB_Regional_Indicator)
+                {
+                    RI_count++;
+                }
+
+                return RI_count % 2 != 1;
+            }
+
         default:
             break;
     }
@@ -5087,8 +5232,8 @@ S_backup_one_WB(pTHX_ WB_enum * previous, const U8 * const strbeg, U8 ** curpos,
             *previous = (*curpos <= strbeg) ? WB_EDGE : WB_UNKNOWN;
         }
 
-        /* And we always back up over these two types */
-        if (wb != WB_Extend && wb != WB_Format) {
+        /* And we always back up over these three types */
+        if (wb != WB_Extend && wb != WB_Format && wb != WB_ZWJ) {
             return wb;
         }
     }
@@ -5119,7 +5264,7 @@ S_backup_one_WB(pTHX_ WB_enum * previous, const U8 * const strbeg, U8 ** curpos,
                 *curpos = (U8 *) strbeg;
                 return WB_EDGE;
             }
-        } while (wb == WB_Extend || wb == WB_Format);
+        } while (wb == WB_Extend || wb == WB_Format || wb == WB_ZWJ);
     }
     else {
         do {
@@ -6001,7 +6146,10 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)
                                                         (U8*)(reginfo->strbeg)),
                                                 (U8*) reginfo->strend),
                                           getGCB_VAL_UTF8((U8*) locinput,
-                                                        (U8*) reginfo->strend));
+                                                        (U8*) reginfo->strend),
+                                          (U8*) reginfo->strbeg,
+                                          (U8*) locinput,
+                                          utf8_target);
                         }
                         break;
 
@@ -6383,7 +6531,10 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)
                 while (locinput < reginfo->strend) {
                     GCB_enum cur_gcb = getGCB_VAL_UTF8((U8*) locinput,
                                                          (U8*) reginfo->strend);
-                    if (isGCB(prev_gcb, cur_gcb)) {
+                    if (isGCB(prev_gcb, cur_gcb,
+                              (U8*) reginfo->strbeg, (U8*) locinput,
+                              utf8_target))
+                    {
                         break;
                     }
 
@@ -9263,7 +9414,7 @@ S_reghop4(U8 *s, SSize_t off, const U8* llim, const U8* rlim)
  * char pos */
 
 STATIC U8 *
-S_reghopmaybe3(U8* s, SSize_t off, const U8* lim)
+S_reghopmaybe3(U8* s, SSize_t off, const U8* const lim)
 {
     PERL_ARGS_ASSERT_REGHOPMAYBE3;
 
diff --git a/sv.c b/sv.c
index 535ee8d..00a7067 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -2097,15 +2097,19 @@ S_sv_setnv(pTHX_ SV* sv, int numtype)
 {
     bool pok = cBOOL(SvPOK(sv));
     bool nok = FALSE;
+#ifdef NV_INF
     if ((numtype & IS_NUMBER_INFINITY)) {
         SvNV_set(sv, (numtype & IS_NUMBER_NEG) ? -NV_INF : NV_INF);
         nok = TRUE;
-    }
-    else if ((numtype & IS_NUMBER_NAN)) {
+    } else
+#endif
+#ifdef NV_NAN
+    if ((numtype & IS_NUMBER_NAN)) {
         SvNV_set(sv, NV_NAN);
         nok = TRUE;
-    }
-    else if (pok) {
+    } else
+#endif
+    if (pok) {
         SvNV_set(sv, Atof(SvPVX_const(sv)));
         /* Purposefully no true nok here, since we don't want to blow
          * away the possible IOK/UV of an existing sv. */
@@ -3452,12 +3456,6 @@ Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extr
         S_sv_uncow(aTHX_ sv, 0);
     }
 
-    if (IN_ENCODING && !(flags & SV_UTF8_NO_ENCODING)) {
-        sv_recode_to_utf8(sv, _get_encoding());
-       if (extra) SvGROW(sv, SvCUR(sv) + extra);
-       return SvCUR(sv);
-    }
-
     if (SvCUR(sv) == 0) {
        if (extra) SvGROW(sv, extra);
     } else { /* Assume Latin-1/EBCDIC */
@@ -4070,14 +4068,18 @@ Perl_gv_setref(pTHX_ SV *const dstr, SV *const sstr)
                            CvCONST((const CV *)sref)
                                 ? cv_const_sv((const CV *)sref)
                                 : NULL;
+                        HV * const stash = GvSTASH((const GV *)dstr);
                        report_redefined_cv(
-                          sv_2mortal(Perl_newSVpvf(aTHX_
-                               "%"HEKf"::%"HEKf,
-                               HEKfARG(
-                                HvNAME_HEK(GvSTASH((const GV *)dstr))
-                               ),
-                               HEKfARG(GvENAME_HEK(MUTABLE_GV(dstr)))
-                          )),
+                          sv_2mortal(
+                             stash
+                               ? Perl_newSVpvf(aTHX_
+                                   "%"HEKf"::%"HEKf,
+                                   HEKfARG(HvNAME_HEK(stash)),
+                                   HEKfARG(GvENAME_HEK(MUTABLE_GV(dstr))))
+                               : Perl_newSVpvf(aTHX_
+                                   "%"HEKf,
+                                   HEKfARG(GvENAME_HEK(MUTABLE_GV(dstr))))
+                          ),
                           cv,
                           CvCONST((const CV *)sref) ? &new_const_sv : NULL
                        );
@@ -7749,37 +7751,17 @@ Perl_sv_eq_flags(pTHX_ SV *sv1, SV *sv2, const U32 flags)
        pv2 = SvPV_flags_const(sv2, cur2, flags);
 
     if (cur1 && cur2 && SvUTF8(sv1) != SvUTF8(sv2) && !IN_BYTES) {
-        /* Differing utf8ness.
-        * Do not UTF8size the comparands as a side-effect. */
-        if (IN_ENCODING) {
-             if (SvUTF8(sv1)) {
-                  svrecode = newSVpvn(pv2, cur2);
-                  sv_recode_to_utf8(svrecode, _get_encoding());
-                  pv2 = SvPV_const(svrecode, cur2);
-             }
-             else {
-                  svrecode = newSVpvn(pv1, cur1);
-                  sv_recode_to_utf8(svrecode, _get_encoding());
-                  pv1 = SvPV_const(svrecode, cur1);
-             }
-             /* Now both are in UTF-8. */
-             if (cur1 != cur2) {
-                  SvREFCNT_dec_NN(svrecode);
-                  return FALSE;
-             }
-        }
-        else {
-             if (SvUTF8(sv1)) {
+        /* Differing utf8ness.  */
+       if (SvUTF8(sv1)) {
                  /* sv1 is the UTF-8 one  */
                  return bytes_cmp_utf8((const U8*)pv2, cur2,
                                        (const U8*)pv1, cur1) == 0;
-             }
-             else {
+       }
+       else {
                  /* sv2 is the UTF-8 one  */
                  return bytes_cmp_utf8((const U8*)pv1, cur1,
                                        (const U8*)pv2, cur2) == 0;
-             }
-        }
+       }
     }
 
     if (cur1 == cur2)
@@ -7839,31 +7821,16 @@ Perl_sv_cmp_flags(pTHX_ SV *const sv1, SV *const sv2,
        pv2 = SvPV_flags_const(sv2, cur2, flags);
 
     if (cur1 && cur2 && SvUTF8(sv1) != SvUTF8(sv2) && !IN_BYTES) {
-        /* Differing utf8ness.
-        * Do not UTF8size the comparands as a side-effect. */
+        /* Differing utf8ness.  */
        if (SvUTF8(sv1)) {
-           if (IN_ENCODING) {
-                svrecode = newSVpvn(pv2, cur2);
-                sv_recode_to_utf8(svrecode, _get_encoding());
-                pv2 = SvPV_const(svrecode, cur2);
-           }
-           else {
                const int retval = -bytes_cmp_utf8((const U8*)pv2, cur2,
                                                   (const U8*)pv1, cur1);
                return retval ? retval < 0 ? -1 : +1 : 0;
-           }
        }
        else {
-           if (IN_ENCODING) {
-                svrecode = newSVpvn(pv1, cur1);
-                sv_recode_to_utf8(svrecode, _get_encoding());
-                pv1 = SvPV_const(svrecode, cur1);
-           }
-           else {
                const int retval = bytes_cmp_utf8((const U8*)pv1, cur1,
                                                  (const U8*)pv2, cur2);
                return retval ? retval < 0 ? -1 : +1 : 0;
-           }
        }
     }
 
@@ -13860,7 +13827,6 @@ S_sv_dup_common(pTHX_ const SV *const sstr, CLONE_PARAMS *const param)
                        }
                        daux->xhv_name_count = saux->xhv_name_count;
 
-                       daux->xhv_fill_lazy = saux->xhv_fill_lazy;
                        daux->xhv_aux_flags = saux->xhv_aux_flags;
 #ifdef PERL_HASH_RANDOMIZE_KEYS
                        daux->xhv_rand = saux->xhv_rand;
@@ -14963,9 +14929,6 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
 
     /* magical thingies */
 
-    PL_encoding                = sv_dup(proto_perl->Iencoding, param);
-    PL_lex_encoding     = sv_dup(proto_perl->Ilex_encoding, param);
-
     sv_setpvs(PERL_DEBUG_PAD(0), "");  /* For regex debugging. */
     sv_setpvs(PERL_DEBUG_PAD(1), "");  /* ext/re needs these */
     sv_setpvs(PERL_DEBUG_PAD(2), "");  /* even without DEBUGGING. */
@@ -15613,7 +15576,7 @@ S_find_hash_subscript(pTHX_ const HV *const hv, const SV *const val)
 /* Look for an entry in the array whose value has the same SV as val;
  * If so, return the index, otherwise return -1. */
 
-STATIC I32
+STATIC SSize_t
 S_find_array_subscript(pTHX_ const AV *const av, const SV *const val)
 {
     PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT;
@@ -15624,7 +15587,7 @@ S_find_array_subscript(pTHX_ const AV *const av, const SV *const val)
 
     if (val != &PL_sv_undef) {
        SV ** const svp = AvARRAY(av);
-       I32 i;
+       SSize_t i;
 
        for (i=AvFILLp(av); i>=0; i--)
            if (svp[i] == val)
@@ -15646,7 +15609,7 @@ S_find_array_subscript(pTHX_ const AV *const av, const SV *const val)
 
 SV*
 Perl_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ,
-       const SV *const keyname, I32 aindex, int subscript_type)
+       const SV *const keyname, SSize_t aindex, int subscript_type)
 {
 
     SV * const name = sv_newmortal();
@@ -15683,9 +15646,12 @@ Perl_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ,
 
     if (subscript_type == FUV_SUBSCRIPT_HASH) {
        SV * const sv = newSV(0);
+        STRLEN len;
+        const char * const pv = SvPV_nomg_const((SV*)keyname, len);
+
        *SvPVX(name) = '$';
        Perl_sv_catpvf(aTHX_ name, "{%s}",
-           pv_pretty(sv, SvPVX_const(keyname), SvCUR(keyname), 32, NULL, NULL,
+           pv_pretty(sv, pv, len, 32, NULL, NULL,
                    PERL_PV_PRETTY_DUMP | PERL_PV_ESCAPE_UNI_DETECT ));
        SvREFCNT_dec_NN(sv);
     }
@@ -15756,7 +15722,7 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv,
                             || (obase->op_type == OP_PADRANGE
                                 && SvTYPE(PAD_SVl(obase->op_targ)) == SVt_PVHV)
                           );
-       I32 index = 0;
+       SSize_t index = 0;
        SV *keysv = NULL;
        int subscript_type = FUV_SUBSCRIPT_WITHIN;
 
@@ -15942,7 +15908,7 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv,
                                                keysv, 0, FUV_SUBSCRIPT_HASH);
            }
            else {
-               const I32 index
+               const SSize_t index
                    = find_array_subscript((const AV *)sv, uninit_sv);
                if (index >= 0)
                    return varname(gv, '@', o->op_targ,
@@ -15962,11 +15928,14 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv,
         /* If we were executing OP_MULTIDEREF when the undef warning
          * triggered, then it must be one of the index values within
          * that triggered it. If not, then the only possibility is that
-         * the value retrieved by the last aggregate lookup might be the
+         * the value retrieved by the last aggregate index might be the
          * culprit. For the former, we set PL_multideref_pc each time before
          * using an index, so work though the item list until we reach
          * that point. For the latter, just work through the entire item
          * list; the last aggregate retrieved will be the candidate.
+         * There is a third rare possibility: something triggered
+         * magic while fetching an array/hash element. Just display
+         * nothing in this case.
          */
 
         /* the named aggregate, if any */
@@ -16066,7 +16035,7 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv,
 
             if (   index_type == MDEREF_INDEX_none
                 || (actions & MDEREF_FLAG_last)
-                || (last && items == last)
+                || (last && items >= last)
             )
                 break;
 
@@ -16074,7 +16043,7 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv,
         } /* while */
 
        if (PL_op == obase) {
-           /* index was undef */
+           /* most likely index was undef */
 
             *desc_p = (    (actions & MDEREF_FLAG_last)
                         && (obase->op_private
@@ -16085,13 +16054,22 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv,
                                 : "delete"
                         : is_hv ? "hash element" : "array element";
             assert(index_type != MDEREF_INDEX_none);
-            if (index_gv)
-                return varname(index_gv, '$', 0, NULL, 0, FUV_SUBSCRIPT_NONE);
-            if (index_targ)
-                return varname(NULL, '$', index_targ,
+            if (index_gv) {
+                if (GvSV(index_gv) == uninit_sv)
+                    return varname(index_gv, '$', 0, NULL, 0,
+                                                    FUV_SUBSCRIPT_NONE);
+                else
+                    return NULL;
+            }
+            if (index_targ) {
+                if (PL_curpad[index_targ] == uninit_sv)
+                    return varname(NULL, '$', index_targ,
                                    NULL, 0, FUV_SUBSCRIPT_NONE);
-            assert(is_hv); /* AV index is an IV and can't be undef */
-            /* can a const HV index ever be undef? */
+                else
+                    return NULL;
+            }
+            /* If we got to this point it was undef on a const subscript,
+             * so magic probably involved, e.g. $ISA[0]. Give up. */
             return NULL;
         }
 
@@ -16138,7 +16116,7 @@ S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv,
                                                keysv, 0, FUV_SUBSCRIPT_HASH);
            }
            else {
-               const I32 index
+               const SSize_t index
                    = find_array_subscript((const AV *)sv, uninit_sv);
                if (index >= 0)
                    return varname(agg_gv, '@', agg_targ,
index fe46f14..4ac2b5b 100644 (file)
@@ -1,6 +1,6 @@
 #!./perl
 
-print "1..105\n";
+print "1..107\n";
 
 $x = 'x';
 
@@ -528,3 +528,10 @@ eval q|s##[}#e|;
  eval ('/@0{0*->@*/*]');
  print "ok $test - 128171\n"; $test++;
 }
+
+$foo = "WRONG"; $foo:: = "bar"; $bar = "baz";
+print "not " unless "$foo::$bar" eq "barbaz";
+print qq|ok $test - [perl #128478] "\$foo::\$bar"\n|; $test++;
+@bar = ("baz","bonk");
+print "not " unless "$foo::@bar" eq "barbaz bonk";
+print qq|ok $test - [perl #128478] "\$foo::\@bar"\n|; $test ++;
index 8a61fb9..6ccc0cf 100644 (file)
@@ -176,12 +176,14 @@ $a = 0.00049999999999999999999999999999999999999;
 $b = 0.0005000000000000000104;
 print $a <= $b ? "ok 46\n" : "not ok 46\n";
 
-if ($^O eq 'ultrix' || $^O eq 'VMS') {
+if ($^O eq 'ultrix' || $^O eq 'VMS' ||
+    (pack("d", 1) =~ /^[\x80\x10]\x40/)  # VAX D_FLOAT, G_FLOAT.
+    ) {
   # Ultrix enters looong nirvana over this. VMS blows up when configured with
   # D_FLOAT (but with G_FLOAT or IEEE works fine).  The test should probably
   # make the number of 0's a function of NV_DIG, but that's not in Config and 
   # we probably don't want to suck Config into a base test anyway.
-  print "ok 47\n";
+  print "ok 47 # skipped on $^O\n";
 } else {
   $a = 0.00000000000000000000000000000000000000000000000000000000000000000001;
   print $a > 0 ? "ok 47\n" : "not ok 47\n";
index 54e4438..bba7f91 100644 (file)
@@ -132,6 +132,10 @@ SKIP:
 {
     eval { require Errno; defined &Errno::EMFILE }
       or skip "Can't load Errno or EMFILE not defined", 1;
+    # stdio might return strange values in errno if it runs
+    # out of FILE entries, and does on darwin
+    $^O eq "darwin" && exists $ENV{PERLIO} && $ENV{PERLIO} =~ /stdio/
+      and skip "errno values from stdio are unspecified", 1;
     my @socks;
     my $sock_limit = 1000; # don't consume every file in the system
     # Default limits on various systems I have:
index 42915d9..7fbf442 100644 (file)
@@ -2159,3 +2159,24 @@ Use of uninitialized value $r in addition (+) at - line 6.
 Use of uninitialized value $t in subtraction (-) at - line 8.
 Use of uninitialized value $v in integer addition (+) at - line 11.
 Use of uninitialized value $x in integer subtraction (-) at - line 13.
+########
+# NAME 64-bit array subscripts
+# SKIP ? length(pack "p", "") < 8
+use warnings 'uninitialized';
+
+# aelem + const
+use constant foo => \0;
+$SIG{__WARN__} = sub {
+ print STDERR
+   $_[0] =~ /\$a\[([^]]+)]/ && $1 == foo
+       ? "ok\n"
+       : ("$1 != ",0+foo,"\n")
+};
+() = "$a[foo]";
+undef $SIG{__WARN__};
+
+# Multideref
+() = "$a[140688675223280]";
+EXPECT
+ok
+Use of uninitialized value $a[140688675223280] in string at - line 15.
index f333445..85e4c0a 100644 (file)
@@ -14,6 +14,8 @@
        $a = ${"#"} ;
        $a = ${"*"} ;
 
+     ${^ENCODING} is no longer supported.
+
      Name "main::a" used only once: possible typo
 
   Mandatory Warnings ALL TODO
@@ -115,6 +117,14 @@ $# is no longer supported at - line 2.
 $* is no longer supported at - line 3.
 ########
 # gv.c
+$a = ${^ENCODING};
+$a = ${^E_NCODING};
+${^ENCODING} = 1;
+${^E_NCODING} = 1; # We pretend this variable never existed.
+EXPECT
+${^ENCODING} is no longer supported at - line 4.
+########
+# gv.c
 use warnings 'syntax' ;
 use utf8;
 use open qw( :utf8 :std );
index 6bd6c3a..5fe2a88 100644 (file)
@@ -110,5 +110,5 @@ ${^ENCODING} = 42;
 ${^ENCODING} = undef;
 { local ${^ENCODING} = 37; }
 EXPECT
-Setting ${^ENCODING} is deprecated at - line 1.
-Setting ${^ENCODING} is deprecated at - line 4.
+${^ENCODING} is no longer supported at - line 1.
+${^ENCODING} is no longer supported at - line 4.
index 3324ccc..3eef12a 100644 (file)
   Constant subroutine (anonymous) undefined
        $foo = sub () { 3 }; undef &$foo;
 
+  Use of strings with code points over 0xFF as arguments to 1's complement (~) operator is deprecated
+
+  Invalid negative number (%s) in chr
+
 __END__
 # pp.c
 use warnings 'substr' ;
@@ -136,3 +140,9 @@ EXPECT
 OPTION regex
 Use of strings with code points over 0xFF as arguments to 1's complement \(~\) operator is deprecated at - line \d+.
 Use of code point 0xFF+EFF is deprecated; the permissible max is 0x7F+ at - line \d+.
+########
+# NAME chr -1
+use warnings 'utf8';
+my $chr = chr(-1);
+EXPECT
+Invalid negative number (-1) in chr at - line 2.
index 5ddd4fe..c8e0e62 100644 (file)
@@ -413,3 +413,11 @@ Argument "a_c" isn't numeric in preincrement (++) at - line 5.
 Argument "(?^:abc)" isn't numeric in preincrement (++) at - line 6.
 Argument "123x" isn't numeric in preincrement (++) at - line 7.
 Argument "123e" isn't numeric in preincrement (++) at - line 8.
+########
+# RT #128257 This used to SEGV
+use warnings;
+sub Foo::f {}
+undef *Foo::;
+*Foo::f =sub {};
+EXPECT
+Subroutine f redefined at - line 5.
index b1f707d..363bcf8 100644 (file)
@@ -12,19 +12,7 @@ BEGIN {
     require './test.pl';
 }
 
-plan 3;
-
-SKIP: {
-skip("no encoding pragma in EBCDIC", 1) if $::IS_EBCDIC;
-skip_if_miniperl("no dynamic loading on miniperl, no Encode", 1);
-fresh_perl_is <<'end', "ok\n", {},
-    no warnings 'deprecated';
-    use encoding 'utf8';
-    map { "a" . $a } ((1)x5000);
-    print "ok\n";
-end
- "concat does not lose its stack pointer after utf8 upgrade [perl #78674]";
-}
+plan 2;
 
 # This test is in the file because overload.pm uses concatenation.
 { package o; use overload '""' => sub { $_[0][0] } }
index e35f4f3..cca23f3 100644 (file)
@@ -634,7 +634,7 @@ lis [&mykeys([ 1..4 ])], [0..3], '&mykeys(\@array) in list cx';
 {
   my %h = 1..2;
   &mykeys(\%h) = 1024;
-  like %h, qr|/1024\z|, '&mykeys = ...';
+  like Hash::Util::bucket_ratio(%h), qr|/1024\z|, '&mykeys = changed number of buckets allocated';
   eval { (&mykeys(\%h)) = 1025; };
   like $@, qr/^Can't modify keys in list assignment at /;
 }
diff --git a/t/op/decl-refs.t b/t/op/decl-refs.t
new file mode 100644 (file)
index 0000000..2c11daa
--- /dev/null
@@ -0,0 +1,96 @@
+BEGIN {
+    chdir 't';
+    require './test.pl';
+    set_up_inc('../lib');
+}
+
+plan 188;
+
+for my $decl (qw< my CORE::state our local >) {
+    for my $funny (qw< $ @ % >) {
+        # Test three syntaxes with each declarator/funny char combination:
+        #     my \$foo    my(\$foo)    my\($foo)
+
+        for my $code("$decl \\${funny}x", "$decl\(\\${funny}x\)",
+                     "$decl\\\(${funny}x\)") {
+            eval $code;
+            like
+                $@,
+                qr/^The experimental declared_refs feature is not enabled/,
+               "$code error when feature is disabled";
+
+            use feature 'declared_refs';
+
+            my($w,$c);
+            local $SIG{__WARN__} = sub { $c++; $w = shift };
+            eval $code;
+            is $c, 1, "one warning from $code";
+            like $w, qr/^Declaring references is experimental at /,
+                "experimental warning for $code";
+        }
+    }
+}
+
+use feature 'declared_refs', 'state';
+no warnings 'experimental::declared_refs';
+
+for $decl ('my', 'state', 'our', 'local') {
+    my $code = '#line ' . (__LINE__+1) . ' ' . __FILE__ . "\n" . <<'END';
+    my $ret = MY \$a;
+    is $ret, \$a, 'MY \$a returns ref to $a';
+    isnt $ret, \$::a, 'MY \$a ret val is not pkg var';
+    my @ret = MY \($b, $c);
+    is "@ret", \$b." ".\$c, 'MY \($b, $c) returns correct refs';
+    isnt $ret[0], \$::b, 'first retval of MY \($b, $c) is not pkg var';
+    isnt $ret[1], \$::c, '2nd retval of MY \($b, $c) is not pkg var';
+    @ret = MY (\($d, $e));
+    is "@ret", \$d." ".\$e, 'MY (\($d, $e)) returns correct refs';
+    isnt $ret[0], \$::d, 'first retval of MY (\($d, $e)) is not pkg var';
+    isnt $ret[1], \$::e, '2nd retval of MY (\($d, $e)) is not pkg var';
+    @ret = \MY (\$f, $g);
+    is ${$ret[0]}, \$f, 'first retval of MY (\$f, $g) is \$f';
+    isnt ${$ret[0]}, \$::f, 'first retval of MY (\$f, $g) is not \$::f';
+    is $ret[1], \$g, '2nd retval of MY (\$f, $g) is $g';
+    isnt $ret[1], \$::g, '2nd retval of MY (\$f, $g) is not $::g';
+    *MODIFY_SCALAR_ATTRIBUTES = sub {
+        is @_, 3, 'MY \$h : risible  calls handler with right no. of args';
+        is $_[2], 'risible', 'correct attr passed by MY \$h : risible';
+        return;
+    };
+    SKIP : {
+        unless ('MY' eq 'local') {
+            skip_if_miniperl "No attributes on miniperl", 2;
+            eval 'MY \$h : risible' or die $@ unless 'MY' eq 'local';
+        }
+    }
+    eval 'MY \$a ** 1';
+    like $@,
+        qr/^Can't (?:declare|modify) exponentiation \(\*\*\) in "?MY"? at/,
+       'comp error for MY \$a ** 1';
+    $ret = MY \\$i;
+    is $$ret, \$i, 'retval of MY \\$i is ref to ref to $i';
+    $ret = MY \\$i;
+    isnt $$ret, \$::i, 'retval of MY \\$i is ref to ref to $::i';
+    $ret = MY (\\$i);
+    is $$ret, \$i, 'retval of MY (\\$i) is ref to ref to $i';
+    $ret = MY (\\$i);
+    isnt $$ret, \$::i, 'retval of MY (\\$i) is ref to ref to $::i';
+    *MODIFY_SCALAR_ATTRIBUTES = sub {
+        is @_, 3, 'MY (\$h) : bumpy  calls handler with right no. of args';
+        is $_[2], 'bumpy', 'correct attr passed by MY (\$h) : bumpy';
+        return;
+    };
+    SKIP : {
+        unless ('MY' eq 'local') {
+            skip_if_miniperl "No attributes on miniperl", 2;
+            eval 'MY (\$h) : bumpy' or die $@;
+        }
+    }
+    1;
+END
+    $code =~ s/MY/$decl/g;
+    if ($decl =~ /^(?:our|local)\z/) {
+        $code =~ s/is ?no?t/is/g; # tests for package vars
+    }
+    eval $code or die $@;
+}
index b33fbac..0d342a2 100644 (file)
@@ -60,19 +60,19 @@ is ($i, 30, "each count");
 @keys = ('blurfl', keys(%h), 'dyick');
 is ($#keys, 31, "added a key");
 
-$size = ((split('/',scalar %h))[1]);
+$size = Hash::Util::num_buckets(%h);
 keys %h = $size * 5;
-$newsize = ((split('/',scalar %h))[1]);
+$newsize = Hash::Util::num_buckets(%h);
 is ($newsize, $size * 8, "resize");
 keys %h = 1;
-$size = ((split('/',scalar %h))[1]);
+$size = Hash::Util::num_buckets(%h);
 is ($size, $newsize, "same size");
 %h = (1,1);
-$size = ((split('/',scalar %h))[1]);
+$size = Hash::Util::num_buckets(%h);
 is ($size, $newsize, "still same size");
 undef %h;
 %h = (1,1);
-$size = ((split('/',scalar %h))[1]);
+$size = Hash::Util::num_buckets(%h);
 is ($size, 8, "size 8");
 
 # test scalar each
@@ -98,11 +98,13 @@ $total = 0;
 $total += $key while $key = each %hash;
 is ($total, 100, "test values keys resets iterator");
 
-$size = (split('/', scalar %hash))[1];
+$size = Hash::Util::num_buckets(%hash);
 keys(%hash) = $size / 2;
-is ($size, (split('/', scalar %hash))[1]);
+is ($size, Hash::Util::num_buckets(%hash),
+    "assign to keys does not shrink hash bucket array");
 keys(%hash) = $size + 100;
-isnt ($size, (split('/', scalar %hash))[1]);
+isnt ($size, Hash::Util::num_buckets(%hash),
+    "assignment to keys of a number not large enough does not change size");
 
 is (keys(%hash), 10, "keys (%hash)");
 
@@ -191,14 +193,14 @@ for my $k (qw(each keys values)) {
     my ($k2,$v2)=each(%foo);
     my $rest=0;
     while (each(%foo)) {$rest++};
-    is($yes,1,"if(%foo) was true");
-    isnt($k1,$k2,"if(%foo) didnt mess with each (key)");
-    isnt($v1,$v2,"if(%foo) didnt mess with each (value)");
-    is($rest,3,"Got the expect number of keys");
+    is($yes,1,"if(%foo) was true - my");
+    isnt($k1,$k2,"if(%foo) didnt mess with each (key) - my");
+    isnt($v1,$v2,"if(%foo) didnt mess with each (value) - my");
+    is($rest,3,"Got the expected number of keys - my");
     my $hsv=1 && %foo;
-    like($hsv,qr[/],"Got bucket stats from %foo in scalar assignment context");
+    is($hsv,$count,"Got the count of keys from %foo in scalar assignment context - my");
     my @arr=%foo&&%foo;
-    is(@arr,10,"Got expected number of elements in list context");
+    is(@arr,10,"Got expected number of elements in list context - my");
 }    
 {
     our %foo=(1..10);
@@ -210,14 +212,14 @@ for my $k (qw(each keys values)) {
     my ($k2,$v2)=each(%foo);
     my $rest=0;
     while (each(%foo)) {$rest++};
-    is($yes,1,"if(%foo) was true");
-    isnt($k1,$k2,"if(%foo) didnt mess with each (key)");
-    isnt($v1,$v2,"if(%foo) didnt mess with each (value)");
-    is($rest,3,"Got the expect number of keys");
+    is($yes,1,"if(%foo) was true - our");
+    isnt($k1,$k2,"if(%foo) didnt mess with each (key) - our");
+    isnt($v1,$v2,"if(%foo) didnt mess with each (value) - our");
+    is($rest,3,"Got the expected number of keys - our");
     my $hsv=1 && %foo;
-    like($hsv,qr[/],"Got bucket stats from %foo in scalar assignment context");
+    is($hsv,$count,"Got the count of keys from %foo in scalar assignment context - our");
     my @arr=%foo&&%foo;
-    is(@arr,10,"Got expected number of elements in list context");
+    is(@arr,10,"Got expected number of elements in list context - our");
 }    
 {
     # make sure a deleted active iterator gets freed timely, even if the
index d71fd0a..03ae46e 100644 (file)
--- a/t/op/gv.t
+++ b/t/op/gv.t
@@ -12,7 +12,7 @@ BEGIN {
 
 use warnings;
 
-plan(tests => 276 );
+plan(tests => 277 );
 
 # type coercion on assignment
 $foo = 'foo';
@@ -1153,6 +1153,22 @@ pass "No crash due to CvGV pointing to glob copy in the stash";
     is($c_125840, 1, 'RT #125840: $c=$d');
 }
 
+# [perl #128597] Crash when gp_free calls ckWARN_d
+# I am not sure this test even belongs in this file, as the crash was the
+# result of various features interacting.  But a call to ckWARN_d from
+# gv.c:gp_free triggered the crash, so this seems as good a place as any.
+# ‘die’ (or any abnormal scope exit) can cause the current cop to be freed,
+# if the subroutine containing the ‘die’ gets freed as a result.  That
+# causes PL_curcop to be set to NULL.  If a writable handle gets freed
+# while PL_curcop is NULL, then gp_free will call ckWARN_d while that con-
+# dition still holds, so ckWARN_d needs to know about PL_curcop possibly
+# being NULL.
+SKIP: {
+    skip_if_miniperl("No PerlIO::scalar on miniperl", 1);
+    runperl(prog => 'open my $fh, q|>|, \$buf;'
+                   .'my $sub = eval q|sub {exit 0}|; $sub->()');
+    is ($? & 127, 0,"[perl #128597] No crash when gp_free calls ckWARN_d");
+}
 
 __END__
 Perl
index b4d6c25..3c083e0 100644 (file)
@@ -127,10 +127,19 @@ sub validate_hash {
   my ($desc, $h) = @_;
   local $::Level = $::Level + 1;
 
-  my $scalar = %$h;
+  # test that scalar(%hash) works as expected, which as of perl 5.25 is
+  # the same as 0+keys %hash;
+  my $scalar= scalar %$h;
+  my $count= 0+keys %$h;
+
+  is($scalar, $count, "$desc scalar() should be the same as 0+keys() as of perl 5.25");
+
+  # back compat tests, via Hash::Util::bucket_ratio();
+  my $ratio = Hash::Util::bucket_ratio(%$h);
   my $expect = qr!\A(\d+)/(\d+)\z!;
-  like($scalar, $expect, "$desc in scalar context matches pattern");
-  my ($used, $total) = $scalar =~ $expect;
+  like($ratio, $expect, "$desc bucket_ratio matches pattern");
+  my ($used, $total)= (0,0);
+  ($used, $total)= ($1,$2) if $ratio =~ /$expect/;
   cmp_ok($total, '>', 0, "$desc has >0 array size ($total)");
   cmp_ok($used, '>', 0, "$desc uses >0 heads ($used)");
   cmp_ok($used, '<=', $total,
index a6a1de9..6d72244 100644 (file)
@@ -6,7 +6,7 @@ BEGIN {
 }
 
 require './test.pl';
-plan( tests => 16 );
+plan( tests => 18 );
 
 use strict;
 use warnings;
@@ -71,3 +71,20 @@ my $fail_not_hr   = 'Not a HASH reference at ';
     cmp_ok(scalar(@warnings),'==',0,'pseudo-hash 2 count');
     cmp_ok(substr($@,0,length($fail_not_hr)),'eq',$fail_not_hr,'pseudo-hash 2 msg');
 }
+
+# RT #128189
+# this used to coredump
+
+{
+    @warnings = ();
+    my %h;
+
+    no warnings;
+    use warnings qw(uninitialized);
+
+    my $x = "$h{\1}";
+    is(scalar @warnings, 1, "RT #128189 - 1 warning");
+    like("@warnings",
+        qr/Use of uninitialized value \$h\{"SCALAR\(0x[\da-f]+\)"\}/,
+        "RT #128189 correct warning");
+}
index a98307a..e362ed1 100644 (file)
@@ -191,6 +191,11 @@ SKIP: {
         ($Config{longdblkind} == 6 || $Config{longdblkind} == 5)) {
         skip "the double-double format is weird", 1;
     }
+    if ($Config{doublekind} == 9  ||
+        $Config{doublekind} == 10 ||
+        $Config{doublekind} == 11) {
+        skip "the VAX format is not IEEE", 1;
+    }
 
 # I'm sure that there's an IBM format with a 48 bit mantissa
 # IEEE doubles have a 53 bit mantissa
index dc1ff22..06fb60d 100644 (file)
@@ -16,6 +16,11 @@ BEGIN {
         # but Inf is completely broken (e.g. Inf + 0 -> NaN).
         skip_all "$^O with long doubles does not have sane inf/nan";
     }
+    if ($Config{doublekind} == 9 ||
+        $Config{doublekind} == 10 ||
+        $Config{doublekind} == 11) {
+        skip_all "the doublekind $Config{doublekind} does not have inf/nan";
+    }
 }
 
 my $PInf = "Inf"  + 0;
index 3e65198..a943e55 100644 (file)
@@ -4,7 +4,7 @@ BEGIN {
     set_up_inc("../lib");
 }
 
-plan 153;
+plan 155;
 
 eval '\$x = \$y';
 like $@, qr/^Experimental aliasing via reference not enabled/,
@@ -590,3 +590,12 @@ SKIP: {
 
 # Used to fail an assertion [perl #123821]
 eval '\(&$0)=0';
+pass("RT #123821");
+
+# Used to fail an assertion [perl #128252]
+{
+    no feature 'refaliasing';
+    use warnings;
+    eval q{sub{\@0[0]=0};};
+    pass("RT #128252");
+}
index da7532e..ad90749 100644 (file)
@@ -675,11 +675,14 @@ is ${^MPEN}, undef, '${^MPEN} starts undefined';
 # This one used to croak due to that missing break:
 is ++${^MPEN}, 1, '${^MPEN} can be incremented';
 
-eval { ${^E_NCODING} = 1 };
-like $@, qr/^Modification of a /, 'Setting ${^E_NCODING} croaks';
-$_ = ${^E_NCODING};
-pass('can read ${^E_NCODING} without blowing up');
-is $_, undef, '${^E_NCODING} is undef';
+{
+    no warnings 'deprecated';
+    eval { ${^E_NCODING} = 1 };
+    is $@, "", 'Setting ${^E_NCODING} does nothing';
+    $_ = ${^E_NCODING};
+    pass('can read ${^E_NCODING} without blowing up');
+    is $_, 1, '${^E_NCODING} is whatever it was set to';
+}
 
 {
     my $warned = 0;
index bfdb488..e62cac3 100644 (file)
@@ -39,6 +39,9 @@ BEGIN {
     chdir 't' if -d 't';
     @INC = '../lib';
     require './test.pl';
+    if (pack("d", 1) =~ /^[\x80\10]\x40/) {
+        skip_all("VAX float cannot do infinity");
+    }
 }
 
 use strict;
index a2da636..df16464 100644 (file)
@@ -50,6 +50,8 @@ for my $size ( 16, 32, 64 ) {
 my $IsTwosComplement = pack('i', -1) eq "\xFF" x $Config{intsize};
 print "# \$IsTwosComplement = $IsTwosComplement\n";
 
+my $vax_float = (pack("d", 1) =~ /^[\x80\x10]\x40/);
+
 sub is_valid_error
 {
   my $err = shift;
@@ -295,7 +297,7 @@ sub list_eq ($$) {
     # Is this a stupid thing to do on VMS, VOS and other unusual platforms?
 
     skip("-- the IEEE infinity model is unavailable in this configuration.", 1)
-       if (($^O eq 'VMS') && !defined($Config{useieee}));
+       if (($^O eq 'VMS') && !defined($Config{useieee}) || $vax_float);
 
     skip("-- $^O has serious fp indigestion on w-packed infinities", 1)
        if (
@@ -320,7 +322,7 @@ sub list_eq ($$) {
  SKIP: {
 
     skip("-- the full range of an IEEE double may not be available in this configuration.", 3)
-       if (($^O eq 'VMS') && !defined($Config{useieee}));
+       if (($^O eq 'VMS') && !defined($Config{useieee}) || $vax_float);
 
     skip("-- $^O does not like 2**1023", 3)
        if (($^O eq 'ultrix'));
@@ -1340,7 +1342,7 @@ SKIP: {
                        | [Bb]  (?{ '101' })
                        | [Hh]  (?{ 'b8' })
                        | [svnSiIlVNLqQjJ]  (?{ 10111 })
-                       | [FfDd]  (?{ 1.36514538e67 })
+                       | [FfDd]  (?{ 1.36514538e37 })
                        | [pP]  (?{ "try this buffer" })
                        /x; $^R } @codes;
    my @end = (0x12345678, 0x23456781, 0x35465768, 0x15263748);
@@ -1531,8 +1533,11 @@ is(unpack('c'), 65, "one-arg unpack (change #18751)"); # defaulting to $_
     my (@y) = unpack("%b10a", "abcd");
     is($x[1], $y[1], "checksum advance ok");
 
-    # verify that the checksum is not overflowed with C0
-    is(unpack("C0%128U", "abcd"), unpack("U0%128U", "abcd"), "checksum not overflowed");
+    SKIP: {
+        skip("-- VAX float", 1) if $vax_float;
+        # verify that the checksum is not overflowed with C0
+        is(unpack("C0%128U", "abcd"), unpack("U0%128U", "abcd"), "checksum not overflowed");
+    }
 }
 
 my $U_1FFC_bytes = byte_utf8a_to_utf8n("\341\277\274");
index 19a44bb..84d9217 100644 (file)
@@ -8,7 +8,7 @@ BEGIN {
 
 use strict qw(refs subs);
 
-plan(235);
+plan(236);
 
 # Test this first before we extend the stack with other operations.
 # This caused an asan failure due to a bad write past the end of the stack.
@@ -124,6 +124,10 @@ is (join(':',@{$spring2{"foo"}}), "1:2:3:4");
     is ($called, 1);
 }
 is ref eval {\&{""}}, "CODE", 'reference to &{""} [perl #94476]';
+delete $My::{"Foo::"}; 
+is ref \&My::Foo::foo, "CODE",
+  'creating stub with \&deleted_stash::foo [perl #128532]';
+
 
 # Test references to return values of operators (TARGs/PADTMPs)
 {
index 7ccb88d..04fc4ce 100644 (file)
@@ -111,18 +111,37 @@ for (@tests) {
     if ($comment =~ s/\s+skip:\s*(.*)//) {
        my $os  = $1;
        my $osv = exists $Config{osvers} ? $Config{osvers} : "0";
+       my $archname = $Config{archname};
        # >comment skip: all<
        if ($os =~ /\ball\b/i) {
            $skip = 1;
-       # >comment skip: VMS hpux:10.20<
        } elsif ($os =~ /\b$^O(?::(\S+))?\b/i) {
-           my $vsn = defined $1 ? $1 : "0";
-           # Only compare on the the first pair of digits, as numeric
-           # compares do not like 2.6.10-3mdksmp or 2.6.8-24.10-default
-           s/^(\d+(\.\d+)?).*/$1/ for $osv, $vsn;
-           $skip = $vsn ? ($osv <= $vsn ? 1 : 0) : 1;
+            # We can have the $^O followed by an optional condition.
+            # The condition, if present, can be one of:
+            # (1) a regex between slashes...
+            #     tested as a regex against $Config{archname}
+            # (2) starts with a digit...
+            #     the first pair of dot-separated digits is
+            #     tested against $Config{osvers}
+            # (3) tested as literal string against $Config{archname}
+            my $cond = $1;
+            if ($cond =~ m{^/(.+)/$}) {
+                # >comment skip: solaris:/86/<
+                my $vsr = $1;
+                $skip = $archname =~ /$vsr/;
+            } elsif ($cond =~ /^\d/) {
+                # >comment skip: hpux:10.20<
+                my $vsn = $cond;
+                # Only compare on the the first pair of digits, as numeric
+                # compares do not like 2.6.10-3mdksmp or 2.6.8-24.10-default
+                s/^(\d+(\.\d+)?).*/$1/ for $osv, $vsn;
+                $skip = $vsn ? ($osv <= $vsn ? 1 : 0) : 1;
+            } else {
+                # >comment skip: netbsd:vax-netbsd<
+                $skip = $cond eq $archname;
+            }
        }
-       $skip and $comment =~ s/$/, failure expected on $^O $osv/;
+       $skip and $comment =~ s/$/, failure expected on $^O $osv $archname/;
     }
 
     if ($x eq ">$result<") {
@@ -163,9 +182,11 @@ for (@tests) {
 #
 # Tests that are expected to fail on a certain OS can be marked as such
 # by trailing the comment with a skip: section. Skips are tags separated
-# bu space consisting of a $^O optionally trailed with :osvers. In the
-# latter case, all os-levels below that are expected to fail. A special
-# tag 'all' is allowed for todo tests that should fail on any system
+# by space consisting of a $^O optionally trailed with :osvers or :archname.
+# In the osvers case, all os-levels below that are expected to fail.
+# In the archname case, an exact match is expected, unless the archname
+# begins (and ends) with a "/", in which case a regexp is expected.
+# A special tag 'all' is allowed for todo tests that should fail on any system
 #
 # >%G<   >1234567e96<  >1.23457E+102<   >exponent too big skip: os390<
 # >%.0g< >-0.0<        >-0<             >No minus skip: MSWin32 VMS hpux:10.20<
@@ -420,7 +441,7 @@ __END__
 > %.0g<     >[]<          > 0 MISSING<
 >%.2g<      >[]<          >0 MISSING<
 >%.2gC<      >[]<          >0C MISSING<
->%.0g<      >-0.0<        >-0<            >C99 standard mandates minus sign but C89 does not skip: MSWin32 VMS hpux:10.20 openbsd netbsd:1.5 irix darwin freebsd:4.9 android<
+>%.0g<      >-0.0<        >-0<            >C99 standard mandates minus sign but C89 does not skip: MSWin32 VMS netbsd:vax-netbsd hpux:10.20 openbsd netbsd:1.5 irix darwin freebsd:4.9 android<
 >%.0g<      >12345.6789<  >1e+04<
 >%#.0g<     >12345.6789<  >1.e+04<
 >%.2g<      >12345.6789<  >1.2e+04<
index 43ed919..d975630 100644 (file)
@@ -529,10 +529,15 @@ for my $num (0, -1, 1) {
     }
 }
 
-# test that %f doesn't panic with +Inf, -Inf, NaN [perl #45383]
-foreach my $n (2**1e100, -2**1e100, 2**1e100/2**1e100) { # +Inf, -Inf, NaN
-    eval { my $f = sprintf("%f", $n); };
-    is $@, "", "sprintf(\"%f\", $n)";
+my $vax_float = (pack("d", 1) =~ /^[\x80\x10]\x40/);
+
+SKIP: {
+    if ($vax_float) { skip "VAX float has no Inf or NaN", 3 }
+    # test that %f doesn't panic with +Inf, -Inf, NaN [perl #45383]
+    foreach my $n ('2**1e100', '-2**1e100', '2**1e100/2**1e100') { # +Inf, -Inf, NaN
+        eval { my $f = sprintf("%f", eval $n); };
+        is $@, "", "sprintf(\"%f\", $n)";
+    }
 }
 
 # test %ll formats with and without HAS_QUAD
@@ -595,6 +600,9 @@ $o::count = 0;
 is $o::count,    0, 'sprintf %d string overload count is 0';
 is $o::numcount, 1, 'sprintf %d number overload count is 1';
 
+SKIP: {  # hexfp
+    if ($vax_float) { skip "VAX float no hexfp", scalar @hexfloat }
+
 my $ppc_linux = $Config{archname} =~ /^(?:ppc|power(?:pc)?)(?:64)?-linux/;
 my $irix_ld   = $Config{archname} =~ /^IP\d+-irix-ld$/;
 
@@ -682,6 +690,8 @@ for my $t (@hexfloat) {
     ok($ok, "'$format' '$arg' -> '$result' cf '$expected'");
 }
 
+} # SKIP: # hexfp
+
 # double-double long double %a special testing.
 SKIP: {
     skip("uselongdouble=" . ($Config{uselongdouble} ? 'define' : 'undef')
@@ -696,17 +706,17 @@ SKIP: {
                 && $^O eq 'linux'
                 );
     # [rt.perl.org 125633]
-    like(sprintf("%La\n", (2**1020) + (2**-1072)),
+    like(sprintf("%La\n", eval '(2**1020) + (2**-1072)'),
          qr/^0x1.0{522}1p\+1020$/);
-    like(sprintf("%La\n", (2**1021) + (2**-1072)),
+    like(sprintf("%La\n", eval '(2**1021) + (2**-1072)'),
          qr/^0x1.0{523}8p\+1021$/);
-    like(sprintf("%La\n", (2**1022) + (2**-1072)),
+    like(sprintf("%La\n", eval '(2**1022) + (2**-1072)'),
          qr/^0x1.0{523}4p\+1022$/);
-    like(sprintf("%La\n", (2**1023) + (2**-1072)),
+    like(sprintf("%La\n", eval '(2**1023) + (2**-1072)'),
          qr/^0x1.0{523}2p\+1023$/);
-    like(sprintf("%La\n", (2**1023) + (2**-1073)),
+    like(sprintf("%La\n", eval '(2**1023) + (2**-1073)'),
          qr/^0x1.0{523}1p\+1023$/);
-    like(sprintf("%La\n", (2**1023) + (2**-1074)),
+    like(sprintf("%La\n", eval '(2**1023) + (2**-1074)'),
          qr/^0x1.0{524}8p\+1023$/);
 }
 
index b8e0f34..fe42700 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
 
 BEGIN { require "./test.pl"; }
 
-plan( tests => 52 );
+plan( tests => 54 );
 
 # Used to segfault (bug #15479)
 fresh_perl_like(
@@ -36,11 +36,6 @@ SKIP: {
   );
 }
 
-package tyrone::slothrop;
-$bongo::shaftsbury::scalar = 1;
-
-package main;
-
 # Used to warn
 # Unbalanced string table refcount: (1) for "A::" during global destruction.
 # for ithreads.
@@ -341,3 +336,17 @@ is runperl(
    ),
    "ok\n",
    '[perl #128086] no crash from assigning hash to *:::::: & deleting it';
+
+is runperl(
+    prog => 'BEGIN { %: = 0; $^W=1}; print qq|ok\n|',
+    stderr => 1,
+   ),
+   "ok\n",
+   "[perl #128238] don't treat %: as a stash (needs 2 colons)";
+
+is runperl(
+    prog => 'BEGIN { $::{q|foo::|}=*ENV; $^W=1}; print qq|ok\n|',
+    stderr => 1,
+   ),
+   "ok\n",
+   "[perl #128238] non-stashes in stashes";
index dd0805f..eb33027 100644 (file)
@@ -552,7 +552,7 @@ is("@p", "1 8");
 sub keeze : lvalue { keys %__ }
 %__ = ("a","b");
 keeze = 64;
-is scalar %__, '1/64', 'keys assignment through lvalue sub';
+is Hash::Util::bucket_ratio(%__), '1/64', 'keys assignment through lvalue sub';
 eval { (keeze) = 64 };
 like $@, qr/^Can't modify keys in list assignment at /,
   'list assignment to keys through lv sub is forbidden';
index d3b8b9c..c726ebf 100644 (file)
@@ -239,7 +239,11 @@ SKIP: { #rt #73040
     like $warning, qr/^localtime\($small_time_f\) failed/m;
 }
 
-{
+my $is_vax = (pack("d", 1) =~ /^[\x80\x10]\x40/);
+my $has_nan = !$is_vax;
+
+SKIP: {
+    skip("No NaN", 2) unless $has_nan;
     local $^W;
     is scalar gmtime("NaN"), undef, '[perl #123495] gmtime(NaN)';
     is scalar localtime("NaN"), undef, 'localtime(NaN)';
index 6783dad..b50ac42 100644 (file)
--- a/t/op/tr.t
+++ b/t/op/tr.t
@@ -1,14 +1,18 @@
 # tr.t
 $|=1;
 
-use utf8;
-
 BEGIN {
     chdir 't' if -d 't';
     require './test.pl';
     set_up_inc('../lib');
+    if (is_miniperl()) {
+       eval 'require utf8';
+        if ($@) { skip_all("miniperl, no 'utf8'") }
+    }
 }
 
+use utf8;
+
 plan tests => 164;
 
 # Test this first before we extend the stack with other operations.
index 590d658..93f70fa 100644 (file)
@@ -98,7 +98,7 @@ for my $tref ( @NumTests ){
 my $bas_tests = 21;
 
 # number of tests in section 3
-my $bug_tests = 66 + 3 * 3 * 5 * 2 * 3 + 2 + 66 + 4 + 2 + 3 + 96 + 11 + 3;
+my $bug_tests = 66 + 3 * 3 * 5 * 2 * 3 + 2 + 66 + 4 + 2 + 3 + 96 + 11 + 4;
 
 # number of tests in section 4
 my $hmb_tests = 37;
@@ -1972,6 +1972,19 @@ a    x
 EXPECT
              { stderr => 1 }, '#123538 crash in FF_MORE');
 
+# this used to assert fail
+fresh_perl_like(<<'EOP',
+format STDOUT =
+@
+0"$x"
+.
+print "got here\n";
+EOP
+    qr/Use of comma-less variable list is deprecated.*got here/s,
+    { stderr => 1 },
+    '#128255 Assert fail in S_sublex_done');
+
+
 #############################
 ## Section 4
 ## Add new tests *above* here
index 7992260..8aa1e16 100644 (file)
@@ -426,12 +426,13 @@ if ($^O eq 'VMS') {
   eval {require Config; import Config};
   $vms_no_ieee = 1 unless defined($Config{useieee});
 }
+my $vax_float = (pack("d",1) =~ /^[\x80\x10]\x40/);
 
 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 ($vms_no_ieee || $vax_float) {
+ print "ok ", $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";
@@ -460,6 +461,9 @@ else {
 # [perl #120426]
 # small numbers shouldn't round to zero if they have extra floating digits
 
+if ($vax_float) {
+for (1..8) { print "ok ", $T++, " # SKIP -- VAX not IEEE\n" }
+} else {
 try $T++,  0.153e-305 != 0.0,              '0.153e-305';
 try $T++,  0.1530e-305 != 0.0,             '0.1530e-305';
 try $T++,  0.15300e-305 != 0.0,            '0.15300e-305';
@@ -469,6 +473,7 @@ try $T++,  0.1530001e-305 != 0.0,          '0.1530001e-305';
 try $T++,  1.17549435100e-38 != 0.0,       'min single';
 # For flush-to-zero systems this may flush-to-zero, see PERL_SYS_FPU_INIT
 try $T++,  2.2250738585072014e-308 != 0.0, 'min double';
+}
 
 # string-to-nv should equal float literals
 try $T++, "1.23"   + 0 ==  1.23,  '1.23';
index 984a346..a8d4e10 100644 (file)
@@ -1,10 +1,22 @@
 Encode cpan/Encode/Byte/Makefile.PL 54f446297d614331ef3f51e8310faff27cc44f90
-Encode cpan/Encode/encoding.pm 51c19efc9bfe8467d6ae12a4654f6e7f980715bf
+Encode cpan/Encode/encoding.pm 90ea1844e5ae863a17dd40ac6a0f27f438db9c1f
+Encode cpan/Encode/t/enc_data.t e8b94d651a6519e186a2b74245f0002c4bb62160
+Encode cpan/Encode/t/enc_eucjp.t 9d73fce7d5ae83036be546d1603262baffd68cdb
+Encode cpan/Encode/t/enc_module.t aad4fcde7389ad55731206f62284dadf21ffe274
+Encode cpan/Encode/t/enc_utf8.t 7d1c9a4260c0c6b263eff30539e591c417e602a9
+Encode cpan/Encode/t/encoding.t ed051c17c92510713b24217c22384815088834a8
+Encode cpan/Encode/t/jperl.t 584a3813e7bc680ee6ec1d54253bbf861bda8215
 ExtUtils::Constant cpan/ExtUtils-Constant/t/Constant.t a0369c919e216fb02767a637666bb4577ad79b02
 ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/basic.t b7ee8691baf37197bf4249534f429fcf28f5cedf
+ExtUtils::MakeMaker cpan/ExtUtils-MakeMaker/t/lib/MakeMaker/Test/Setup/XS.pm 27aaa6acefd4223b57de74299314c19891ed17bc
 File::Path cpan/File-Path/lib/File/Path.pm fd8ce4420a0c113d3f47dd3223859743655c1da8
 File::Path cpan/File-Path/t/Path_win32.t 94b9276557ce7f80b91f6fd9bfa7a0cd9bf9683e
-Math::BigRat cpan/Math-BigRat/lib/Math/BigRat.pm 6eabc68e04f67694f6fe523e64eb013fc337ca5b
+Module::Metadata cpan/Module-Metadata/t/extract-package.t ddb0a96a6bd0c1593c5654d4ac4449c1a64f6953
+Module::Metadata cpan/Module-Metadata/t/metadata.t ed2fa6cb370800830a826f19c4f012ff622e6aab
+Pod::Checker cpan/Pod-Checker/t/pod/contains_bad_pod.xr 73538fd80dfe6e19ad561fe034009b44460208f6
+Pod::Checker cpan/Pod-Checker/t/pod/selfcheck.t 8ce3cfd38e4b9bcf5bc7fe7f2a14195e49aed7d8
+Pod::Checker cpan/Pod-Checker/t/pod/testcmp.pl a0cd5c8eca775c7753f4464eee96fa916e3d8a16
+Pod::Checker cpan/Pod-Checker/t/pod/testpchk.pl b2072c7f4379fd050e15424175d7cac5facf5b3b
 Pod::Perldoc cpan/Pod-Perldoc/lib/Pod/Perldoc.pm fe0bc906fb74b69cfd3fb289316ba669d770d465
 Scalar-List-Utils cpan/Scalar-List-Utils/lib/List/Util.pm e479a29c6b66ac5cbbde4ef2296afaab6c4635a6
 Scalar-List-Utils cpan/Scalar-List-Utils/lib/List/Util/XS.pm cbc38838d32fd213ae7b37ac38e30195355be3b9
@@ -14,4 +26,4 @@ Scalar-List-Utils cpan/Scalar-List-Utils/ListUtil.xs 362a247c65878265fd8acae607b
 Socket cpan/Socket/Socket.pm 98e38176d745c38282907f391c077298f5a3d0ba
 Socket cpan/Socket/Socket.xs edd4fed212785f11c5c2095a75941dad27d586d9
 autodie cpan/autodie/t/mkdir.t 9e70d2282a3cc7d76a78bf8144fccba20fb37dac
-version cpan/version/lib/version.pm ff75e2076be10bd4c05133cd979fda0b38ca8653
+version cpan/version/lib/version.pm a032a751524bdd07a93c945d2a1703abe7ad8ef0
index fd1f407..396c04d 100644 (file)
@@ -54,6 +54,7 @@ connect(2)
 Coro
 cpan2dist(1)
 CPAN::Changes::Spec
+CPAN::Uploader
 cpanp(1)
 CPANPLUS
 crypt(3)
@@ -107,6 +108,7 @@ File::Findgrep
 File::Map
 File::MMagic
 File::ShareDir
+Filter::Encoding
 find(1)
 flock(2)
 flock(3)
@@ -311,10 +313,12 @@ Want
 wget(1)
 Win32::Locale
 write(2)
+WWW::Mechanize
 XML::LibXML
 YAML
 YAML::Syck
 YAML::Tiny
+dist/data-dumper/changes       Verbatim line length including indents exceeds 79 by    1
 dist/data-dumper/dumper.pm     ? Should you be using L<...> instead of 1
 ext/amiga-exec/exec.pm Verbatim line length including indents exceeds 79 by    1
 ext/dynaloader/dynaloader.pm   Verbatim line length including indents exceeds 79 by    1
index e7f205b..580b487 100644 (file)
@@ -19,7 +19,7 @@
 # which will output "'MANIFEST' is NOT sorted properly" but which will
 # correct the problem; or:
 #
-#   make manifest
+#   make manisort
 #
 # which will output "WARNING: re-sorting MANIFEST" but which will also
 # correct the problem.
diff --git a/t/re/anyof.t b/t/re/anyof.t
new file mode 100644 (file)
index 0000000..978ec73
--- /dev/null
@@ -0,0 +1,368 @@
+use utf8;
+
+# This tests that the ANYOF nodes generated by bracketed character classes are
+# as expected.  The representation of these is not guaranteed, and this test
+# may need to be updated if it changes.  But it is here to make sure that no
+# unexpected changes occur.  These could come from faulty generation of the
+# node, or faulty display of them (or both).  Because these causes come from
+# very different parts of the regex compiler, it is unlikely that a commit
+# would change both of them, so this test will adequately serve to test both.
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = ('../lib','.','../ext/re');
+    require Config; import Config;
+    require './test.pl';
+    skip_all('no re module') unless defined &DynaLoader::boot_DynaLoader;
+}
+
+# An array is used instead of a hash, so that the tests are carried out in the
+# order given by this file.  Even-numbered indices are the regexes to compile.
+# The next higher element is the expected compilation result.
+#
+# It is painful to port some of these to EBCDIC, as not only do the code point
+# numbers change (for those < 256), but the order changes, as the compiled
+# version is sorted by native code point order.  On EBCDIC, \r comes before
+# \n, and 'k' before "K', for example.  So, the tests where there are
+# differences are skipped on EBCDIC.  They are all at the beginning of the
+# array, and a special marker entry is used to delmit the boundary between
+# skipped and not skipped.
+
+my @tests = (
+    '[[{]' => 'ANYOF[[\{]',
+    '[^\S ]' => 'ANYOFD[\t\n\x0B\f\r{utf8}\x85\xA0][1680 2000-200A 2028-2029 202F 205F 3000]',
+    '[^\n\r]' => 'ANYOF[^\n\r][0100-INFINITY]',
+    '[^\/\|,\$\%%\@\ \%"\<\>\:\#\&\*\{\}\[\]\(\)]' => 'ANYOF[^ "#$%&()*,/:<>@[\]\{|\}][0100-INFINITY]',
+    '[^[:^print:][:^ascii:]]' => 'ANYOF[\x20-\x7E]',
+    '[ [:blank:]]' => 'ANYOFD[\t {utf8}\xA0][1680 2000-200A 202F 205F 3000]',
+    '[_[:^blank:]]' => 'ANYOFD[^\t {utf8}\xA0][0100-167F 1681-1FFF 200B-202E 2030-205E 2060-2FFF 3001-INFINITY]',
+    '[\xA0[:^blank:]]' => 'ANYOF[^\t ][0100-167F 1681-1FFF 200B-202E 2030-205E 2060-2FFF 3001-INFINITY]',
+    '[ [:blank:]]' => 'ANYOFD[\t {utf8}\xA0][1680 2000-200A 202F 205F 3000]',
+    '[_[:^blank:]]' => 'ANYOFD[^\t {utf8}\xA0][0100-167F 1681-1FFF 200B-202E 2030-205E 2060-2FFF 3001-INFINITY]',
+    '[\xA0[:^blank:]]' => 'ANYOF[^\t ][0100-167F 1681-1FFF 200B-202E 2030-205E 2060-2FFF 3001-INFINITY]',
+    '(?d:[_[:^blank:]])' => 'ANYOFD[^\t {utf8}\xA0][0100-167F 1681-1FFF 200B-202E 2030-205E 2060-2FFF 3001-INFINITY]',
+    '[\x{07}-\x{0B}]' => 'ANYOF[\a\b\t\n\x0B]',
+    '(?il:[\x{212A}])' => 'ANYOFL{i}[{utf8 locale}Kk][212A]',
+    '(?il:(?[\x{212A}]))' => 'ANYOFL{utf8-locale-reqd}[Kk][212A]',
+
+    'ebcdic_ok_below_this_marker',
+
+    '(?l:[\x{212A}])' => 'ANYOFL[212A]',
+    '(?l:[\s\x{212A}])' => 'ANYOFL[\s][1680 2000-200A 2028-2029 202F 205F 212A 3000]',
+    '(?l:[^\S\x{202F}])' => 'ANYOFL[^\\S][1680 2000-200A 2028-2029 205F 3000]',
+    '(?i:[^:])' => 'ANYOF[^:][0100-INFINITY]',
+    '[\p{Any}]' => 'ANYOF[\x00-\xFF][0100-10FFFF]',
+    '[\p{IsMyRuntimeProperty}]' => 'ANYOF[+utf8::IsMyRuntimeProperty]',
+    '[^\p{IsMyRuntimeProperty}]' => 'ANYOF[^{+utf8::IsMyRuntimeProperty}]',
+    '[a\p{IsMyRuntimeProperty}]' => 'ANYOF[a][+utf8::IsMyRuntimeProperty]',
+    '[^a\p{IsMyRuntimeProperty}]' => 'ANYOF[^a{+utf8::IsMyRuntimeProperty}]',
+    '[^a\x{100}\p{IsMyRuntimeProperty}]' => 'ANYOF[^a{+utf8::IsMyRuntimeProperty}0100]',
+    '[{INFINITY_minus_1}]' => 'ANYOF[INFINITY_minus_1]',
+    '[{INFINITY}]' => 'ANYOF[INFINITY-INFINITY]',
+    '[\x{102}\x{104}]' => 'ANYOF[0102 0104]',
+    '[\x{104}\x{102}]' => 'ANYOF[0102 0104]',
+    '[\x{103}\x{102}]' => 'ANYOF[0102-0103]',
+    '[\x{00}-{INFINITY_minus_1}]' => 'ANYOF[\x00-\xFF][0100-INFINITY_minus_1]',
+    '[\x{00}-{INFINITY}]' => 'SANY',
+    '[\x{101}-{INFINITY_minus_1}]' => 'ANYOF[0101-INFINITY_minus_1]',
+    '[\x{101}-{INFINITY}]' => 'ANYOF[0101-INFINITY]',
+    '[\x{104}\x{102}\x{103}]' => 'ANYOF[0102-0104]',
+    '[\x{102}-\x{104}\x{101}]' => 'ANYOF[0101-0104]',
+    '[\x{102}-\x{104}\x{102}]' => 'ANYOF[0102-0104]',
+    '[\x{102}-\x{104}\x{103}]' => 'ANYOF[0102-0104]',
+    '[\x{102}-\x{104}\x{104}]' => 'ANYOF[0102-0104]',
+    '[\x{102}-\x{104}\x{105}]' => 'ANYOF[0102-0105]',
+    '[\x{102}-\x{104}\x{106}]' => 'ANYOF[0102-0104 0106]',
+    '[\x{102}-\x{104}{INFINITY_minus_1}]' => 'ANYOF[0102-0104 INFINITY_minus_1]',
+    '[\x{102}-\x{104}{INFINITY}]' => 'ANYOF[0102-0104 INFINITY-INFINITY]',
+    '[\x{102}-\x{104}\x{101}-{INFINITY_minus_1}]' => 'ANYOF[0101-INFINITY_minus_1]',
+    '[\x{102}-\x{104}\x{101}-{INFINITY}]' => 'ANYOF[0101-INFINITY]',
+    '[\x{102}-\x{104}\x{102}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]',
+    '[\x{102}-\x{104}\x{102}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{102}-\x{104}\x{103}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]',
+    '[\x{102}-\x{104}\x{103}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{102}-\x{104}\x{104}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]',
+    '[\x{102}-\x{104}\x{104}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{102}-\x{104}\x{105}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]',
+    '[\x{102}-\x{104}\x{105}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{102}-\x{104}\x{106}-{INFINITY_minus_1}]' => 'ANYOF[0102-0104 0106-INFINITY_minus_1]',
+    '[\x{102}-\x{104}\x{106}-{INFINITY}]' => 'ANYOF[0102-0104 0106-INFINITY]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}]' => 'ANYOF[0101-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}]' => 'ANYOF[0102-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}]' => 'ANYOF[0102-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}]' => 'ANYOF[0102-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}]' => 'ANYOF[0102-0105 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}]' => 'ANYOF[0102-0104 0106 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{107}]' => 'ANYOF[0102-0104 0107-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{108}]' => 'ANYOF[0102-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{109}]' => 'ANYOF[0102-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{10A}]' => 'ANYOF[0102-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{10B}]' => 'ANYOF[0102-0104 0108-010B]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}{INFINITY_minus_1}]' => 'ANYOF[0102-0104 0108-010A INFINITY_minus_1]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}{INFINITY}]' => 'ANYOF[0102-0104 0108-010A INFINITY-INFINITY]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{102}]' => 'ANYOF[0101-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{103}]' => 'ANYOF[0101-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{104}]' => 'ANYOF[0101-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{105}]' => 'ANYOF[0101-0105 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{106}]' => 'ANYOF[0101-0106 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{107}]' => 'ANYOF[0101-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{108}]' => 'ANYOF[0101-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{109}]' => 'ANYOF[0101-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10A}]' => 'ANYOF[0101-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10B}]' => 'ANYOF[0101-010B]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFINITY_minus_1}]' => 'ANYOF[0101-INFINITY_minus_1]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFINITY}]' => 'ANYOF[0101-INFINITY]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{102}]' => 'ANYOF[0102-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{103}]' => 'ANYOF[0102-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{104}]' => 'ANYOF[0102-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{105}]' => 'ANYOF[0102-0105 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{106}]' => 'ANYOF[0102-0106 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{107}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{108}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{109}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10A}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10B}]' => 'ANYOF[0102-010B]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10C}]' => 'ANYOF[0102-010C]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}]' => 'ANYOF[0102-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{104}]' => 'ANYOF[0102-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{105}]' => 'ANYOF[0102-0105 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{106}]' => 'ANYOF[0102-0106 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{107}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{108}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{109}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10A}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10B}]' => 'ANYOF[0102-010B]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10C}]' => 'ANYOF[0102-010C]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}]' => 'ANYOF[0102-0104 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{105}]' => 'ANYOF[0102-0105 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{106}]' => 'ANYOF[0102-0106 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{107}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{108}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{109}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10A}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10B}]' => 'ANYOF[0102-010B]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10C}]' => 'ANYOF[0102-010C]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}]' => 'ANYOF[0102-0105 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{106}]' => 'ANYOF[0102-0106 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{107}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{108}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{109}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10A}]' => 'ANYOF[0102-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10B}]' => 'ANYOF[0102-010B]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10C}]' => 'ANYOF[0102-010C]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY_minus_1]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}]' => 'ANYOF[0102-0104 0106 0108-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{107}]' => 'ANYOF[0102-0104 0106-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{108}]' => 'ANYOF[0102-0104 0106-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{109}]' => 'ANYOF[0102-0104 0106-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10A}]' => 'ANYOF[0102-0104 0106-010A]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10B}]' => 'ANYOF[0102-0104 0106-010B]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10C}]' => 'ANYOF[0102-0104 0106-010C]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFINITY_minus_1}]' => 'ANYOF[0102-0104 0106-INFINITY_minus_1]',
+    '[\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFINITY}]' => 'ANYOF[0102-0104 0106-INFINITY]',
+    '[\x{10C}-{INFINITY}{INFINITY_minus_1}]' => 'ANYOF[010C-INFINITY]',
+    '[\x{10C}-{INFINITY}{INFINITY}]' => 'ANYOF[010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}\x{104}]' => 'ANYOF[0102 0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{104}\x{102}]' => 'ANYOF[0102 0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{103}\x{102}]' => 'ANYOF[0102-0103 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{00}-{INFINITY_minus_1}]' => 'SANY',
+    '[\x{10C}-{INFINITY}\x{00}-{INFINITY}]' => 'SANY',
+    '[\x{10C}-{INFINITY}\x{101}-{INFINITY_minus_1}]' => 'ANYOF[0101-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{101}-{INFINITY}]' => 'ANYOF[0101-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{104}\x{102}\x{103}]' => 'ANYOF[0102-0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{101}]' => 'ANYOF[0101-0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{102}]' => 'ANYOF[0102-0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{103}]' => 'ANYOF[0102-0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{104}]' => 'ANYOF[0102-0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{105}]' => 'ANYOF[0102-0105 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{106}]' => 'ANYOF[0102-0104 0106 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}{INFINITY_minus_1}]' => 'ANYOF[0102-0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}{INFINITY}]' => 'ANYOF[0102-0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{101}-{INFINITY_minus_1}]' => 'ANYOF[0101-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{101}-{INFINITY}]' => 'ANYOF[0101-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{102}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{102}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{103}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{103}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{104}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{104}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{105}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{105}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{106}-{INFINITY_minus_1}]' => 'ANYOF[0102-0104 0106-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{106}-{INFINITY}]' => 'ANYOF[0102-0104 0106-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}]' => 'ANYOF[0101-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}]' => 'ANYOF[0102-0105 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}]' => 'ANYOF[0102-0104 0106 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{107}]' => 'ANYOF[0102-0104 0107-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{108}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{109}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{10A}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{10B}]' => 'ANYOF[0102-0104 0108-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}{INFINITY_minus_1}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}{INFINITY}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{102}]' => 'ANYOF[0101-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{103}]' => 'ANYOF[0101-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{104}]' => 'ANYOF[0101-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{105}]' => 'ANYOF[0101-0105 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{106}]' => 'ANYOF[0101-0106 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{107}]' => 'ANYOF[0101-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{108}]' => 'ANYOF[0101-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{109}]' => 'ANYOF[0101-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10A}]' => 'ANYOF[0101-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-\x{10B}]' => 'ANYOF[0101-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFINITY_minus_1}]' => 'ANYOF[0101-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{101}-{INFINITY}]' => 'ANYOF[0101-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{102}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{103}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{104}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{105}]' => 'ANYOF[0102-0105 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{106}]' => 'ANYOF[0102-0106 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{107}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{108}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{109}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10A}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10B}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-\x{10C}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{102}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{104}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{105}]' => 'ANYOF[0102-0105 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{106}]' => 'ANYOF[0102-0106 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{107}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{108}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{109}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10A}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10B}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-\x{10C}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{103}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}]' => 'ANYOF[0102-0104 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{105}]' => 'ANYOF[0102-0105 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{106}]' => 'ANYOF[0102-0106 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{107}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{108}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{109}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10A}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10B}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-\x{10C}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{104}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}]' => 'ANYOF[0102-0105 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{106}]' => 'ANYOF[0102-0106 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{107}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{108}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{109}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10A}]' => 'ANYOF[0102-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10B}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-\x{10C}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFINITY_minus_1}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{105}-{INFINITY}]' => 'ANYOF[0102-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}]' => 'ANYOF[0102-0104 0106 0108-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{107}]' => 'ANYOF[0102-0104 0106-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{108}]' => 'ANYOF[0102-0104 0106-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{109}]' => 'ANYOF[0102-0104 0106-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10A}]' => 'ANYOF[0102-0104 0106-010A 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10B}]' => 'ANYOF[0102-0104 0106-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-\x{10C}]' => 'ANYOF[0102-0104 0106-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFINITY_minus_1}]' => 'ANYOF[0102-0104 0106-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{108}-\x{10A}\x{106}-{INFINITY}]' => 'ANYOF[0102-0104 0106-INFINITY]',
+    '[\x{106}-{INFINITY}\x{104}]' => 'ANYOF[0104 0106-INFINITY]',
+    '[\x{106}-{INFINITY}\x{105}]' => 'ANYOF[0105-INFINITY]',
+    '[\x{106}-{INFINITY}\x{106}]' => 'ANYOF[0106-INFINITY]',
+    '[\x{106}-{INFINITY}\x{107}]' => 'ANYOF[0106-INFINITY]',
+    '[\x{106}-{INFINITY}\x{104}-\x{105}]' => 'ANYOF[0104-INFINITY]',
+    '[\x{106}-{INFINITY}\x{104}-\x{106}]' => 'ANYOF[0104-INFINITY]',
+    '[\x{106}-{INFINITY}\x{104}-\x{107}]' => 'ANYOF[0104-INFINITY]',
+    '[\x{106}-{INFINITY}\x{104}-{INFINITY_minus_1}]' => 'ANYOF[0104-INFINITY]',
+    '[\x{106}-{INFINITY}\x{104}-{INFINITY}]' => 'ANYOF[0104-INFINITY]',
+    '[\x{106}-{INFINITY}\x{105}-\x{106}]' => 'ANYOF[0105-INFINITY]',
+    '[\x{106}-{INFINITY}\x{105}-\x{107}]' => 'ANYOF[0105-INFINITY]',
+    '[\x{106}-{INFINITY}\x{105}-{INFINITY_minus_1}]' => 'ANYOF[0105-INFINITY]',
+    '[\x{106}-{INFINITY}\x{105}-{INFINITY}]' => 'ANYOF[0105-INFINITY]',
+    '[\x{106}-{INFINITY}\x{106}-\x{107}]' => 'ANYOF[0106-INFINITY]',
+    '[\x{106}-{INFINITY}\x{106}-{INFINITY_minus_1}]' => 'ANYOF[0106-INFINITY]',
+    '[\x{106}-{INFINITY}\x{106}-{INFINITY}]' => 'ANYOF[0106-INFINITY]',
+    '[\x{106}-{INFINITY}\x{107}-\x{107}]' => 'ANYOF[0106-INFINITY]',
+    '[\x{106}-{INFINITY}\x{107}-{INFINITY_minus_1}]' => 'ANYOF[0106-INFINITY]',
+    '[\x{106}-{INFINITY}\x{107}-{INFINITY}]' => 'ANYOF[0106-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{100}]' => 'ANYOF[0100 0102-0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{101}]' => 'ANYOF[0101-0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{102}]' => 'ANYOF[0102-0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{103}]' => 'ANYOF[0102-0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{104}]' => 'ANYOF[0102-0104 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{105}]' => 'ANYOF[0102-0105 010C-INFINITY]',
+    '[\x{10C}-{INFINITY}\x{102}-\x{104}\x{106}]' => 'ANYOF[0102-0104 0106 010C-INFINITY]',
+);
+
+# 2**32-1 or 2**64-1
+my $highest_cp_string = "F" x (($Config{uvsize} < 8) ? 8 : 16);
+
+my $next_highest_cp_string = $highest_cp_string =~ s/ F $ /E/xr;
+
+my $highest_cp = "\\x{$highest_cp_string}";
+my $next_highest_cp = "\\x{$next_highest_cp_string}";
+
+plan(scalar (@tests - 1) / 2);  # -1 because of the marker.
+
+my $skip_ebcdic = $::IS_EBCDIC;
+while (defined (my $test = shift @tests)) {
+
+    if ($test eq 'ebcdic_ok_below_this_marker') {
+        $skip_ebcdic = 0;
+        next;
+    }
+
+    my $expected = shift @tests;
+
+    SKIP: {
+        skip("test not ported to EBCDIC", 1) if $skip_ebcdic;
+
+        my $display_expected = $expected
+                                  =~ s/ INFINITY_minus_1 /$next_highest_cp/xgr;
+
+        # Convert platform-independent values to what is suitable for the
+        # platform
+        $test =~ s/{INFINITY}/$highest_cp/g;
+        $test =~ s/{INFINITY_minus_1}/$next_highest_cp/g;
+
+        $test = "qr/$test/";
+        my $actual_test = "use re qw(Debug COMPILE); $test";
+
+        my $result = fresh_perl($actual_test);
+        if ($? != 0) {  # Re-run so as to display STDERR.
+            fail($test);
+            fresh_perl($actual_test, { stderr => 0, verbose => 1 });
+            next;
+        }
+
+        # The Debug output will come back as a bunch of lines.  We are
+        # interested only in the line after /Final program/
+        my @lines = split /\n/, $result;
+        while (defined ($_ = shift @lines)) {
+            next unless /Final program/;
+            $_ = shift @lines;
+
+            s/ \s* \( \d+ \) \s* //x;   # Get rid of the node branch
+            s/ ^ \s* \d+ : \s* //x;     # ... And the node number
+
+            # Use platform-independent values
+            s/$highest_cp_string/INFINITY/g;
+            s/$next_highest_cp_string/INFINITY_minus_1/g;
+
+            is($_, $expected,
+               "Verify compilation of $test displays as $display_expected");
+            last;   # Discard the rest of this test's output
+        }
+    }
+}
index e788b20..f6bd04a 100644 (file)
@@ -23,7 +23,7 @@ BEGIN {
     skip_all_without_unicode_tables();
 }
 
-plan tests => 790;  # Update this when adding/deleting tests.
+plan tests => 796;  # Update this when adding/deleting tests.
 
 run_tests() unless caller;
 
@@ -973,6 +973,19 @@ sub run_tests {
         @b = grep /\s/, @a;
         @c = grep /[\s]/, @a;
         is("@b", "@c", $message);
+
+        # Test an inverted posix class with a char also in the class.
+        my $nbsp = chr utf8::unicode_to_native(0xA0);
+        my $non_s = chr utf8::unicode_to_native(0xA1);
+        my $pat_string = "[^\\S ]";
+        unlike(" ", qr/$pat_string/, "Verify ' ' !~ /$pat_string/");
+        like("\t", qr/$pat_string/, "Verify '\\t =~ /$pat_string/");
+        unlike($nbsp, qr/$pat_string/, "Verify non-utf8-NBSP !~ /$pat_string/");
+        utf8::upgrade($nbsp);
+        like($nbsp, qr/$pat_string/, "Verify utf8-NBSP =~ /$pat_string/");
+        unlike($non_s, qr/$pat_string/, "Verify non-utf8-inverted-bang !~ /$pat_string/");
+        utf8::upgrade($non_s);
+        unlike($non_s, qr/$pat_string/, "Verify utf8-inverted-bang !~ /$pat_string/");
     }
     {
         my $message = '\D, [\D], \d, [\d]';
index 2c176ef..25b90b6 100644 (file)
@@ -6,6 +6,10 @@ BEGIN {
     chdir 't' if -d 't';
     require './test.pl';
     set_up_inc(qw(lib ../lib));
+    if (is_miniperl()) {
+        eval 'require re';
+        if ($@) { skip_all("miniperl, no 're'") }
+    }
 }
 
 plan 48;
index e3c11ba..3cf1d12 100644 (file)
@@ -277,6 +277,7 @@ my @death =
  '/(?xmsixp:abc)/' => 'Only one /x regex modifier is allowed {#} m/(?xmsixp{#}:abc)/',
  '/(?xmsixp)abc/' => 'Only one /x regex modifier is allowed {#} m/(?xmsixp{#})abc/',
  '/(?xxxx:abc)/' => 'Only one /x regex modifier is allowed {#} m/(?xxxx{#}:abc)/',
+ '/(?<=/' => 'Sequence (?... not terminated {#} m/(?<={#}/',                        # [perl #128170]
 
 );
 
index 8e98e55..5ec6e5c 100644 (file)
@@ -358,8 +358,8 @@ foreach (@tests) {
         }
     }
 
-    for my $study ('', 'study $subject', 'utf8::upgrade($subject)',
-                  'utf8::upgrade($subject); study $subject') {
+    for my $study ('', 'study $subject;', 'utf8::upgrade($subject);',
+                  'utf8::upgrade($subject); study $subject;') {
        # Need to make a copy, else the utf8::upgrade of an already studied
        # scalar confuses things.
        my $subject = $subject;
@@ -367,7 +367,7 @@ foreach (@tests) {
        my ($code, $match, $got);
         if ($repl eq 'pos') {
             $code= <<EOFCODE;
-                $study;
+                $study
                 pos(\$subject)=0;
                 \$match = ( \$subject =~ m${pat}g );
                 \$got = pos(\$subject);
@@ -376,7 +376,7 @@ EOFCODE
         elsif ($qr_embed) {
             $code= <<EOFCODE;
                 my \$RE = qr$pat;
-                $study;
+                $study
                 \$match = (\$subject =~ /(?:)\$RE(?:)/) while \$c--;
                 \$got = "$repl";
 EOFCODE
@@ -386,14 +386,14 @@ EOFCODE
                # Can't run the match in a subthread, but can do this and
                # clone the pattern the other way.
                 my \$RE = threads->new(sub {qr$pat})->join();
-                $study;
+                $study
                 \$match = (\$subject =~ /(?:)\$RE(?:)/) while \$c--;
                 \$got = "$repl";
 EOFCODE
         }
         else {
             $code= <<EOFCODE;
-                $study;
+                $study
                 \$match = (\$subject =~ $OP$pat) while \$c--;
                 \$got = "$repl";
 EOFCODE
@@ -442,7 +442,8 @@ EOFCODE
                else { # better diagnostics
                    my $s = Data::Dumper->new([$subject],['subject'])->Useqq(1)->Dump;
                    my $g = Data::Dumper->new([$got],['got'])->Useqq(1)->Dump;
-                   print "not ok $testname$todo ($study) $input => '$got', match=$match\n", _comment("$s\n$g\n$code\n");
+                   my $e = Data::Dumper->new([$expect],['expected'])->Useqq(1)->Dump;
+                   print "not ok $testname$todo ($study) $input => '$got', match=$match\n", _comment("$s\n$code\n$g\n$e\n");
                }
                next TEST;
            }
index b59df4a..106b2f7 100644 (file)
@@ -17,11 +17,12 @@ still not perl
 
 #!/some/path/that/leads/to/perl -l
 
-print "1..7";
+print "1..8";
+print "ok 1 - Correct line number" if __LINE__ == 4;
 if (-f 'run/switchx.aux') {
-    print "ok 1 - Test file exists";
+    print "ok 2 - Test file exists";
 }
-print "ok 2 - Test file utilized";
+print "ok 3 - Test file utilized";
 # other tests are in switchx2.aux
 
 __END__
index bcea3d0..4e57d04 100644 (file)
@@ -15,9 +15,9 @@ print runperl( switches => ['-x'],
 # Test '-xdir'
 print runperl( switches => ['-x./run'],
                progfile => 'run/switchx2.aux',
-               args     => [ 3 ] );
+               args     => [ 4 ] );
 
-curr_test(5);
+curr_test(6);
 
 # Test the error message for not found
 like(runperl(switches => ['-x'], progfile => 'run/switchx3.aux', stderr => 1),
index 41b77f4..20d08e9 100644 (file)
--- a/t/test.pl
+++ b/t/test.pl
@@ -953,11 +953,16 @@ sub register_tempfile {
     return $count;
 }
 
-# This is the temporary file for _fresh_perl
+# This is the temporary file for fresh_perl
 my $tmpfile = tempfile();
 
-sub _fresh_perl {
-    my($prog, $action, $expect, $runperl_args, $name) = @_;
+sub fresh_perl {
+    my($prog, $runperl_args) = @_;
+
+    # Run 'runperl' with the complete perl program contained in '$prog', and
+    # arguments in the hash referred to by '$runperl_args'.  The results are
+    # returned, with $? set to the exit code.  Unless overridden, stderr is
+    # redirected to stdout.
 
     # Given the choice of the mis-parsable {}
     # (we want an anon hash, but a borked lexer might think that it's a block)
@@ -975,7 +980,8 @@ sub _fresh_perl {
     close TEST or die "Cannot close $tmpfile: $!";
 
     my $results = runperl(%$runperl_args);
-    my $status = $?;
+    my $status = $?;    # Not necessary to save this, but it makes it clear to
+                        # future maintainers.
 
     # Clean up the results into something a bit more predictable.
     $results  =~ s/\n+$//;
@@ -994,6 +1000,17 @@ sub _fresh_perl {
         $results =~ s/\n\n/\n/g;
     }
 
+    $? = $status;
+    return $results;
+}
+
+
+sub _fresh_perl {
+    my($prog, $action, $expect, $runperl_args, $name) = @_;
+
+    my $results = fresh_perl($prog, $runperl_args);
+    my $status = $?;
+
     # Use the first line of the program as a name if none was given
     unless( $name ) {
         ($first_line, $name) = $prog =~ /^((.{1,50}).*)/;
index 4cd9a48..41ac361 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
 
 plan tests => 1;
 
-# Looks to see if a "do 'unicore/lib/Sc/Hira.pl'" is called more than once, by
+# Looks to see if a "do 'unicore/lib/Scx/Hira.pl'" is called more than once, by
 # putting a compile sub first on the library path;
 # XXX Kludge: requires exact path, which might change, and has deep knowledge
 # of how utf8_heavy.pl works, which might also change.
@@ -15,7 +15,7 @@ plan tests => 1;
 BEGIN { # Make sure catches compile time references
     $::count = 0;
     unshift @INC, sub {
-       $::count++ if $_[1] eq 'unicore/lib/Sc/Hira.pl';
+       $::count++ if $_[1] eq 'unicore/lib/Scx/Hira.pl';
     };
 }
 
index ea86a25..35060ee 100644 (file)
@@ -3,43 +3,19 @@
 BEGIN {
     chdir 't' if -d 't';
     require './test.pl';
-    skip_all_without_dynamic_extension('Encode');
-    skip_all("encoding doesn't work with EBCDIC") if $::IS_EBCDIC;
     skip_all_without_perlio();
 }
 
 use strict;
-use Encode;
 
-# %mbchars = (encoding => { bytes => utf8, ... }, ...);
-# * pack('C*') is expected to return bytes even if ${^ENCODING} is true.
-our %mbchars = (
-    'big-5' => {
-       pack('C*', 0x40)       => pack('U*', 0x40), # COMMERCIAL AT
-       pack('C*', 0xA4, 0x40) => "\x{4E00}",       # CJK-4E00
-    },
-    'euc-jp' => {
-       pack('C*', 0xB0, 0xA1)       => "\x{4E9C}", # CJK-4E9C
-       pack('C*', 0x8F, 0xB0, 0xA1) => "\x{4E02}", # CJK-4E02
-    },
-    'shift-jis' => {
-       pack('C*', 0xA9)       => "\x{FF69}", # halfwidth katakana small U
-       pack('C*', 0x82, 0xA9) => "\x{304B}", # hiragana KA
-    },
-);
-
-# 4 == @char; paired tests inside 3 nested loops,
+# 6 == @char; paired tests inside 3 nested loops,
 # plus extra pair of tests in a loop, plus extra pair of tests.
-plan tests => 2 * (4 ** 3 + 4 + 1) * (keys %mbchars);
+plan tests => 6 ** 3 * 2 + 6 * 2 + 2;
 
-for my $enc (sort keys %mbchars) {
-    no warnings 'deprecated';
-    local ${^ENCODING} = find_encoding($enc);
-    use warnings 'deprecated';
-    my @char = (sort(keys   %{ $mbchars{$enc} }),
-               sort(values %{ $mbchars{$enc} }));
+my @char = (pack('U*', 0x40), "\x{4E00}", "\x{4E9C}", "\x{4E02}",
+           "\x{FF69}", "\x{304B}");
 
-    for my $rs (@char) {
+for my $rs (@char) {
        local $/ = $rs;
        for my $start (@char) {
            for my $end (@char) {
@@ -64,10 +40,10 @@ for my $enc (sort keys %mbchars) {
        my $got = chomp();
        is ($got, 0);
        is (ref($_), "ARRAY", "chomp ref (no modify)");
-    }
-
-    $/ = ")";  # the last char of something like "ARRAY(0x80ff6e4)"
-    my $got = chomp();
-    is ($got, 1);
-    ok (!ref($_), "chomp ref (modify)");
 }
+
+$/ = ")";  # the last char of something like "ARRAY(0x80ff6e4)"
+my $got = chomp();
+is ($got, 1);
+ok (!ref($_), "chomp ref (modify)");
+
diff --git a/t/uni/chr.t b/t/uni/chr.t
deleted file mode 100644 (file)
index 390cdb1..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#!./perl -w
-
-BEGIN {
-    chdir 't' if -d 't';
-    require './test.pl';
-    skip_all_without_dynamic_extension('Encode');
-    skip_all("no encoding pragma in EBCDIC") if $::IS_EBCDIC;
-    skip_all_without_perlio();
-}
-
-use strict;
-plan (tests => 8);
-no warnings 'deprecated';
-use encoding 'johab';
-
-ok(chr(0x7f) eq "\x7f");
-ok(chr(0x80) eq "\x80");
-ok(chr(0xff) eq "\xff");
-
-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__
index 7d73ecb..fdc2a18 100644 (file)
@@ -3,9 +3,7 @@
 BEGIN {
     chdir 't' if -d 't';
     require './test.pl';
-    skip_all_without_dynamic_extension('Encode');
-    skip_all("no encoding pragma in EBCDIC") if $::IS_EBCDIC;
-    skip_all_without_perlio();
+    skip_all("encoding.pm is no longer supported by the perl core");
 }
 
 plan tests => 72;
index ba67e09..2e51598 100644 (file)
@@ -3,9 +3,7 @@
 BEGIN {
     chdir 't' if -d 't';
     require './test.pl';
-    skip_all_without_dynamic_extension('Encode');
-    skip_all("no encoding pragma in EBCDIC") if $::IS_EBCDIC;
-    skip_all_without_perlio();
+    skip_all("encoding.pm is no longer supported by the perl core");
 }
 
 plan tests => 94;
diff --git a/t/uni/tr_7jis.t b/t/uni/tr_7jis.t
deleted file mode 100644 (file)
index d1735f9..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#! perl -w
-#
-# This script is written intentionally in ISO-2022-JP
-# requires Encode 1.83 or better to work
-# -- dankogai
-
-BEGIN {
-    chdir 't' if -d 't';
-    require './test.pl';
-    skip_all_without_dynamic_extension('Encode');
-    skip_all("no encoding pragma in EBCDIC") if $::IS_EBCDIC;
-    skip_all_without_perlio();
-}
-
-use strict;
-plan(tests => 6);
-no warnings 'deprecated';
-use encoding 'iso-2022-jp';
-
-my @hiragana =  map {chr} ord("\e$B$!\e(B")..ord("\e$B$s\e(B");
-my @katakana =  map {chr} ord("\e$B%!\e(B")..ord("\e$B%s\e(B");
-my $hiragana = join('' => @hiragana);
-my $katakana = join('' => @katakana);
-my %h2k; @h2k{@hiragana} = @katakana;
-my %k2h; @k2h{@katakana} = @hiragana;
-
-# print @hiragana, "\n";
-
-my $str;
-
-$str = $hiragana; $str =~ tr/\e$B$!\e(B-\e$B$s\e(B/\e$B%!\e(B-\e$B%s\e(B/;
-is($str, $katakana, "tr// # hiragana -> katakana");
-$str = $katakana; $str =~ tr/\e$B%!\e(B-\e$B%s\e(B/\e$B$!\e(B-\e$B$s\e(B/;
-is($str, $hiragana, "tr// # hiragana -> katakana");
-
-$str = $hiragana; eval qq(\$str =~ tr/\e$B$!\e(B-\e$B$s\e(B/\e$B%!\e(B-\e$B%s\e(B/);
-is($str, $katakana, "eval qq(tr//) # hiragana -> katakana");
-$str = $katakana; eval qq(\$str =~ tr/\e$B%!\e(B-\e$B%s\e(B/\e$B$!\e(B-\e$B$s\e(B/);
-is($str, $hiragana, "eval qq(tr//) # hiragana -> katakana");
-
-$str = $hiragana; $str =~ s/([\e$B$!\e(B-\e$B$s\e(B])/$h2k{$1}/go;
-is($str, $katakana, "s/// # hiragana -> katakana");
-$str = $katakana; $str =~ s/([\e$B%!\e(B-\e$B%s\e(B])/$k2h{$1}/go;
-is($str, $hiragana, "s/// # hiragana -> katakana");
-__END__
diff --git a/t/uni/tr_eucjp.t b/t/uni/tr_eucjp.t
deleted file mode 100644 (file)
index c5cccfa..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#! perl -w
-#
-# This script is written intentionally in EUC-JP
-# -- dankogai
-
-BEGIN {
-    chdir 't' if -d 't';
-    require './test.pl';
-    skip_all_without_dynamic_extension('Encode');
-    skip_all("no encoding pragma in EBCDIC") if $::IS_EBCDIC;
-    skip_all_without_perlio();
-}
-
-use strict;
-plan(tests => 6);
-no warnings 'deprecated';
-use encoding 'euc-jp';
-
-my @hiragana =  map {chr} ord("¤¡")..ord("¤ó");
-my @katakana =  map {chr} ord("¥¡")..ord("¥ó");
-my $hiragana = join('' => @hiragana);
-my $katakana = join('' => @katakana);
-my %h2k; @h2k{@hiragana} = @katakana;
-my %k2h; @k2h{@katakana} = @hiragana;
-
-# print @hiragana, "\n";
-
-my $str;
-
-$str = $hiragana; $str =~ tr/¤¡-¤ó/¥¡-¥ó/;
-is($str, $katakana, "tr// # hiragana -> katakana");
-$str = $katakana; $str =~ tr/¥¡-¥ó/¤¡-¤ó/;
-is($str, $hiragana, "tr// # hiragana -> katakana");
-
-$str = $hiragana; eval qq(\$str =~ tr/¤¡-¤ó/¥¡-¥ó/);
-is($str, $katakana, "eval qq(tr//) # hiragana -> katakana");
-$str = $katakana; eval qq(\$str =~ tr/¥¡-¥ó/¤¡-¤ó/);
-is($str, $hiragana, "eval qq(tr//) # hiragana -> katakana");
-
-$str = $hiragana; $str =~ s/([¤¡-¤ó])/$h2k{$1}/go;
-is($str, $katakana, "s/// # hiragana -> katakana");
-$str = $katakana; $str =~ s/([¥¡-¥ó])/$k2h{$1}/go;
-is($str, $hiragana, "s/// # hiragana -> katakana");
-__END__
diff --git a/t/uni/tr_sjis.t b/t/uni/tr_sjis.t
deleted file mode 100644 (file)
index fec525d..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#!perl -w
-#
-# This script is written intentionally in Shift JIS
-# -- dankogai
-
-BEGIN {
-    chdir 't' if -d 't';
-    require './test.pl';
-    skip_all_without_dynamic_extension('Encode');
-    skip_all("no encoding pragma in EBCDIC") if $::IS_EBCDIC;
-    skip_all_without_perlio();
-}
-
-use strict;
-plan(tests => 6);
-no warnings 'deprecated';
-use encoding 'shiftjis';
-
-my @hiragana =  map {chr} ord("\82\9f")..ord("\82ñ");
-my @katakana =  map {chr} ord("\83@")..ord("\83\93");
-my $hiragana = join('' => @hiragana);
-my $katakana = join('' => @katakana);
-my %h2k; @h2k{@hiragana} = @katakana;
-my %k2h; @k2h{@katakana} = @hiragana;
-
-# print @hiragana, "\n";
-
-my $str;
-
-$str = $hiragana; $str =~ tr/\82\9f-\82ñ/\83@-\83\93/;
-is($str, $katakana, "tr// # hiragana -> katakana");
-$str = $katakana; $str =~ tr/\83@-\83\93/\82\9f-\82ñ/;
-is($str, $hiragana, "tr// # hiragana -> katakana");
-
-$str = $hiragana; eval qq(\$str =~ tr/\82\9f-\82ñ/\83@-\83\93/);
-is($str, $katakana, "eval qq(tr//) # hiragana -> katakana");
-$str = $katakana; eval qq(\$str =~ tr/\83@-\83\93/\82\9f-\82ñ/);
-is($str, $hiragana, "eval qq(tr//) # hiragana -> katakana");
-
-$str = $hiragana; $str =~ s/([\82\9f-\82ñ])/$h2k{$1}/go;
-is($str, $katakana, "s/// # hiragana -> katakana");
-$str = $katakana; $str =~ s/([\83@-\83\93])/$k2h{$1}/go;
-is($str, $hiragana, "s/// # hiragana -> katakana");
-__END__
index 59782f1..7d16969 100644 (file)
@@ -1,21 +1,17 @@
 #!perl -w
 #
 # This script is written intentionally in UTF-8
-# Requires Encode 1.83 or better
 # -- dankogai
 
 BEGIN {
     chdir 't' if -d 't';
     require './test.pl';
-    skip_all_without_dynamic_extension('Encode');
-    skip_all("no encoding pragma in EBCDIC") if $::IS_EBCDIC;
     skip_all_without_perlio();
 }
 
 use strict;
 plan(tests => 8);
-no warnings 'deprecated';
-use encoding 'utf8';
+use utf8;
 
 my @hiragana =  map {chr} ord("ぁ")..ord("ん");
 my @katakana =  map {chr} ord("ァ")..ord("ン");
index 6f60bce..78efc73 100644 (file)
--- a/time64.h
+++ b/time64.h
@@ -32,7 +32,8 @@ struct TM64 {
  * Otherwise, if we are on android, use const but
  * not with g++.
  */
-#  if defined(__GLIBC__) || (defined(__ANDROID__) && !defined(__cplusplus)) || defined(__QNX__)
+#  if defined(__GLIBC__) || (defined(__ANDROID__) && !defined(__cplusplus)) \
+    || defined(__QNX__) || defined(__CYGWIN__)
         const
 #  endif
         char    *tm_zone;
diff --git a/toke.c b/toke.c
index 327d984..abf0377 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -211,7 +211,7 @@ static const char* const lex_state_names[] = {
 #define PREREF(retval) return (PL_expect = XREF,PL_bufptr = s, REPORT(retval))
 #define TERM(retval) return (CLINE, PL_expect = XOPERATOR, PL_bufptr = s, REPORT(retval))
 #define POSTDEREF(f) return (PL_bufptr = s, S_postderef(aTHX_ REPORT(f),s[1]))
-#define LOOPX(f) return (PL_bufptr = force_word(s,WORD,TRUE,FALSE), \
+#define LOOPX(f) return (PL_bufptr = force_word(s,BAREWORD,TRUE,FALSE), \
                         pl_yylval.ival=f, \
                         PL_expect = PL_nexttoke ? XOPERATOR : XTERM, \
                         REPORT((int)LOOPEX))
@@ -373,7 +373,7 @@ static struct debug_tokens {
     { USE,             TOKENTYPE_IVAL,         "USE" },
     { WHEN,            TOKENTYPE_IVAL,         "WHEN" },
     { WHILE,           TOKENTYPE_IVAL,         "WHILE" },
-    { WORD,            TOKENTYPE_OPVAL,        "WORD" },
+    { BAREWORD,                TOKENTYPE_OPVAL,        "BAREWORD" },
     { YADAYADA,                TOKENTYPE_IVAL,         "YADAYADA" },
     { 0,               TOKENTYPE_NONE,         NULL }
 };
@@ -723,7 +723,8 @@ Perl_lex_start(pTHX_ SV *line, PerlIO *rsfp, U32 flags)
        parser->linestr = flags & LEX_START_COPIED
                            ? SvREFCNT_inc_simple_NN(line)
                            : newSVpvn_flags(s, len, SvUTF8(line));
-       sv_catpvn(parser->linestr, "\n;", rsfp ? 1 : 2);
+       if (!rsfp)
+           sv_catpvs(parser->linestr, "\n;");
     } else {
        parser->linestr = newSVpvn("\n;", rsfp ? 1 : 2);
     }
@@ -1994,7 +1995,8 @@ S_newSV_maybe_utf8(pTHX_ const char *const start, STRLEN len)
  *
  * Arguments:
  *   char *start : buffer position (must be within PL_linestr)
- *   int token   : PL_next* will be this type of bare word (e.g., METHOD,WORD)
+ *   int token   : PL_next* will be this type of bare word
+ *                 (e.g., METHOD,BAREWORD)
  *   int check_keyword : if true, Perl checks to make sure the word isn't
  *       a keyword (do this if the word is a label, e.g. goto FOO)
  *   int allow_pack : if true, : characters will also be allowed (require,
@@ -2045,7 +2047,7 @@ S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack)
  * Called when the lexer wants $foo *foo &foo etc, but the program
  * text only contains the "foo" portion.  The first argument is a pointer
  * to the "foo", and the second argument is the type symbol to prefix.
- * Forces the next token to be a "WORD".
+ * Forces the next token to be a "BAREWORD".
  * Creates the symbol if it didn't already exist (via gv_fetchpv()).
  */
 
@@ -2059,7 +2061,7 @@ S_force_ident(pTHX_ const char *s, int kind)
        OP* const o = (OP*)newSVOP(OP_CONST, 0, newSVpvn_flags(s, len,
                                                                 UTF ? SVf_UTF8 : 0));
        NEXTVAL_NEXTTOKE.opval = o;
-       force_next(WORD);
+       force_next(BAREWORD);
        if (kind) {
            o->op_private = OPpCONST_ENTERED;
            /* XXX see note in pp_entereval() for why we forgo typo
@@ -2154,7 +2156,7 @@ S_force_version(pTHX_ char *s, int guessing)
 
     /* NOTE: The parser sees the package name and the VERSION swapped */
     NEXTVAL_NEXTTOKE.opval = version;
-    force_next(WORD);
+    force_next(BAREWORD);
 
     return s;
 }
@@ -2191,7 +2193,7 @@ S_force_strict_version(pTHX_ char *s)
 
     /* NOTE: The parser sees the package name and the VERSION swapped */
     NEXTVAL_NEXTTOKE.opval = version;
-    force_next(WORD);
+    force_next(BAREWORD);
 
     return s;
 }
@@ -3797,11 +3799,6 @@ S_scan_const(pTHX_ char *start)
                   " >= %"UVuf, (UV)SvCUR(sv), (UV)SvLEN(sv));
 
     SvPOK_on(sv);
-    if (IN_ENCODING && !has_utf8) {
-       sv_recode_to_utf8(sv, _get_encoding());
-       if (SvUTF8(sv))
-           has_utf8 = TRUE;
-    }
     if (has_utf8) {
        SvUTF8_on(sv);
        if (PL_lex_inwhat == OP_TRANS && PL_sublex_info.sub_op) {
@@ -4100,7 +4097,7 @@ S_intuit_method(pTHX_ char *start, SV *ioname, CV *cv)
                                                  S_newSV_maybe_utf8(aTHX_ tmpbuf, len));
            NEXTVAL_NEXTTOKE.opval->op_private = OPpCONST_BARE;
            PL_expect = XTERM;
-           force_next(WORD);
+           force_next(BAREWORD);
            PL_bufptr = s;
            return *s == '(' ? FUNCMETH : METHOD;
        }
@@ -4376,15 +4373,15 @@ S_tokenize_use(pTHX_ int is_use, char *s) {
        if (*s == ';' || *s == '}'
                || (s = skipspace(s), (*s == ';' || *s == '}'))) {
            NEXTVAL_NEXTTOKE.opval = NULL;
-           force_next(WORD);
+           force_next(BAREWORD);
        }
        else if (*s == 'v') {
-           s = force_word(s,WORD,FALSE,TRUE);
+           s = force_word(s,BAREWORD,FALSE,TRUE);
            s = force_version(s, FALSE);
        }
     }
     else {
-       s = force_word(s,WORD,FALSE,TRUE);
+       s = force_word(s,BAREWORD,FALSE,TRUE);
        s = force_version(s, FALSE);
     }
     pl_yylval.ival = is_use;
@@ -5255,7 +5252,7 @@ Perl_yylex(pTHX)
                s++;
 
            if (strnEQ(s,"=>",2)) {
-               s = force_word(PL_bufptr,WORD,FALSE,FALSE);
+               s = force_word(PL_bufptr,BAREWORD,FALSE,FALSE);
                DEBUG_T( { printbuf("### Saw unary minus before =>, forcing word %s\n", s); } );
                OPERATOR('-');          /* unary minus */
            }
@@ -5738,7 +5735,7 @@ Perl_yylex(pTHX)
                    d++;
                if (*d == '}') {
                    const char minus = (PL_tokenbuf[0] == '-');
-                   s = force_word(s + minus, WORD, FALSE, TRUE);
+                   s = force_word(s + minus, BAREWORD, FALSE, TRUE);
                    if (minus)
                        force_next('-');
                }
@@ -6504,22 +6501,26 @@ Perl_yylex(pTHX)
        TERM(THING);
 
     case '\'':
+       if (   PL_expect == XOPERATOR
+           && (PL_lex_formbrack && PL_lex_brackets == PL_lex_formbrack))
+               return deprecate_commaless_var_list();
+
        s = scan_str(s,FALSE,FALSE,FALSE,NULL);
        if (!s)
            missingterm(NULL);
        COPLINE_SET_FROM_MULTI_END;
        DEBUG_T( { printbuf("### Saw string before %s\n", s); } );
        if (PL_expect == XOPERATOR) {
-           if (PL_lex_formbrack && PL_lex_brackets == PL_lex_formbrack) {
-               return deprecate_commaless_var_list();
-           }
-           else
-               no_op("String",s);
+            no_op("String",s);
        }
        pl_yylval.ival = OP_CONST;
        TERM(sublex_start());
 
     case '"':
+       if (   PL_expect == XOPERATOR
+           && (PL_lex_formbrack && PL_lex_brackets == PL_lex_formbrack))
+               return deprecate_commaless_var_list();
+
        s = scan_str(s,FALSE,FALSE,FALSE,NULL);
        DEBUG_T( {
            if (s)
@@ -6529,10 +6530,6 @@ Perl_yylex(pTHX)
                             "### Saw unterminated string\n");
        } );
        if (PL_expect == XOPERATOR) {
-           if (PL_lex_formbrack && PL_lex_brackets == PL_lex_formbrack) {
-               return deprecate_commaless_var_list();
-           }
-           else
                no_op("String",s);
        }
        if (!s)
@@ -6683,7 +6680,7 @@ Perl_yylex(pTHX)
                = (OP*)newSVOP(OP_CONST, 0,
                               S_newSV_maybe_utf8(aTHX_ PL_tokenbuf, len));
            pl_yylval.opval->op_private = OPpCONST_BARE;
-           TERM(WORD);
+           TERM(BAREWORD);
        }
 
        /* Check for plugged-in keyword */
@@ -7005,7 +7002,7 @@ Perl_yylex(pTHX)
                              SvUTF8_on(sv);
                        SvREADONLY_on(sv);
                    }
-                   TERM(WORD);
+                   TERM(BAREWORD);
                }
 
                /* If followed by a paren, it's certainly a subroutine. */
@@ -7024,7 +7021,7 @@ Perl_yylex(pTHX)
                        off ? rv2cv_op : pl_yylval.opval;
                    if (off)
                         op_free(pl_yylval.opval), force_next(PRIVATEREF);
-                   else op_free(rv2cv_op),        force_next(WORD);
+                   else op_free(rv2cv_op),        force_next(BAREWORD);
                    pl_yylval.ival = 0;
                    TOKEN('&');
                }
@@ -7086,7 +7083,7 @@ Perl_yylex(pTHX)
                            pl_yylval.opval->op_folded = 1;
                            pl_yylval.opval->op_flags |= OPf_SPECIAL;
                        }
-                       TOKEN(WORD);
+                       TOKEN(BAREWORD);
                    }
 
                    op_free(pl_yylval.opval);
@@ -7144,7 +7141,7 @@ Perl_yylex(pTHX)
                    }
                    NEXTVAL_NEXTTOKE.opval = pl_yylval.opval;
                    PL_expect = XTERM;
-                   force_next(off ? PRIVATEREF : WORD);
+                   force_next(off ? PRIVATEREF : BAREWORD);
                    if (!PL_lex_allbrackets
                         && PL_lex_fakeeof > LEX_FAKEEOF_LOWLOGIC)
                     {
@@ -7201,7 +7198,7 @@ Perl_yylex(pTHX)
                                     "Ambiguous use of %c resolved as operator %c",
                                     lastchar, lastchar);
                }
-               TOKEN(WORD);
+               TOKEN(BAREWORD);
            }
 
        case KEY___FILE__:
@@ -7277,24 +7274,6 @@ Perl_yylex(pTHX)
                if (!IN_BYTES) {
                    if (UTF)
                        PerlIO_apply_layers(aTHX_ PL_rsfp, NULL, ":utf8");
-                   else if (IN_ENCODING) {
-                       SV *name;
-                       dSP;
-                       ENTER;
-                       SAVETMPS;
-                       PUSHMARK(sp);
-                       XPUSHs(_get_encoding());
-                       PUTBACK;
-                       call_method("name", G_SCALAR);
-                       SPAGAIN;
-                       name = POPs;
-                       PUTBACK;
-                       PerlIO_apply_layers(aTHX_ PL_rsfp, NULL,
-                                           Perl_form(aTHX_ ":encoding(%"SVf")",
-                                                     SVfARG(name)));
-                       FREETMPS;
-                       LEAVE;
-                   }
                }
 #endif
                PL_rsfp = NULL;
@@ -7576,7 +7555,7 @@ Perl_yylex(pTHX)
                    p = scan_word(p, PL_tokenbuf, sizeof PL_tokenbuf, TRUE, &len);
                    p = skipspace(p);
                }
-               if (*p != '$')
+               if (*p != '$' && *p != '\\')
                    Perl_croak(aTHX_ "Missing $ on loop variable");
            }
            OPERATOR(FOR);
@@ -7829,6 +7808,14 @@ Perl_yylex(pTHX)
                    yyerror_pv(tmpbuf, UTF ? SVf_UTF8 : 0);
                }
            }
+           else if (*s == '\\') {
+               if (!FEATURE_MYREF_IS_ENABLED)
+                   Perl_croak(aTHX_ "The experimental declared_refs "
+                                    "feature is not enabled");
+               Perl_ck_warner_d(aTHX_
+                    packWARN(WARN_EXPERIMENTAL__DECLARED_REFS),
+                   "Declaring references is experimental");
+           }
            OPERATOR(MY);
 
        case KEY_next:
@@ -7915,7 +7902,7 @@ Perl_yylex(pTHX)
            LOP(OP_PACK,XTERM);
 
        case KEY_package:
-           s = force_word(s,WORD,FALSE,TRUE);
+           s = force_word(s,BAREWORD,FALSE,TRUE);
            s = skipspace(s);
            s = force_strict_version(s);
            PREBLOCK(PACKAGE);
@@ -8016,7 +8003,7 @@ Perl_yylex(pTHX)
                    || (s = force_version(s, TRUE), *s == 'v'))
            {
                *PL_tokenbuf = '\0';
-               s = force_word(s,WORD,TRUE,TRUE);
+               s = force_word(s,BAREWORD,TRUE,TRUE);
                if (isIDFIRST_lazy_if(PL_tokenbuf,UTF))
                    gv_stashpvn(PL_tokenbuf, strlen(PL_tokenbuf),
                                 GV_ADD | (UTF ? SVf_UTF8 : 0));
@@ -8180,7 +8167,7 @@ Perl_yylex(pTHX)
            checkcomma(s,PL_tokenbuf,"subroutine name");
            s = skipspace(s);
            PL_expect = XTERM;
-           s = force_word(s,WORD,TRUE,TRUE);
+           s = force_word(s,BAREWORD,TRUE,TRUE);
            LOP(OP_SORT,XREF);
 
        case KEY_split:
@@ -8268,7 +8255,7 @@ Perl_yylex(pTHX)
                         NEXTVAL_NEXTTOKE.opval
                             = (OP*)newSVOP(OP_CONST,0, format_name);
                         NEXTVAL_NEXTTOKE.opval->op_private |= OPpCONST_BARE;
-                        force_next(WORD);
+                        force_next(BAREWORD);
                     }
                    PREBLOCK(FORMAT);
                }
@@ -8477,7 +8464,7 @@ Perl_yylex(pTHX)
 
   Returns:
     PRIVATEREF if this is a lexical name.
-    WORD       if this belongs to a package.
+    BAREWORD   if this belongs to a package.
 
   Structure:
       if we're in a my declaration
@@ -8561,7 +8548,7 @@ S_pending_ident(pTHX)
                     ((PL_tokenbuf[0] == '$') ? SVt_PV
                      : (PL_tokenbuf[0] == '@') ? SVt_PVAV
                      : SVt_PVHV));
-                return WORD;
+                return BAREWORD;
             }
 
             pl_yylval.opval = newOP(OP_PADANY, 0);
@@ -8609,7 +8596,7 @@ S_pending_ident(pTHX)
                     ((PL_tokenbuf[0] == '$') ? SVt_PV
                      : (PL_tokenbuf[0] == '@') ? SVt_PVAV
                      : SVt_PVHV));
-    return WORD;
+    return BAREWORD;
 }
 
 STATIC void
@@ -8819,7 +8806,8 @@ S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, STRLEN keylen,
 }
 
 PERL_STATIC_INLINE void
-S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package, bool is_utf8) {
+S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package,
+                    bool is_utf8, bool check_dollar) {
     PERL_ARGS_ASSERT_PARSE_IDENT;
 
     for (;;) {
@@ -8855,7 +8843,7 @@ S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package, bool
             * the code path that triggers the "Bad name after" warning
             * when looking for barewords.
             */
-           && (*s)[2] != '$') {
+           && !(check_dollar && (*s)[2] == '$')) {
             *(*d)++ = *(*s)++;
             *(*d)++ = *(*s)++;
         }
@@ -8877,7 +8865,7 @@ S_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN
 
     PERL_ARGS_ASSERT_SCAN_WORD;
 
-    parse_ident(&s, &d, e, allow_package, is_utf8);
+    parse_ident(&s, &d, e, allow_package, is_utf8, TRUE);
     *d = '\0';
     *slp = d - dest;
     return s;
@@ -8925,7 +8913,7 @@ S_scan_ident(pTHX_ char *s, char *dest, STRLEN destlen, I32 ck_uni)
        }
     }
     else {  /* See if it is a "normal" identifier */
-        parse_ident(&s, &d, e, 1, is_utf8);
+        parse_ident(&s, &d, e, 1, is_utf8, FALSE);
     }
     *d = '\0';
     d = dest;
@@ -8994,7 +8982,7 @@ S_scan_ident(pTHX_ char *s, char *dest, STRLEN destlen, I32 ck_uni)
                (the later check for } being at the expected point will trap
                cases where this doesn't pan out.)  */
             d += is_utf8 ? UTF8SKIP(d) : 1;
-            parse_ident(&s, &d, e, 1, is_utf8);
+            parse_ident(&s, &d, e, 1, is_utf8, TRUE);
            *d = '\0';
             tmp_copline = CopLINE(PL_curcop);
             if (s < PL_bufend && isSPACE(*s)) {
@@ -9696,8 +9684,6 @@ S_scan_heredoc(pTHX_ char *s)
     if (!IN_BYTES) {
        if (UTF && is_utf8_string((U8*)SvPVX_const(tmpstr), SvCUR(tmpstr)))
            SvUTF8_on(tmpstr);
-       else if (IN_ENCODING)
-           sv_recode_to_utf8(tmpstr, _get_encoding());
     }
     PL_lex_stuff = tmpstr;
     pl_yylval.ival = op_type;
@@ -9934,7 +9920,6 @@ S_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int re
     I32 termcode;              /* terminating char. code */
     U8 termstr[UTF8_MAXBYTES]; /* terminating string */
     STRLEN termlen;            /* length of terminating string */
-    int last_off = 0;          /* last position for nesting bracket */
     line_t herelines;
 
     PERL_ARGS_ASSERT_SCAN_STR;
@@ -9987,116 +9972,6 @@ S_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int re
        sv_catpvn(sv, s, termlen);
     s += termlen;
     for (;;) {
-       if (IN_ENCODING && !UTF && !re_reparse) {
-           bool cont = TRUE;
-
-           while (cont) {
-               int offset = s - SvPVX_const(PL_linestr);
-               const bool found = sv_cat_decode(sv, _get_encoding(), PL_linestr,
-                                          &offset, (char*)termstr, termlen);
-               const char *ns;
-               char *svlast;
-
-               if (SvIsCOW(PL_linestr)) {
-                   STRLEN bufend_pos, bufptr_pos, oldbufptr_pos;
-                   STRLEN oldoldbufptr_pos, linestart_pos, last_uni_pos;
-                   STRLEN last_lop_pos, re_eval_start_pos, s_pos;
-                   char *buf = SvPVX(PL_linestr);
-                   bufend_pos = PL_parser->bufend - buf;
-                   bufptr_pos = PL_parser->bufptr - buf;
-                   oldbufptr_pos = PL_parser->oldbufptr - buf;
-                   oldoldbufptr_pos = PL_parser->oldoldbufptr - buf;
-                   linestart_pos = PL_parser->linestart - buf;
-                   last_uni_pos = PL_parser->last_uni
-                       ? PL_parser->last_uni - buf
-                       : 0;
-                   last_lop_pos = PL_parser->last_lop
-                       ? PL_parser->last_lop - buf
-                       : 0;
-                   re_eval_start_pos =
-                       PL_parser->lex_shared->re_eval_start ?
-                            PL_parser->lex_shared->re_eval_start - buf : 0;
-                   s_pos = s - buf;
-
-                   sv_force_normal(PL_linestr);
-
-                   buf = SvPVX(PL_linestr);
-                   PL_parser->bufend = buf + bufend_pos;
-                   PL_parser->bufptr = buf + bufptr_pos;
-                   PL_parser->oldbufptr = buf + oldbufptr_pos;
-                   PL_parser->oldoldbufptr = buf + oldoldbufptr_pos;
-                   PL_parser->linestart = buf + linestart_pos;
-                   if (PL_parser->last_uni)
-                       PL_parser->last_uni = buf + last_uni_pos;
-                   if (PL_parser->last_lop)
-                       PL_parser->last_lop = buf + last_lop_pos;
-                   if (PL_parser->lex_shared->re_eval_start)
-                       PL_parser->lex_shared->re_eval_start  =
-                           buf + re_eval_start_pos;
-                   s = buf + s_pos;
-               }
-               ns = SvPVX_const(PL_linestr) + offset;
-               svlast = SvEND(sv) - 1;
-
-               for (; s < ns; s++) {
-                   if (*s == '\n' && !PL_rsfp && !PL_parser->filtered)
-                       COPLINE_INC_WITH_HERELINES;
-               }
-               if (!found)
-                   goto read_more_line;
-               else {
-                   /* handle quoted delimiters */
-                   if (SvCUR(sv) > 1 && *(svlast-1) == '\\') {
-                       const char *t;
-                       for (t = svlast-2; t >= SvPVX_const(sv) && *t == '\\';)
-                           t--;
-                       if ((svlast-1 - t) % 2) {
-                           if (!keep_bracketed_quoted) {
-                               *(svlast-1) = term;
-                               *svlast = '\0';
-                               SvCUR_set(sv, SvCUR(sv) - 1);
-                           }
-                           continue;
-                       }
-                   }
-                   if (PL_multi_open == PL_multi_close) {
-                       cont = FALSE;
-                   }
-                   else {
-                       const char *t;
-                       char *w;
-                       for (t = w = SvPVX(sv)+last_off; t < svlast; w++, t++) {
-                           /* At here, all closes are "was quoted" one,
-                              so we don't check PL_multi_close. */
-                           if (*t == '\\') {
-                               if (!keep_bracketed_quoted && *(t+1) == PL_multi_open)
-                                   t++;
-                               else
-                                   *w++ = *t++;
-                           }
-                           else if (*t == PL_multi_open)
-                               brackets++;
-
-                           *w = *t;
-                       }
-                       if (w < t) {
-                           *w++ = term;
-                           *w = '\0';
-                           SvCUR_set(sv, w - SvPVX_const(sv));
-                       }
-                       last_off = w - SvPVX(sv);
-                       if (--brackets <= 0)
-                           cont = FALSE;
-                   }
-               }
-           }
-           if (!keep_delims) {
-               SvCUR_set(sv, SvCUR(sv) - 1);
-               *SvEND(sv) = '\0';
-           }
-           break;
-       }
-
        /* extend sv if need be */
        SvGROW(sv, SvCUR(sv) + (PL_bufend - s) + 1);
        /* set 'to' to the next character in the sv's string */
@@ -10189,7 +10064,6 @@ S_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int re
            to[-1] = '\n';
 #endif
        
-     read_more_line:
        /* if we're out of file, or a read fails, bail and reset the current
           line marker so we can report where the unterminated string began
        */
@@ -10205,13 +10079,11 @@ S_scan_str(pTHX_ char *start, int keep_bracketed_quoted, int keep_delims, int re
 
     /* at this point, we have successfully read the delimited string */
 
-    if (!IN_ENCODING || UTF || re_reparse) {
-
-       if (keep_delims)
+    if (keep_delims)
            sv_catpvn(sv, s, termlen);
-       s += termlen;
-    }
-    if (has_utf8 || (IN_ENCODING && !re_reparse))
+    s += termlen;
+
+    if (has_utf8)
        SvUTF8_on(sv);
 
     PL_multi_end = CopLINE(PL_curcop);
@@ -10948,8 +10820,6 @@ S_scan_formline(pTHX_ char *s)
        if (!IN_BYTES) {
            if (UTF && is_utf8_string((U8*)SvPVX_const(stuff), SvCUR(stuff)))
                SvUTF8_on(stuff);
-           else if (IN_ENCODING)
-               sv_recode_to_utf8(stuff, _get_encoding());
        }
        NEXTVAL_NEXTTOKE.opval = (OP*)newSVOP(OP_CONST, 0, stuff);
        force_next(THING);
@@ -11875,7 +11745,8 @@ S_parse_opt_lexvar(pTHX)
     s = PL_bufptr;
     d = PL_tokenbuf + 1;
     PL_tokenbuf[0] = (char)sigil;
-    parse_ident(&s, &d, PL_tokenbuf + sizeof(PL_tokenbuf) - 1, 0, cBOOL(UTF));
+    parse_ident(&s, &d, PL_tokenbuf + sizeof(PL_tokenbuf) - 1, 0,
+               cBOOL(UTF), FALSE);
     PL_bufptr = s;
     if (d == PL_tokenbuf+1)
        return NULL;
index 9c008fe..415ec7c 100644 (file)
--- a/uconfig.h
+++ b/uconfig.h
  *     DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
  *     DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE
  *     DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE
+ *     DOUBLE_IS_VAX_F_FLOAT
+ *     DOUBLE_IS_VAX_D_FLOAT
+ *     DOUBLE_IS_VAX_G_FLOAT
  *     DOUBLE_IS_UNKNOWN_FORMAT
  */
 #define DOUBLEKIND 3           /**/
 #define DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN  6
 #define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE   7
 #define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE   8
+#define DOUBLE_IS_VAX_F_FLOAT  9
+#define DOUBLE_IS_VAX_D_FLOAT  10
+#define DOUBLE_IS_VAX_G_FLOAT  11
 #define DOUBLE_IS_UNKNOWN_FORMAT               -1
 /*#define PERL_PRIfldbl        "llf"   / **/
 /*#define PERL_PRIgldbl        "llg"   / **/
 #endif
 
 /* Generated from:
- * c14530f7567d861ce42d42446fc2ee9cd3625763f65867d5f42849c337bbc361 config_h.SH
+ * 8559c6ec4e935f6478ac3149c106aed3eacfd60544281f97fd1383110d8a5cce config_h.SH
  * 3b14c76342a834042da506e8c3b4269f7d545453079733cb740970ab9cc4294e uconfig.sh
  * ex: set ro: */
index bffaffe..02d3811 100644 (file)
@@ -21,7 +21,7 @@
  *  "_TAIL"       if instead it represents all but the first byte.  This, and
  *                with no additional suffix are both string constants */
 
-#define UNICODE_MAJOR_VERSION   8
+#define UNICODE_MAJOR_VERSION   9
 #define UNICODE_DOT_VERSION     0
 #define UNICODE_DOT_DOT_VERSION 0
 
 #endif /* EBCDIC 037 */
 
 /* The number of code points not matching \pC */
-#define NON_OTHER_COUNT_FOR_USE_ONLY_BY_REGCOMP_DOT_C  120522
+#define NON_OTHER_COUNT_FOR_USE_ONLY_BY_REGCOMP_DOT_C  128021
 
 /* The highest code point that has any type of case change */
-#define HIGHEST_CASE_CHANGING_CP_FOR_USE_ONLY_BY_UTF8_DOT_C  0x118DF
+#define HIGHEST_CASE_CHANGING_CP_FOR_USE_ONLY_BY_UTF8_DOT_C  0x1E943
 
 #endif /* H_UNICODE_CONSTANTS */
 
index 31a53cc..0fcaea7 100644 (file)
@@ -766,6 +766,67 @@ XS(XS_PerlIO_get_layers)
     XSRETURN(0);
 }
 
+XS(XS_hash_util_bucket_ratio); /* prototype to pass -Wmissing-prototypes */
+XS(XS_hash_util_bucket_ratio)
+{
+    dXSARGS;
+    SV *rhv;
+    PERL_UNUSED_VAR(cv);
+
+    if (items != 1)
+        croak_xs_usage(cv, "hv");
+
+    rhv= ST(0);
+    if (SvROK(rhv)) {
+        rhv= SvRV(rhv);
+        if ( SvTYPE(rhv)==SVt_PVHV ) {
+            SV *ret= Perl_hv_bucket_ratio(aTHX_ (HV*)rhv);
+            ST(0)= ret;
+            XSRETURN(1);
+        }
+    }
+    XSRETURN_UNDEF;
+}
+
+XS(XS_hash_util_num_buckets); /* prototype to pass -Wmissing-prototypes */
+XS(XS_hash_util_num_buckets)
+{
+    dXSARGS;
+    SV *rhv;
+    PERL_UNUSED_VAR(cv);
+
+    if (items != 1)
+        croak_xs_usage(cv, "hv");
+
+    rhv= ST(0);
+    if (SvROK(rhv)) {
+        rhv= SvRV(rhv);
+        if ( SvTYPE(rhv)==SVt_PVHV ) {
+            XSRETURN_UV(HvMAX((HV*)rhv)+1);
+        }
+    }
+    XSRETURN_UNDEF;
+}
+
+XS(XS_hash_util_used_buckets); /* prototype to pass -Wmissing-prototypes */
+XS(XS_hash_util_used_buckets)
+{
+    dXSARGS;
+    SV *rhv;
+    PERL_UNUSED_VAR(cv);
+
+    if (items != 1)
+        croak_xs_usage(cv, "hv");
+
+    rhv= ST(0);
+    if (SvROK(rhv)) {
+        rhv= SvRV(rhv);
+        if ( SvTYPE(rhv)==SVt_PVHV ) {
+            XSRETURN_UV(HvFILL((HV*)rhv));
+        }
+    }
+    XSRETURN_UNDEF;
+}
 
 XS(XS_re_is_regexp); /* prototype to pass -Wmissing-prototypes */
 XS(XS_re_is_regexp)
@@ -1023,6 +1084,9 @@ static const struct xsub_details details[] = {
     {"Internals::SvREFCNT", XS_Internals_SvREFCNT, "\\[$%@];$"},
     {"Internals::hv_clear_placeholders", XS_Internals_hv_clear_placehold, "\\%"},
     {"PerlIO::get_layers", XS_PerlIO_get_layers, "*;@"},
+    {"Hash::Util::bucket_ratio", XS_hash_util_bucket_ratio, "\\%"},
+    {"Hash::Util::num_buckets", XS_hash_util_num_buckets, "\\%"},
+    {"Hash::Util::used_buckets", XS_hash_util_used_buckets, "\\%"},
     {"re::is_regexp", XS_re_is_regexp, "$"},
     {"re::regname", XS_re_regname, ";$$"},
     {"re::regnames", XS_re_regnames, ";$"},
diff --git a/util.c b/util.c
index 2f78825..7748c6c 100644 (file)
--- a/util.c
+++ b/util.c
@@ -5296,7 +5296,8 @@ Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap
     PERL_UNUSED_ARG(buffer);
     PERL_UNUSED_ARG(len);
     PERL_UNUSED_ARG(format);
-    PERL_UNUSED_ARG(ap);
+    /* the cast is to avoid gcc -Wsizeof-array-argument complaining */
+    PERL_UNUSED_ARG((void*)ap);
     Perl_croak_nocontext("panic: my_vsnprintf not available with quadmath");
     return 0;
 #else
index 6971e08..786cbcc 100644 (file)
@@ -307,7 +307,7 @@ utils : $(utils1) $(utils2) $(utils3) $(utils4) $(utils5)
 extra.pods : miniperl
        @ @extra_pods.com
 
-PERLDELTA_CURRENT = [.pod]perl5252delta.pod
+PERLDELTA_CURRENT = [.pod]perl5253delta.pod
 
 $(PERLDELTA_CURRENT) : [.pod]perldelta.pod
        Copy/NoConfirm/Log $(MMS$SOURCE) $(PERLDELTA_CURRENT)
index 337bef3..f018137 100644 (file)
 #define WARN_MISSING                    64
 #define WARN_REDUNDANT                  65
 
+/* Warnings Categories added in Perl 5.025 */
+
+#define WARN_EXPERIMENTAL__DECLARED_REFS 66
+
 #define WARNsize                        17
 #define WARN_ALLstring                  "\125\125\125\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\0\0\0"
 
-#define isLEXWARN_on   cBOOL(PL_curcop->cop_warnings != pWARN_STD)
-#define isLEXWARN_off  cBOOL(PL_curcop->cop_warnings == pWARN_STD)
+#define isLEXWARN_on \
+       cBOOL(PL_curcop && PL_curcop->cop_warnings != pWARN_STD)
+#define isLEXWARN_off \
+       cBOOL(!PL_curcop || PL_curcop->cop_warnings == pWARN_STD)
 #define isWARN_ONCE    (PL_dowarn & (G_WARN_ON|G_WARN_ONCE))
 #define isWARN_on(c,x) (IsSet((U8 *)(c + 1), 2*(x)))
 #define isWARNf_on(c,x)        (IsSet((U8 *)(c + 1), 2*(x)+1))
index 4e9e90f..112ea4c 100644 (file)
@@ -67,7 +67,7 @@ INST_TOP := $(INST_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a
 # path that includes an arbitrary version string.
 #
-#INST_VER      := \5.25.2
+#INST_VER      := \5.25.3
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -1544,7 +1544,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile
        copy ..\README.tw       ..\pod\perltw.pod
        copy ..\README.vos      ..\pod\perlvos.pod
        copy ..\README.win32    ..\pod\perlwin32.pod
-       copy ..\pod\perldelta.pod ..\pod\perl5252delta.pod
+       copy ..\pod\perldelta.pod ..\pod\perl5253delta.pod
        $(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
        $(MINIPERL) -I..\lib ..\autodoc.pl ..
        $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1641,7 +1641,7 @@ distclean: realclean
        -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
        -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
        -cd $(PODDIR) && del /f *.html *.bat roffitall \
-           perl5252delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+           perl5253delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
            perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
            perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
            perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
index bb923eb..0092dda 100644 (file)
@@ -38,7 +38,7 @@ INST_TOP      = $(INST_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a
 # path that includes an arbitrary version string.
 #
-#INST_VER      = \5.25.2
+#INST_VER      = \5.25.3
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -1215,7 +1215,7 @@ utils: $(PERLEXE) ..\utils\Makefile
        copy ..\README.tw       ..\pod\perltw.pod
        copy ..\README.vos      ..\pod\perlvos.pod
        copy ..\README.win32    ..\pod\perlwin32.pod
-       copy ..\pod\perldelta.pod ..\pod\perl5252delta.pod
+       copy ..\pod\perldelta.pod ..\pod\perl5253delta.pod
        cd ..\win32
        $(PERLEXE) $(PL2BAT) $(UTILS)
        $(MINIPERL) -I..\lib ..\autodoc.pl ..
@@ -1314,7 +1314,7 @@ distclean: realclean
        -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
        -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
        -cd $(PODDIR) && del /f *.html *.bat roffitall \
-           perl5252delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+           perl5253delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
            perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
            perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
            perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
index f580575..58abd45 100644 (file)
@@ -44,7 +44,7 @@ INST_TOP      *= $(INST_DRV)\perl
 # versioned installation can be obtained by setting INST_TOP above to a
 # path that includes an arbitrary version string.
 #
-#INST_VER      *= \5.25.2
+#INST_VER      *= \5.25.3
 
 #
 # Comment this out if you DON'T want your perl installation to have
@@ -1511,7 +1511,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile
        copy ..\README.tw       ..\pod\perltw.pod
        copy ..\README.vos      ..\pod\perlvos.pod
        copy ..\README.win32    ..\pod\perlwin32.pod
-       copy ..\pod\perldelta.pod ..\pod\perl5252delta.pod
+       copy ..\pod\perldelta.pod ..\pod\perl5253delta.pod
        $(MINIPERL) -I..\lib $(PL2BAT) $(UTILS)
        $(MINIPERL) -I..\lib ..\autodoc.pl ..
        $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q ..
@@ -1609,7 +1609,7 @@ distclean: realclean
        -if exist $(LIBDIR)\Win32API rmdir /s /q $(LIBDIR)\Win32API
        -if exist $(LIBDIR)\XS rmdir /s /q $(LIBDIR)\XS
        -cd $(PODDIR) && del /f *.html *.bat roffitall \
-           perl5252delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
+           perl5253delta.pod perlaix.pod perlamiga.pod perlandroid.pod \
            perlapi.pod perlbs2000.pod perlce.pod perlcn.pod perlcygwin.pod \
            perldos.pod perlfreebsd.pod perlhaiku.pod perlhpux.pod \
            perlhurd.pod perlintern.pod perlirix.pod perljp.pod perlko.pod \
index 569c88f..4eef053 100644 (file)
@@ -47,6 +47,7 @@ POD = perl.pod        \
        perl5250delta.pod       \
        perl5251delta.pod       \
        perl5252delta.pod       \
+       perl5253delta.pod       \
        perl561delta.pod        \
        perl56delta.pod \
        perl581delta.pod        \
@@ -188,6 +189,7 @@ MAN = perl.man      \
        perl5250delta.man       \
        perl5251delta.man       \
        perl5252delta.man       \
+       perl5253delta.man       \
        perl561delta.man        \
        perl56delta.man \
        perl581delta.man        \
@@ -329,6 +331,7 @@ HTML = perl.html    \
        perl5250delta.html      \
        perl5251delta.html      \
        perl5252delta.html      \
+       perl5253delta.html      \
        perl561delta.html       \
        perl56delta.html        \
        perl581delta.html       \
@@ -470,6 +473,7 @@ TEX = perl.tex      \
        perl5250delta.tex       \
        perl5251delta.tex       \
        perl5252delta.tex       \
+       perl5253delta.tex       \
        perl561delta.tex        \
        perl56delta.tex \
        perl581delta.tex        \